Last active
October 25, 2017 20:33
-
-
Save simias/0247de995b1f35ac6ab5953f3083bf41 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| fn main() { | |
| let font = | |
| [ | |
| [ /* space */ | |
| 0b100, | |
| 0b001, | |
| 0b000, | |
| 0b000, | |
| 0b010, | |
| ], | |
| [ /* ! */ | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| 0b000, | |
| 0b010, | |
| ], | |
| [ /* " */ | |
| 0b101, | |
| 0b101, | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| ], | |
| [ /* # */ | |
| 0b101, | |
| 0b111, | |
| 0b101, | |
| 0b111, | |
| 0b101, | |
| ], | |
| [ /* $ */ | |
| 0b011, | |
| 0b110, | |
| 0b010, | |
| 0b011, | |
| 0b110, | |
| ], | |
| [ /* % */ | |
| 0b101, | |
| 0b001, | |
| 0b010, | |
| 0b100, | |
| 0b101, | |
| ], | |
| [ /* & */ | |
| 0b010, | |
| 0b101, | |
| 0b011, | |
| 0b110, | |
| 0b011, | |
| ], | |
| [ /* ' */ | |
| 0b010, | |
| 0b010, | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| ], | |
| [ /* ( */ | |
| 0b001, | |
| 0b010, | |
| 0b110, | |
| 0b010, | |
| 0b001, | |
| ], | |
| [ /* ) */ | |
| 0b100, | |
| 0b010, | |
| 0b011, | |
| 0b010, | |
| 0b100, | |
| ], | |
| [ /* * */ | |
| 0b000, | |
| 0b101, | |
| 0b010, | |
| 0b101, | |
| 0b000, | |
| ], | |
| [ /* + */ | |
| 0b000, | |
| 0b010, | |
| 0b111, | |
| 0b010, | |
| 0b000, | |
| ], | |
| [ /* , */ | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| 0b010, | |
| 0b100, | |
| ], | |
| [ /* - */ | |
| 0b000, | |
| 0b000, | |
| 0b111, | |
| 0b000, | |
| 0b000, | |
| ], | |
| [ /* . */ | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| 0b010, | |
| ], | |
| [ /* / */ | |
| 0b001, | |
| 0b001, | |
| 0b010, | |
| 0b100, | |
| 0b100, | |
| ], | |
| [ /* 0 */ | |
| 0b111, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| ], | |
| [ /* 1 */ | |
| 0b010, | |
| 0b110, | |
| 0b010, | |
| 0b010, | |
| 0b111, | |
| ], | |
| [ /* 2 */ | |
| 0b110, | |
| 0b001, | |
| 0b010, | |
| 0b100, | |
| 0b111, | |
| ], | |
| [ /* 3 */ | |
| 0b110, | |
| 0b001, | |
| 0b110, | |
| 0b001, | |
| 0b110, | |
| ], | |
| [ /* 4 */ | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| 0b001, | |
| 0b001, | |
| ], | |
| [ /* 5 */ | |
| 0b111, | |
| 0b100, | |
| 0b111, | |
| 0b001, | |
| 0b111, | |
| ], | |
| [ /* 6 */ | |
| 0b111, | |
| 0b100, | |
| 0b111, | |
| 0b101, | |
| 0b111, | |
| ], | |
| [ /* 7 */ | |
| 0b111, | |
| 0b001, | |
| 0b010, | |
| 0b100, | |
| 0b100, | |
| ], | |
| [ /* 8 */ | |
| 0b010, | |
| 0b101, | |
| 0b010, | |
| 0b101, | |
| 0b010, | |
| ], | |
| [ /* 9 */ | |
| 0b111, | |
| 0b101, | |
| 0b111, | |
| 0b001, | |
| 0b111, | |
| ], | |
| [ /* : */ | |
| 0b000, | |
| 0b010, | |
| 0b000, | |
| 0b010, | |
| 0b000, | |
| ], | |
| [ /* ; */ | |
| 0b000, | |
| 0b010, | |
| 0b000, | |
| 0b010, | |
| 0b100, | |
| ], | |
| [ /* < */ | |
| 0b000, | |
| 0b010, | |
| 0b100, | |
| 0b010, | |
| 0b000, | |
| ], | |
| [ /* = */ | |
| 0b000, | |
| 0b111, | |
| 0b000, | |
| 0b111, | |
| 0b000, | |
| ], | |
| [ /* > */ | |
| 0b000, | |
| 0b010, | |
| 0b001, | |
| 0b010, | |
| 0b000, | |
| ], | |
| [ /* ? */ | |
| 0b111, | |
| 0b001, | |
| 0b011, | |
| 0b000, | |
| 0b010, | |
| ], | |
| [ /* @ */ | |
| 0b111, | |
| 0b101, | |
| 0b001, | |
| 0b111, | |
| 0b111, | |
| ], | |
| [ /* A */ | |
| 0b010, | |
| 0b101, | |
| 0b111, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* B */ | |
| 0b110, | |
| 0b101, | |
| 0b110, | |
| 0b101, | |
| 0b11, | |
| ], | |
| [ /* C */ | |
| 0b011, | |
| 0b100, | |
| 0b100, | |
| 0b100, | |
| 0b011, | |
| ], | |
| [ /* D */ | |
| 0b11, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b110, | |
| ], | |
| [ /* E */ | |
| 0b111, | |
| 0b100, | |
| 0b110, | |
| 0b100, | |
| 0b111, | |
| ], | |
| [ /* F */ | |
| 0b111, | |
| 0b100, | |
| 0b110, | |
| 0b100, | |
| 0b100, | |
| ], | |
| [ /* G */ | |
| 0b011, | |
| 0b100, | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| ], | |
| [ /* H */ | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* I */ | |
| 0b111, | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| 0b111, | |
| ], | |
| [ /* J */ | |
| 0b001, | |
| 0b001, | |
| 0b001, | |
| 0b101, | |
| 0b111, | |
| ], | |
| [ /* K */ | |
| 0b101, | |
| 0b101, | |
| 0b110, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* L */ | |
| 0b100, | |
| 0b100, | |
| 0b100, | |
| 0b100, | |
| 0b111, | |
| ], | |
| [ /* M */ | |
| 0b101, | |
| 0b111, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* N */ | |
| 0b110, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* O */ | |
| 0b010, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| ], | |
| [ /* P */ | |
| 0b111, | |
| 0b101, | |
| 0b111, | |
| 0b100, | |
| 0b100, | |
| ], | |
| [ /* Q */ | |
| 0b111, | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| 0b001, | |
| ], | |
| [ /* R */ | |
| 0b111, | |
| 0b101, | |
| 0b111, | |
| 0b110, | |
| 0b101, | |
| ], | |
| [ /* S */ | |
| 0b111, | |
| 0b100, | |
| 0b111, | |
| 0b001, | |
| 0b111, | |
| ], | |
| [ /* T */ | |
| 0b111, | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| ], | |
| [ /* U */ | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| ], | |
| [ /* V */ | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| ], | |
| [ /* W */ | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| 0b101, | |
| ], | |
| [ /* X */ | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* Y */ | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| ], | |
| [ /* Z */ | |
| 0b111, | |
| 0b001, | |
| 0b010, | |
| 0b100, | |
| 0b111, | |
| ], | |
| [ /* [ */ | |
| 0b110, | |
| 0b100, | |
| 0b100, | |
| 0b100, | |
| 0b110, | |
| ], | |
| [ /* \ */ | |
| 0b100, | |
| 0b100, | |
| 0b010, | |
| 0b001, | |
| 0b001, | |
| ], | |
| [ /* ] */ | |
| 0b011, | |
| 0b001, | |
| 0b001, | |
| 0b001, | |
| 0b011, | |
| ], | |
| [ /* ^ */ | |
| 0b010, | |
| 0b101, | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| ], | |
| [ /* _ */ | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| 0b111, | |
| ], | |
| [ /* ` */ | |
| 0b100, | |
| 0b010, | |
| 0b000, | |
| 0b000, | |
| 0b000, | |
| ], | |
| [ /* a */ | |
| 0b000, | |
| 0b010, | |
| 0b101, | |
| 0b101, | |
| 0b011, | |
| ], | |
| [ /* b */ | |
| 0b100, | |
| 0b100, | |
| 0b110, | |
| 0b101, | |
| 0b110, | |
| ], | |
| [ /* c */ | |
| 0b000, | |
| 0b011, | |
| 0b100, | |
| 0b100, | |
| 0b011, | |
| ], | |
| [ /* */ | |
| 0b001, | |
| 0b001, | |
| 0b011, | |
| 0b101, | |
| 0b011, | |
| ], | |
| [ /* */ | |
| 0b000, | |
| 0b010, | |
| 0b101, | |
| 0b110, | |
| 0b011, | |
| ], | |
| [ /* f */ | |
| 0b011, | |
| 0b010, | |
| 0b111, | |
| 0b010, | |
| 0b010, | |
| ], | |
| [ /* g */ | |
| 0b000, | |
| 0b010, | |
| 0b101, | |
| 0b011, | |
| 0b100, | |
| ], | |
| [ /* h */ | |
| 0b100, | |
| 0b100, | |
| 0b110, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* i */ | |
| 0b000, | |
| 0b010, | |
| 0b000, | |
| 0b010, | |
| 0b010, | |
| ], | |
| [ /* j */ | |
| 0b001, | |
| 0b000, | |
| 0b001, | |
| 0b001, | |
| 0b010, | |
| ], | |
| [ /* k */ | |
| 0b100, | |
| 0b100, | |
| 0b101, | |
| 0b110, | |
| 0b101, | |
| ], | |
| [ /* l */ | |
| 0b000, | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| 0b011, | |
| ], | |
| [ /* m */ | |
| 0b000, | |
| 0b111, | |
| 0b111, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* n */ | |
| 0b000, | |
| 0b110, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| ], | |
| [ /* o */ | |
| 0b000, | |
| 0b010, | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| ], | |
| [ /* p */ | |
| 0b000, | |
| 0b110, | |
| 0b101, | |
| 0b110, | |
| 0b100, | |
| ], | |
| [ /* q */ | |
| 0b000, | |
| 0b011, | |
| 0b101, | |
| 0b011, | |
| 0b001, | |
| ], | |
| [ /* r */ | |
| 0b000, | |
| 0b100, | |
| 0b110, | |
| 0b100, | |
| 0b100, | |
| ], | |
| [ /* s */ | |
| 0b000, | |
| 0b010, | |
| 0b100, | |
| 0b010, | |
| 0b100, | |
| ], | |
| [ /* t */ | |
| 0b000, | |
| 0b010, | |
| 0b111, | |
| 0b010, | |
| 0b011, | |
| ], | |
| [ /* u */ | |
| 0b000, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| ], | |
| [ /* v */ | |
| 0b000, | |
| 0b101, | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| ], | |
| [ /* w */ | |
| 0b000, | |
| 0b101, | |
| 0b101, | |
| 0b111, | |
| 0b111, | |
| ], | |
| [ /* x */ | |
| 0b000, | |
| 0b101, | |
| 0b010, | |
| 0b010, | |
| 0b101, | |
| ], | |
| [ /* y */ | |
| 0b000, | |
| 0b101, | |
| 0b101, | |
| 0b010, | |
| 0b110, | |
| ], | |
| [ /* z */ | |
| 0b000, | |
| 0b111, | |
| 0b011, | |
| 0b110, | |
| 0b111, | |
| ], | |
| [ /* { */ | |
| 0b011, | |
| 0b010, | |
| 0b110, | |
| 0b010, | |
| 0b011, | |
| ], | |
| [ /* | */ | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| 0b010, | |
| ], | |
| [ /* } */ | |
| 0b110, | |
| 0b010, | |
| 0b011, | |
| 0b010, | |
| 0b110, | |
| ], | |
| [ /* ~ */ | |
| 0b000, | |
| 0b001, | |
| 0b111, | |
| 0b100, | |
| 0b000, | |
| ], | |
| ]; | |
| /* Generate a 4bpp texture, 64 char per line */ | |
| /* one char */ | |
| let buf_bits = 3 * 5 * 4; | |
| /* two lines of 64 chars */ | |
| let buf_bits = buf_bits * 64 * 2; | |
| /* convert into bytes */ | |
| let buf_bytes = buf_bits / 8; | |
| let mut buf = vec![0u8; buf_bytes]; | |
| for (i, c) in font.iter().enumerate() { | |
| for (y, line) in c.iter().enumerate() { | |
| for x in 0..3 { | |
| let col = | |
| if line & (0b100 >> x) != 0 { | |
| 1 | |
| } else { | |
| 0 | |
| }; | |
| let y = y + (i / 64) * 5; | |
| let x = x + (i % 64) * 3; | |
| let byte_x = x / 2; | |
| let low_nibble = (x & 1) != 0; | |
| buf[y * (3 * 64 / 2) + byte_x] |= | |
| if low_nibble { | |
| col << 4 | |
| } else { | |
| col | |
| }; | |
| } | |
| } | |
| } | |
| for y in 0..10 { | |
| for x in 0..((64 * 3) / 4) { | |
| let b0 = buf[y * (64 * 3) / 2 + x * 2]; | |
| let b1 = buf[y * (64 * 3) / 2 + x * 2 + 1]; | |
| print!("0x{:02x}{:02x}, ", b1, b0); | |
| if x % 8 == 7 { | |
| println!(""); | |
| } | |
| } | |
| } | |
| println!(""); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment