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>
165 lines
4.3 KiB
C++
165 lines
4.3 KiB
C++
// Pixel art for the Steins;Gate pages, generated by tools/steins_sprites.py;
|
|
// edit the art there. Original 1-bit fan art, '#' = lit pixel.
|
|
#pragma once
|
|
|
|
#include "el512_pages.h" // Sprite
|
|
|
|
namespace esphome::el512::steins {
|
|
|
|
static const char *const OKABE_A_ROWS[] = {
|
|
"......#######.........",
|
|
"....##########.#......",
|
|
"...############.......",
|
|
"..#############.#.....",
|
|
"..##.#.#.##.####......",
|
|
"..#.........###.......",
|
|
"..#..##..##..#........",
|
|
"..#...........#.......",
|
|
"..#.....#.....#.......",
|
|
"...#..#####..#........",
|
|
"....#.......#.........",
|
|
".....#######..........",
|
|
"...###.....###........",
|
|
"..##..#...#..##.......",
|
|
".##....#.#....##......",
|
|
".#.#....#....#.#......",
|
|
".#.#....#....#.#......",
|
|
".#..#...#...#..#......",
|
|
"#...#...#...#...#.....",
|
|
"#...#...#...#...#.....",
|
|
"#..#....#....#..#.....",
|
|
"#..#....#....#..#.....",
|
|
"##.#....#....#.##.....",
|
|
"##.#....#....#.##.....",
|
|
"...#....#....#........",
|
|
"...#...###...#........",
|
|
"...#...#.#...#........",
|
|
"..#....#.#....#.......",
|
|
"..#....#.#....#.......",
|
|
".#.....#.#.....#......",
|
|
".#.....#.#.....#......",
|
|
"#......#.#......#.....",
|
|
"########.########.....",
|
|
".......#.#............",
|
|
".......#.#............",
|
|
"......##.##...........",
|
|
};
|
|
static constexpr Sprite OKABE_A{22, 36, OKABE_A_ROWS};
|
|
|
|
static const char *const OKABE_B_ROWS[] = {
|
|
"......#######.........",
|
|
"....##########.#......",
|
|
"...############.......",
|
|
"..#############.#.....",
|
|
"..##.#.#.##.####......",
|
|
"..#.........###.......",
|
|
"..#..##..##..#........",
|
|
"..#...........#.......",
|
|
"..#.....#.....#.......",
|
|
"...#..#####..#........",
|
|
"....#.......#.........",
|
|
".....#######..........",
|
|
"...###.....###........",
|
|
"..##..#...#..##.......",
|
|
".##....#.#....##......",
|
|
".#.#....#....#.##.....",
|
|
".#.#....#....#.#.#....",
|
|
".#..#...#...#..#..#...",
|
|
"#...#...#...#...#..#..",
|
|
"#...#...#...#...#...#.",
|
|
"#..#....#....#..#....#",
|
|
"#..#....#....#..#....#",
|
|
"##.#....#....#.##....#",
|
|
"##.#....#....#......#.",
|
|
"...#....#....#......#.",
|
|
"...#...###...#.....#..",
|
|
"...#...#.#...#.....#..",
|
|
"..#....#.#....#...#...",
|
|
"..#....#.#....#...#...",
|
|
".#.....#.#.....#.#....",
|
|
".#.....#.#.....##.....",
|
|
"#......#.#......#.....",
|
|
"########.########.....",
|
|
".......#.#............",
|
|
".......#.#............",
|
|
"......##.##...........",
|
|
};
|
|
static constexpr Sprite OKABE_B{22, 36, OKABE_B_ROWS};
|
|
|
|
static const char *const KURISU_ROWS[] = {
|
|
".....######.......",
|
|
"...##########.....",
|
|
"..############....",
|
|
"..##.#.##.#.##....",
|
|
"..#..........#....",
|
|
"..#..##..##..#....",
|
|
"..#..........#....",
|
|
"..#....#.....#....",
|
|
"..##..###...##....",
|
|
"..###......###....",
|
|
"..#.##....##.#....",
|
|
"..#..######..#....",
|
|
"..#.#..#..#..#....",
|
|
"..##..###..#.#....",
|
|
"..#....#....##....",
|
|
".##...###...###...",
|
|
".#.#...#...#..#...",
|
|
".#.#.......#..#...",
|
|
".#..#.....#...#...",
|
|
".#..#######...#...",
|
|
"....#.....#.......",
|
|
"....#.....#.......",
|
|
"....##...##.......",
|
|
".....#...#........",
|
|
".....#...#........",
|
|
".....#...#........",
|
|
".....#...#........",
|
|
"....##...##.......",
|
|
};
|
|
static constexpr Sprite KURISU{18, 28, KURISU_ROWS};
|
|
|
|
static const char *const UPA_A_ROWS[] = {
|
|
"..#........#..",
|
|
"..##......##..",
|
|
"..#.######.#..",
|
|
".#..........#.",
|
|
"#...#....#...#",
|
|
"#............#",
|
|
"#.....##.....#",
|
|
".#..........#.",
|
|
"..##########..",
|
|
};
|
|
static constexpr Sprite UPA_A{14, 9, UPA_A_ROWS};
|
|
|
|
static const char *const UPA_B_ROWS[] = {
|
|
"..............",
|
|
"...#......#...",
|
|
"..##.####.##..",
|
|
".#..........#.",
|
|
"#...#....#...#",
|
|
"#.....##.....#",
|
|
"##..........##",
|
|
".############.",
|
|
"..............",
|
|
};
|
|
static constexpr Sprite UPA_B{14, 9, UPA_B_ROWS};
|
|
|
|
static const char *const CAN_ROWS[] = {
|
|
"..######..",
|
|
".#......#.",
|
|
"##########",
|
|
"#........#",
|
|
"#.######.#",
|
|
"#.#....#.#",
|
|
"#.#.##.#.#",
|
|
"#.#....#.#",
|
|
"#.######.#",
|
|
"#........#",
|
|
"#........#",
|
|
"##########",
|
|
".########.",
|
|
};
|
|
static constexpr Sprite CAN{10, 13, CAN_ROWS};
|
|
|
|
} // namespace esphome::el512::steins
|