Skip to content

Instantly share code, notes, and snippets.

@heuripedes
Created September 5, 2017 19:33
Show Gist options
  • Save heuripedes/e7d472cb1f706b5bdd65eaae39422d4b to your computer and use it in GitHub Desktop.
Save heuripedes/e7d472cb1f706b5bdd65eaae39422d4b to your computer and use it in GitHub Desktop.
GUIFontData = [ # TODO: GUIFontData1
# bitmap 5x5 font; char - offset for ASCII2Font
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00000000, # empty space 0x0
0b01110000, 0b10011000, 0b10101000, 0b11001000, 0b01110000, # 0 0x01
0b00100000, 0b01100000, 0b00100000, 0b00100000, 0b01110000, # 1 0x02
0b01110000, 0b10001000, 0b00110000, 0b01000000, 0b11111000, # 2 0x03
0b01110000, 0b10001000, 0b00110000, 0b10001000, 0b01110000, # 3 0x04
0b01010000, 0b10010000, 0b11111000, 0b00010000, 0b00010000, # 4 0x05
0b11111000, 0b10000000, 0b11110000, 0b00001000, 0b11110000, # 5 0x06
0b01110000, 0b10000000, 0b11110000, 0b10001000, 0b01110000, # 6 0x07
0b11111000, 0b00001000, 0b00010000, 0b00010000, 0b00010000, # 7 0x08
0b01110000, 0b10001000, 0b01110000, 0b10001000, 0b01110000, # 8 0x09
0b01110000, 0b10001000, 0b01111000, 0b00001000, 0b01110000, # 9 0x0A
0b01110000, 0b10001000, 0b11111000, 0b10001000, 0b10001000, # A 0x0B
0b11110000, 0b10001000, 0b11110000, 0b10001000, 0b11110000, # B 0x0C
0b01110000, 0b10001000, 0b10000000, 0b10001000, 0b01110000, # C 0x0D
0b11110000, 0b10001000, 0b10001000, 0b10001000, 0b11110000, # D 0x0E
0b11111000, 0b10000000, 0b11110000, 0b10000000, 0b11111000, # E 0x0F
0b11111000, 0b10000000, 0b11110000, 0b10000000, 0b10000000, # F 0x10
0b01111000, 0b10000000, 0b10011000, 0b10001000, 0b01110000, # G 0x11
0b10001000, 0b10001000, 0b11111000, 0b10001000, 0b10001000, # H 0x12
0b11111000, 0b00100000, 0b00100000, 0b00100000, 0b11111000, # I 0x13
0b01111000, 0b00010000, 0b00010000, 0b10010000, 0b01100000, # J 0x14
0b10010000, 0b10100000, 0b11100000, 0b10010000, 0b10001000, # K 0x15
0b10000000, 0b10000000, 0b10000000, 0b10000000, 0b11111000, # L 0x16
0b11011000, 0b10101000, 0b10101000, 0b10101000, 0b10001000, # M 0x17
0b11001000, 0b10101000, 0b10101000, 0b10101000, 0b10011000, # N 0x18
0b01110000, 0b10001000, 0b10001000, 0b10001000, 0b01110000, # O 0x19
0b11110000, 0b10001000, 0b11110000, 0b10000000, 0b10000000, # P 0x1A
0b01110000, 0b10001000, 0b10101000, 0b10010000, 0b01101000, # Q 0x1B
0b11110000, 0b10001000, 0b11110000, 0b10010000, 0b10001000, # R 0x1C
0b01111000, 0b10000000, 0b01110000, 0b00001000, 0b11110000, # S 0x1D
0b11111000, 0b00100000, 0b00100000, 0b00100000, 0b00100000, # T 0x1E
0b10001000, 0b10001000, 0b10001000, 0b10001000, 0b01110000, # U 0x1F
0b10001000, 0b10001000, 0b01010000, 0b01010000, 0b00100000, # V 0x20
0b10001000, 0b10101000, 0b10101000, 0b10101000, 0b01010000, # W 0x21
0b10001000, 0b01010000, 0b00100000, 0b01010000, 0b10001000, # X 0x22
0b10001000, 0b01010000, 0b00100000, 0b00100000, 0b00100000, # Y 0x23
0b11111000, 0b00010000, 0b00100000, 0b01000000, 0b11111000, # Z 0x24
0b00000000, 0b00000000, 0b11111000, 0b00000000, 0b00000000, # - 0x25
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b11111000, # _ 0x26
0b01101000, 0b10010000, 0b00000000, 0b00000000, 0b00000000, # ~ 0x27
0b00000000, 0b00000000, 0b00000000, 0b00000000, 0b00100000, # . 0x28
0b00001000, 0b00010000, 0b00100000, 0b01000000, 0b10000000, # / 0x29
0b00010000, 0b00100000, 0b01000000, 0b00100000, 0b00010000, # < 0x2A
0b01000000, 0b00100000, 0b00010000, 0b00100000, 0b01000000, # > 0x2B
0b01110000, 0b01000000, 0b01000000, 0b01000000, 0b01110000, # [ 0x2C
0b01110000, 0b00010000, 0b00010000, 0b00010000, 0b01110000, # ] 0x2D
0b00000000, 0b00100000, 0b00000000, 0b00100000, 0b00000000, # : 0x2E
0b01100000, 0b10011000, 0b01110000, 0b10011000, 0b01101000, # & 0x2F
0b00100000, 0b00100000, 0b10101000, 0b01110000, 0b00100000, # arrow down 0x30
0b01010000, 0b11111000, 0b01010000, 0b11111000, 0b01010000, # # 0x31
0b00000000, 0b11111000, 0b00000000, 0b11111000, 0b00000000, # = 0x32
0b01001000, 0b10010000, 0b00000000, 0b00000000, 0b00000000, # " 0x33
0b10000000, 0b01000000, 0b00100000, 0b00010000, 0b00001000, # \ 0x34
0b10101000, 0b01110000, 0b11111000, 0b01110000, 0b10101000, # * 0x35
0b01110000, 0b10001000, 0b00110000, 0b00000000, 0b00100000, # ? 0x36
0b10001000, 0b00010000, 0b00100000, 0b01000000, 0b10001000, # % 0x37
0b00100000, 0b00100000, 0b11111000, 0b00100000, 0b00100000, # + 0x38
0b00000000, 0b00000000, 0b00000000, 0b00100000, 0b01000000, # , 0x39
0b00110000, 0b01000000, 0b01000000, 0b01000000, 0b00110000, # ( 0x3A
0b01100000, 0b00010000, 0b00010000, 0b00010000, 0b01100000, # ) 0x3B
0b01110000, 0b10011000, 0b10111000, 0b10000000, 0b01110000, # @ 0x3C
0b00100000, 0b01000000, 0b00000000, 0b00000000, 0b00000000, # ' 0x3D
0b00100000, 0b00100000, 0b00100000, 0b00000000, 0b00100000, # ! 0x3E
0b01111000, 0b10100000, 0b01110000, 0b00101000, 0b11110000, # $ 0x3F
0b00000000, 0b00100000, 0b00000000, 0b00100000, 0b01000000, # ; 0x40
0b01000000, 0b00100000, 0b00000000, 0b00000000, 0b00000000, # ` 0x41
0b00100000, 0b01010000, 0b00000000, 0b00000000, 0b00000000, # ^ 0x42
0b00110000, 0b01000000, 0b11000000, 0b01000000, 0b00110000, # { 0x43
0b01100000, 0b00010000, 0b00011000, 0b00010000, 0b01100000, # } 0x44
0b00100000, 0b00100000, 0b01110000, 0b01110000, 0b11111000, # up 0x45
0b11111000, 0b01110000, 0b01110000, 0b00100000, 0b00100000, # down 0x46
0b00001000, 0b00111000, 0b11111000, 0b00111000, 0b00001000, # left 0x47
0b10000000, 0b11100000, 0b11111000, 0b11100000, 0b10000000, # right 0x48
0b00100000, 0b01100000, 0b11111000, 0b01100000, 0b00100000, # arrow left 0x49
0b00111000, 0b00100000, 0b00110000, 0b00001000, 0b10110000, # .5 0x4A
0b11111100, 0b10000100, 0b11111100, 0b00000000, 0b00000000, # maximize (Win) 0x4B
0b00000000, 0b11111100, 0b00000000, 0b00000000, 0b00000000, # minimize (Win) 0x4C
0b11111000, 0b10001000, 0b10001000, 0b10001000, 0b11111000, # maximize (SDL) 0x4D
0b00000000, 0b00000000, 0b00100000, 0b01010000, 0b00100000, # shw fullstop 0x4E
0b01110000, 0b01000000, 0b01000000, 0b01000000, 0b00000000, # shw left bracket 0x4F
0b00000000, 0b00010000, 0b00010000, 0b00010000, 0b01110000, # shw right bracket 0x50
0b00000000, 0b00000000, 0b00000000, 0b01000000, 0b00100000, # shw comma 0x51
0b00000000, 0b00100000, 0b01110000, 0b00100000, 0b00000000, # shw mid-dot 0x52
0b11111000, 0b00001000, 0b11110000, 0b00100000, 0b11000000, # shw wo 0x53
0b00000000, 0b11111000, 0b01010000, 0b01100000, 0b01000000, # shw mini a 0x54
0b00000000, 0b00010000, 0b00100000, 0b11100000, 0b00100000, # shw mini i 0x55
0b00000000, 0b00100000, 0b11111000, 0b10001000, 0b00110000, # shw mini u 0x56
0b00000000, 0b00000000, 0b11111000, 0b00100000, 0b11111000, # shw mini e 0x57
0b00000000, 0b00010000, 0b11111000, 0b00110000, 0b11010000, # shw mini o 0x58
0b00000000, 0b01000000, 0b11111000, 0b01010000, 0b01000000, # shw mini ya 0x59
0b00000000, 0b00000000, 0b11110000, 0b00010000, 0b11111000, # shw mini yu 0x5A
0b00000000, 0b11111000, 0b00001000, 0b01111000, 0b11111000, # shw mini yo 0x5B
0b00000000, 0b10101000, 0b10101000, 0b00010000, 0b01100000, # shw mini tsu 0x5C
0b00000000, 0b10000000, 0b01111000, 0b00000000, 0b00000000, # shw prolong 0x5D
0b11111000, 0b00101000, 0b00110000, 0b00100000, 0b11000000, # shw a 0x5E
0b00001000, 0b00110000, 0b11100000, 0b00100000, 0b00100000, # shw i 0x5F
0b00100000, 0b11111000, 0b10001000, 0b00010000, 0b01100000, # shw u 0x60
0b11111000, 0b00100000, 0b00100000, 0b00100000, 0b11111000, # shw e 0x61
0b00010000, 0b11111000, 0b00110000, 0b01010000, 0b10010000, # shw o 0x62
0b01000000, 0b11111000, 0b01001000, 0b01001000, 0b10011000, # shw ka 0x63
0b00100000, 0b11111000, 0b00100000, 0b11111000, 0b00100000, # shw ki 0x64
0b01000000, 0b01111000, 0b10001000, 0b00010000, 0b01100000, # shw ku 0x65
0b01000000, 0b01111000, 0b10010000, 0b00010000, 0b01100000, # shw ke 0x66 ^^
0b11111000, 0b00001000, 0b00001000, 0b00001000, 0b11111000, # shw ko 0x67
0b01010000, 0b11111000, 0b01010000, 0b00010000, 0b01100000, # shw sa 0x68
0b01000000, 0b10101000, 0b01001000, 0b00010000, 0b11100000, # shw shi 0x69
0b11111000, 0b00001000, 0b00010000, 0b00110000, 0b11001000, # shw su 0x6A
0b01000000, 0b11111000, 0b01010000, 0b01000000, 0b00111000, # shw se 0x6B
0b10001000, 0b01001000, 0b00001000, 0b00010000, 0b01100000, # shw so 0x6C
0b01000000, 0b01111000, 0b11001000, 0b00110000, 0b01100000, # shw ta 0x6D
0b11111000, 0b00100000, 0b11111000, 0b00100000, 0b01000000, # shw chi 0x6E
0b10101000, 0b10101000, 0b00001000, 0b00010000, 0b01100000, # shw tsu 0x6F
0b11111000, 0b00000000, 0b11111000, 0b00100000, 0b11000000, # shw te 0x70
0b01000000, 0b01000000, 0b01100000, 0b01010000, 0b01000000, # shw to 0x71
0b00100000, 0b11111000, 0b00100000, 0b00100000, 0b01000000, # shw na 0x72
0b11110000, 0b00000000, 0b00000000, 0b00000000, 0b11111000, # shw ni 0x73
0b11111000, 0b00001000, 0b00101000, 0b00010000, 0b01101000, # shw nu 0x74
0b00100000, 0b11111000, 0b00001000, 0b01110000, 0b10101000, # shw ne 0x75
0b00001000, 0b00001000, 0b00001000, 0b00010000, 0b01100000, # shw no 0x76
0b01010000, 0b01010000, 0b01010000, 0b10001000, 0b10001000, # shw ha 0x77
0b10000000, 0b10011000, 0b11100000, 0b10000000, 0b01111000, # shw hi 0x78
0b11111000, 0b00001000, 0b00001000, 0b00010000, 0b01100000, # shw hu 0x79
0b01000000, 0b10100000, 0b10010000, 0b00001000, 0b00000000, # shw he 0x7A
0b00100000, 0b11111000, 0b01110000, 0b10101000, 0b00100000, # shw ho 0x7B
0b11111000, 0b00001000, 0b10010000, 0b01100000, 0b00100000, # shw ma 0x7C
0b11111000, 0b00000000, 0b11111000, 0b00000000, 0b11111000, # shw mi 0x7D
0b00100000, 0b01000000, 0b01000000, 0b10010000, 0b11111000, # shw mu 0x7E
0b00001000, 0b01001000, 0b00110000, 0b00110000, 0b11001000, # shw me 0x7F
0b11111000, 0b00100000, 0b11111000, 0b00100000, 0b00111000, # shw mo 0x80
0b01000000, 0b11111100, 0b01001000, 0b00100000, 0b00100000, # shw ya 0x81
0b11110000, 0b00010000, 0b00010000, 0b00010000, 0b11111000, # shw yu 0x82
0b11111000, 0b00001000, 0b11111000, 0b00001000, 0b11111000, # shw yo 0x83
0b11111000, 0b00000000, 0b11111000, 0b00010000, 0b01100000, # shw ra 0x84
0b10001000, 0b10001000, 0b10001000, 0b00010000, 0b01100000, # shw ri 0x85
0b01100000, 0b01100000, 0b01101000, 0b01101000, 0b10110000, # shw ru 0x86
0b10000000, 0b10000000, 0b10001000, 0b10001000, 0b11110000, # shw re 0x87
0b11111000, 0b10001000, 0b10001000, 0b10001000, 0b11111000, # shw ro 0x88
0b11111000, 0b10001000, 0b00001000, 0b00010000, 0b01100000, # shw wa 0x89
0b10000000, 0b01001000, 0b00001000, 0b00010000, 0b11100000, # shw n 0x8A
0b10100000, 0b10100000, 0b00000000, 0b00000000, 0b00000000, # shw voiced 0x8B
0b01000000, 0b10100000, 0b01000000, 0b00000000, 0b00000000, # shw halfvoiced 0x8C
]
ASCII2Font = [
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3E, 0x33, 0x31, 0x3F, 0x37, 0x2F, 0x3D, 0x3A, 0x3B, 0x35, 0x38, 0x39, 0x25, 0x28, 0x29,
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x2E, 0x40, 0x2A, 0x32, 0x2B, 0x36,
0x3C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x2C, 0x34, 0x2D, 0x42, 0x26,
0x41, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x43, 0x00, 0x44, 0x27, 0x00,
0x0D, 0x1F, 0x0F, 0x0B, 0x0B, 0x0B, 0x0B, 0x0D, 0x0F, 0x0F, 0x0F, 0x13, 0x13, 0x13, 0x0B, 0x0B,
0x0F, 0x0B, 0x0B, 0x19, 0x19, 0x19, 0x1F, 0x1F, 0x23, 0x19, 0x1F, 0x0D, 0x10, 0x23, 0x1A, 0x10,
0x0B, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C,
0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C,
0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C,
0x7D, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x4C, 0x4B, 0x4A, 0x45, 0x46, 0x47, 0x48, 0x49,
]
import sys
def outchar(c, colorid):
# print(c, ord(c), ord(c) * 5)
offset = ASCII2Font[ord(c) & 0xff] * 5 # each char is 5 byte wide
i = 0
for fy in range(0, 5):
byte = GUIFontData[offset + i]
for fx in range(0, 5): # use 6 here to add some spacing
if byte & 0x80:
# sys.stdout.write("\x1b[{}m ".format(colorid - fx - fy + 37))
sys.stdout.write("\x1b[38;5;{}m\u2588".format(colorid - fx - fy))
else:
sys.stdout.write('\x1b[0m ')
byte <<= 1
sys.stdout.write("\x1b[5D")
sys.stdout.write("\x1b[1B")
# sys.stdout.write("\n")
i += 1
text = "HELLO WORLD"
x = 0
y = 0
print("\x1b[2J")
import time
for i in range(100, 255):
sys.stdout.write("\x1b[1;1f")
for c in text:
# outchar(c, 255)
outchar(c, i)
x += 1
sys.stdout.write("\x1b[5A")
sys.stdout.write("\x1b[6C")
sys.stdout.flush()
time.sleep(0.16)
print('')
sys.stdout.write("\x1b[5B")
sys.stdout.write("\x1b[0m")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment