A bunch of stuff.
This commit is contained in:
parent
f87ddbfa9e
commit
5b6185209a
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,474 @@
|
|||
# This script generates the top part of the monogram.c file
|
||||
# (the rest of it was written after.)
|
||||
'''
|
||||
// Monogram 12x7 pixel font
|
||||
'''
|
||||
|
||||
CREDITS = '\n'.join(
|
||||
'// > ' + line
|
||||
for line in '''\
|
||||
# CREDITS
|
||||
|
||||
Monogram is a free and Creative Commons Zero pixel font,
|
||||
made by Vinícius Menézio (@vmenezio).
|
||||
|
||||
https://datagoblin.itch.io/monogram
|
||||
|
||||
|
||||
# SPECIAL THANKS
|
||||
|
||||
thanks to Ateş Göral (@atesgoral) for creating the bitmap font converter:
|
||||
https://codepen.io/atesgoral/details/RwGOvPZ
|
||||
|
||||
thanks to Éric Araujo (@merwok_) for the inital port of monogram to PICO-8:
|
||||
https://itch.io/post/2625522
|
||||
'''.splitlines()
|
||||
)
|
||||
|
||||
|
||||
print(__doc__)
|
||||
print(CREDITS)
|
||||
|
||||
|
||||
monogram = {
|
||||
"0": [0, 0, 0, 14, 17, 25, 21, 19, 17, 14, 0, 0],
|
||||
"1": [0, 0, 0, 4, 6, 4, 4, 4, 4, 31, 0, 0],
|
||||
"2": [0, 0, 0, 14, 17, 16, 8, 4, 2, 31, 0, 0],
|
||||
"3": [0, 0, 0, 14, 17, 16, 12, 16, 17, 14, 0, 0],
|
||||
"4": [0, 0, 0, 18, 18, 17, 31, 16, 16, 16, 0, 0],
|
||||
"5": [0, 0, 0, 31, 1, 15, 16, 16, 17, 14, 0, 0],
|
||||
"6": [0, 0, 0, 14, 1, 1, 15, 17, 17, 14, 0, 0],
|
||||
"7": [0, 0, 0, 31, 16, 16, 8, 4, 4, 4, 0, 0],
|
||||
"8": [0, 0, 0, 14, 17, 17, 14, 17, 17, 14, 0, 0],
|
||||
"9": [0, 0, 0, 14, 17, 17, 30, 16, 17, 14, 0, 0],
|
||||
"!": [0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 0],
|
||||
"\"": [0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 0, 0],
|
||||
"#": [0, 0, 0, 0, 10, 31, 10, 10, 31, 10, 0, 0],
|
||||
"$": [0, 0, 0, 4, 30, 5, 14, 20, 15, 4, 0, 0],
|
||||
"%": [0, 0, 0, 17, 17, 8, 4, 2, 17, 17, 0, 0],
|
||||
"&": [0, 0, 0, 6, 9, 9, 30, 9, 9, 22, 0, 0],
|
||||
"'": [0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0],
|
||||
"(": [0, 0, 0, 8, 4, 4, 4, 4, 4, 8, 0, 0],
|
||||
")": [0, 0, 0, 2, 4, 4, 4, 4, 4, 2, 0, 0],
|
||||
"*": [0, 0, 0, 0, 4, 21, 14, 21, 4, 0, 0, 0],
|
||||
"+": [0, 0, 0, 0, 4, 4, 31, 4, 4, 0, 0, 0],
|
||||
",": [0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 2, 0],
|
||||
"-": [0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0],
|
||||
".": [0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0],
|
||||
"/": [0, 0, 0, 16, 16, 8, 4, 2, 1, 1, 0, 0],
|
||||
":": [0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 0, 0],
|
||||
";": [0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 2, 0],
|
||||
"<": [0, 0, 0, 0, 24, 6, 1, 6, 24, 0, 0, 0],
|
||||
"=": [0, 0, 0, 0, 0, 31, 0, 31, 0, 0, 0, 0],
|
||||
">": [0, 0, 0, 0, 3, 12, 16, 12, 3, 0, 0, 0],
|
||||
"?": [0, 0, 0, 14, 17, 16, 8, 4, 0, 4, 0, 0],
|
||||
"@": [0, 0, 0, 14, 25, 21, 21, 25, 1, 14, 0, 0],
|
||||
"A": [0, 0, 0, 14, 17, 17, 17, 31, 17, 17, 0, 0],
|
||||
"B": [0, 0, 0, 15, 17, 17, 15, 17, 17, 15, 0, 0],
|
||||
"C": [0, 0, 0, 14, 17, 1, 1, 1, 17, 14, 0, 0],
|
||||
"D": [0, 0, 0, 15, 17, 17, 17, 17, 17, 15, 0, 0],
|
||||
"E": [0, 0, 0, 31, 1, 1, 15, 1, 1, 31, 0, 0],
|
||||
"F": [0, 0, 0, 31, 1, 1, 15, 1, 1, 1, 0, 0],
|
||||
"G": [0, 0, 0, 14, 17, 1, 29, 17, 17, 14, 0, 0],
|
||||
"H": [0, 0, 0, 17, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"I": [0, 0, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"J": [0, 0, 0, 16, 16, 16, 16, 17, 17, 14, 0, 0],
|
||||
"K": [0, 0, 0, 17, 9, 5, 3, 5, 9, 17, 0, 0],
|
||||
"L": [0, 0, 0, 1, 1, 1, 1, 1, 1, 31, 0, 0],
|
||||
"M": [0, 0, 0, 17, 27, 21, 17, 17, 17, 17, 0, 0],
|
||||
"N": [0, 0, 0, 17, 17, 19, 21, 25, 17, 17, 0, 0],
|
||||
"O": [0, 0, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"P": [0, 0, 0, 15, 17, 17, 15, 1, 1, 1, 0, 0],
|
||||
"Q": [0, 0, 0, 14, 17, 17, 17, 17, 17, 14, 24, 0],
|
||||
"R": [0, 0, 0, 15, 17, 17, 15, 17, 17, 17, 0, 0],
|
||||
"S": [0, 0, 0, 14, 17, 1, 14, 16, 17, 14, 0, 0],
|
||||
"T": [0, 0, 0, 31, 4, 4, 4, 4, 4, 4, 0, 0],
|
||||
"U": [0, 0, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"V": [0, 0, 0, 17, 17, 17, 17, 10, 10, 4, 0, 0],
|
||||
"W": [0, 0, 0, 17, 17, 17, 17, 21, 27, 17, 0, 0],
|
||||
"X": [0, 0, 0, 17, 17, 10, 4, 10, 17, 17, 0, 0],
|
||||
"Y": [0, 0, 0, 17, 17, 10, 4, 4, 4, 4, 0, 0],
|
||||
"Z": [0, 0, 0, 31, 16, 8, 4, 2, 1, 31, 0, 0],
|
||||
"[": [0, 0, 0, 12, 4, 4, 4, 4, 4, 12, 0, 0],
|
||||
"\\": [0, 0, 0, 1, 1, 2, 4, 8, 16, 16, 0, 0],
|
||||
"]": [0, 0, 0, 6, 4, 4, 4, 4, 4, 6, 0, 0],
|
||||
"^": [0, 0, 0, 4, 10, 17, 0, 0, 0, 0, 0, 0],
|
||||
"_": [0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0],
|
||||
"`": [0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0],
|
||||
"a": [0, 0, 0, 0, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"b": [0, 0, 0, 1, 1, 15, 17, 17, 17, 15, 0, 0],
|
||||
"c": [0, 0, 0, 0, 0, 14, 17, 1, 17, 14, 0, 0],
|
||||
"d": [0, 0, 0, 16, 16, 30, 17, 17, 17, 30, 0, 0],
|
||||
"e": [0, 0, 0, 0, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"f": [0, 0, 0, 12, 18, 2, 15, 2, 2, 2, 0, 0],
|
||||
"g": [0, 0, 0, 0, 0, 30, 17, 17, 17, 30, 16, 14],
|
||||
"h": [0, 0, 0, 1, 1, 15, 17, 17, 17, 17, 0, 0],
|
||||
"i": [0, 0, 0, 4, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"j": [0, 0, 0, 16, 0, 24, 16, 16, 16, 16, 17, 14],
|
||||
"k": [0, 0, 0, 1, 1, 17, 9, 7, 9, 17, 0, 0],
|
||||
"l": [0, 0, 0, 3, 2, 2, 2, 2, 2, 28, 0, 0],
|
||||
"m": [0, 0, 0, 0, 0, 15, 21, 21, 21, 21, 0, 0],
|
||||
"n": [0, 0, 0, 0, 0, 15, 17, 17, 17, 17, 0, 0],
|
||||
"o": [0, 0, 0, 0, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"p": [0, 0, 0, 0, 0, 15, 17, 17, 17, 15, 1, 1],
|
||||
"q": [0, 0, 0, 0, 0, 30, 17, 17, 17, 30, 16, 16],
|
||||
"r": [0, 0, 0, 0, 0, 13, 19, 1, 1, 1, 0, 0],
|
||||
"s": [0, 0, 0, 0, 0, 30, 1, 14, 16, 15, 0, 0],
|
||||
"t": [0, 0, 0, 2, 2, 15, 2, 2, 2, 28, 0, 0],
|
||||
"u": [0, 0, 0, 0, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"v": [0, 0, 0, 0, 0, 17, 17, 17, 10, 4, 0, 0],
|
||||
"w": [0, 0, 0, 0, 0, 17, 17, 21, 21, 10, 0, 0],
|
||||
"x": [0, 0, 0, 0, 0, 17, 10, 4, 10, 17, 0, 0],
|
||||
"y": [0, 0, 0, 0, 0, 17, 17, 17, 17, 30, 16, 14],
|
||||
"z": [0, 0, 0, 0, 0, 31, 8, 4, 2, 31, 0, 0],
|
||||
"{": [0, 0, 0, 8, 4, 4, 2, 4, 4, 8, 0, 0],
|
||||
"|": [0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0],
|
||||
"}": [0, 0, 0, 2, 4, 4, 8, 4, 4, 2, 0, 0],
|
||||
"~": [0, 0, 0, 0, 0, 18, 13, 0, 0, 0, 0, 0],
|
||||
"¡": [0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 0, 0],
|
||||
"¢": [0, 0, 0, 4, 14, 21, 5, 21, 14, 4, 0, 0],
|
||||
"£": [0, 0, 0, 12, 18, 2, 15, 2, 2, 31, 0, 0],
|
||||
"¤": [0, 0, 0, 0, 17, 14, 10, 14, 17, 0, 0, 0],
|
||||
"¥": [0, 0, 0, 17, 10, 4, 31, 4, 31, 4, 0, 0],
|
||||
"¦": [0, 0, 0, 4, 4, 4, 0, 4, 4, 4, 0, 0],
|
||||
"§": [0, 0, 0, 30, 1, 14, 17, 14, 16, 15, 0, 0],
|
||||
"¨": [0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"©": [0, 0, 0, 14, 27, 21, 29, 21, 27, 14, 0, 0],
|
||||
"ª": [0, 0, 0, 14, 9, 9, 9, 14, 0, 0, 0, 0],
|
||||
"«": [0, 0, 0, 0, 0, 18, 9, 18, 0, 0, 0, 0],
|
||||
"¬": [0, 0, 0, 0, 0, 0, 31, 16, 0, 0, 0, 0],
|
||||
"®": [0, 0, 0, 14, 25, 21, 21, 25, 21, 14, 0, 0],
|
||||
"¯": [0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0],
|
||||
"°": [0, 0, 0, 6, 9, 9, 6, 0, 0, 0, 0, 0],
|
||||
"±": [0, 0, 0, 4, 4, 31, 4, 4, 0, 31, 0, 0],
|
||||
"²": [0, 0, 0, 3, 4, 2, 1, 7, 0, 0, 0, 0],
|
||||
"³": [0, 0, 0, 3, 4, 2, 4, 3, 0, 0, 0, 0],
|
||||
"´": [0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"µ": [0, 0, 0, 0, 0, 17, 17, 17, 17, 15, 1, 1],
|
||||
"¶": [0, 0, 0, 30, 23, 23, 23, 22, 20, 20, 0, 0],
|
||||
"·": [0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
"¸": [0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 6],
|
||||
"¹": [0, 0, 0, 2, 3, 2, 2, 7, 0, 0, 0, 0],
|
||||
"º": [0, 0, 0, 6, 9, 9, 9, 6, 0, 0, 0, 0],
|
||||
"»": [0, 0, 0, 0, 0, 9, 18, 9, 0, 0, 0, 0],
|
||||
"¼": [0, 0, 0, 1, 9, 5, 2, 21, 28, 16, 0, 0],
|
||||
"½": [0, 0, 0, 1, 9, 5, 14, 17, 8, 28, 0, 0],
|
||||
"¾": [0, 0, 0, 7, 22, 15, 4, 22, 29, 16, 0, 0],
|
||||
"¿": [0, 0, 0, 4, 0, 4, 2, 1, 17, 14, 0, 0],
|
||||
"À": [2, 4, 0, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"Á": [8, 4, 0, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"Â": [4, 10, 0, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"Ã": [22, 9, 0, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"Ä": [0, 10, 0, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"Å": [4, 10, 4, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"Æ": [0, 0, 0, 30, 5, 5, 31, 5, 5, 29, 0, 0],
|
||||
"Ç": [0, 0, 0, 14, 17, 1, 1, 1, 17, 14, 8, 6],
|
||||
"È": [2, 4, 0, 31, 1, 1, 15, 1, 1, 31, 0, 0],
|
||||
"É": [8, 4, 0, 31, 1, 1, 15, 1, 1, 31, 0, 0],
|
||||
"Ê": [4, 10, 0, 31, 1, 1, 15, 1, 1, 31, 0, 0],
|
||||
"Ë": [0, 10, 0, 31, 1, 1, 15, 1, 1, 31, 0, 0],
|
||||
"Ì": [2, 4, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"Í": [8, 4, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"Î": [4, 10, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"Ï": [0, 10, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"Ð": [0, 0, 0, 15, 17, 17, 19, 17, 17, 15, 0, 0],
|
||||
"Ñ": [22, 9, 0, 17, 17, 19, 21, 25, 17, 17, 0, 0],
|
||||
"Ò": [2, 4, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Ó": [8, 4, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Ô": [4, 10, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Õ": [22, 9, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Ö": [0, 10, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"×": [0, 0, 0, 0, 0, 0, 10, 4, 10, 0, 0, 0],
|
||||
"Ø": [0, 0, 0, 22, 9, 25, 21, 19, 18, 13, 0, 0],
|
||||
"Ù": [2, 4, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Ú": [8, 4, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Û": [4, 10, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Ü": [0, 10, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"Ý": [8, 4, 0, 17, 17, 10, 4, 4, 4, 4, 0, 0],
|
||||
"Þ": [0, 0, 0, 1, 15, 17, 17, 17, 15, 1, 0, 0],
|
||||
"ß": [0, 0, 0, 6, 9, 9, 13, 17, 17, 13, 0, 0],
|
||||
"à": [0, 0, 2, 4, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"á": [0, 0, 8, 4, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"â": [0, 0, 4, 10, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"ã": [0, 0, 22, 9, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"ä": [0, 0, 0, 10, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"å": [0, 4, 10, 4, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"æ": [0, 0, 0, 0, 0, 14, 21, 29, 5, 30, 0, 0],
|
||||
"ç": [0, 0, 0, 0, 0, 14, 17, 1, 17, 14, 8, 6],
|
||||
"è": [0, 0, 2, 4, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"é": [0, 0, 8, 4, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"ê": [0, 0, 4, 10, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"ë": [0, 0, 0, 10, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"ì": [0, 0, 2, 4, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"í": [0, 0, 8, 4, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"î": [0, 0, 4, 10, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"ï": [0, 0, 0, 10, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"ð": [0, 0, 14, 48, 24, 30, 17, 17, 17, 14, 0, 0],
|
||||
"ñ": [0, 0, 22, 9, 0, 15, 17, 17, 17, 17, 0, 0],
|
||||
"ò": [0, 0, 2, 4, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"ó": [0, 0, 8, 4, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"ô": [0, 0, 4, 10, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"õ": [0, 0, 22, 9, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"ö": [0, 0, 0, 10, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"÷": [0, 0, 0, 0, 0, 4, 0, 31, 0, 4, 0, 0],
|
||||
"ø": [0, 0, 0, 0, 0, 22, 9, 21, 18, 13, 0, 0],
|
||||
"ù": [0, 0, 2, 4, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"ú": [0, 0, 8, 4, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"û": [0, 0, 4, 10, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"ü": [0, 0, 0, 10, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"ý": [0, 0, 8, 4, 0, 17, 17, 17, 17, 30, 16, 14],
|
||||
"þ": [0, 0, 0, 1, 1, 15, 17, 17, 17, 15, 1, 1],
|
||||
"ÿ": [0, 0, 0, 10, 0, 17, 17, 17, 17, 30, 16, 14],
|
||||
"Ā": [0, 14, 0, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"ā": [0, 0, 0, 14, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"Ă": [10, 4, 0, 14, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"ă": [0, 0, 10, 4, 0, 30, 17, 17, 17, 30, 0, 0],
|
||||
"Ą": [0, 0, 0, 14, 17, 17, 31, 17, 17, 17, 8, 16],
|
||||
"ą": [0, 0, 0, 0, 0, 30, 17, 17, 17, 30, 4, 24],
|
||||
"Ć": [8, 4, 0, 14, 17, 1, 1, 1, 17, 14, 0, 0],
|
||||
"ć": [0, 0, 8, 4, 0, 14, 17, 1, 17, 14, 0, 0],
|
||||
"Ĉ": [4, 10, 0, 14, 17, 1, 1, 1, 17, 14, 0, 0],
|
||||
"ĉ": [0, 0, 4, 10, 0, 14, 17, 1, 17, 14, 0, 0],
|
||||
"Ċ": [0, 4, 0, 14, 17, 1, 1, 1, 17, 14, 0, 0],
|
||||
"ċ": [0, 0, 0, 4, 0, 14, 17, 1, 17, 14, 0, 0],
|
||||
"Č": [10, 4, 0, 14, 17, 1, 1, 1, 17, 14, 0, 0],
|
||||
"č": [0, 0, 10, 4, 0, 14, 17, 1, 17, 14, 0, 0],
|
||||
"Ď": [10, 4, 0, 15, 17, 17, 17, 17, 17, 15, 0, 0],
|
||||
"ď": [0, 0, 80, 80, 16, 30, 17, 17, 17, 30, 0, 0],
|
||||
"Đ": [0, 0, 0, 15, 17, 17, 19, 17, 17, 15, 0, 0],
|
||||
"đ": [0, 0, 16, 60, 16, 30, 17, 17, 17, 30, 0, 0],
|
||||
"Ē": [0, 14, 0, 31, 1, 1, 7, 1, 1, 31, 0, 0],
|
||||
"ē": [0, 0, 0, 14, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"Ĕ": [10, 4, 0, 31, 1, 1, 7, 1, 1, 31, 0, 0],
|
||||
"ĕ": [0, 0, 10, 4, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"Ė": [0, 4, 0, 31, 1, 1, 7, 1, 1, 31, 0, 0],
|
||||
"ė": [0, 0, 0, 4, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"Ę": [0, 0, 0, 31, 1, 1, 7, 1, 1, 31, 4, 24],
|
||||
"ę": [0, 0, 0, 0, 0, 14, 17, 31, 1, 30, 4, 24],
|
||||
"Ě": [0, 14, 0, 31, 1, 1, 7, 1, 1, 31, 0, 0],
|
||||
"ě": [0, 0, 0, 10, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"Ĝ": [4, 10, 0, 14, 17, 1, 29, 17, 17, 14, 0, 0],
|
||||
"ĝ": [0, 0, 4, 10, 0, 30, 17, 17, 17, 30, 16, 14],
|
||||
"Ğ": [10, 4, 0, 14, 17, 1, 29, 17, 17, 14, 0, 0],
|
||||
"ğ": [0, 0, 10, 4, 0, 30, 17, 17, 17, 30, 16, 14],
|
||||
"Ġ": [0, 4, 0, 14, 17, 1, 29, 17, 17, 14, 0, 0],
|
||||
"ġ": [0, 0, 0, 4, 0, 30, 17, 17, 17, 30, 16, 14],
|
||||
"Ģ": [0, 0, 0, 14, 17, 1, 29, 17, 17, 14, 8, 6],
|
||||
"ģ": [0, 0, 8, 4, 0, 30, 17, 17, 17, 30, 16, 14],
|
||||
"Ĥ": [4, 10, 0, 17, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"ĥ": [0, 0, 8, 21, 1, 15, 17, 17, 17, 17, 0, 0],
|
||||
"Ħ": [0, 0, 0, 17, 63, 17, 31, 17, 17, 17, 0, 0],
|
||||
"ħ": [0, 0, 0, 1, 3, 1, 15, 17, 17, 17, 0, 0],
|
||||
"Ĩ": [22, 9, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"ĩ": [0, 0, 22, 9, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"Ī": [0, 14, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"ī": [0, 0, 0, 14, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"Ĭ": [10, 4, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"ĭ": [0, 0, 10, 4, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"Į": [0, 0, 0, 31, 4, 4, 4, 4, 4, 31, 4, 24],
|
||||
"į": [0, 0, 0, 4, 0, 6, 4, 4, 4, 31, 4, 24],
|
||||
"İ": [22, 9, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"ı": [0, 0, 0, 0, 0, 6, 4, 4, 4, 31, 0, 0],
|
||||
"IJ": [0, 0, 0, 23, 18, 18, 18, 18, 18, 15, 0, 0],
|
||||
"ij": [0, 0, 0, 18, 0, 27, 18, 18, 18, 31, 16, 14],
|
||||
"Ĵ": [4, 10, 0, 16, 16, 16, 16, 17, 17, 14, 0, 0],
|
||||
"ĵ": [0, 0, 16, 40, 0, 24, 16, 16, 16, 16, 17, 14],
|
||||
"Ķ": [0, 0, 0, 17, 9, 5, 3, 5, 9, 17, 4, 4],
|
||||
"ķ": [0, 0, 0, 1, 1, 17, 9, 7, 9, 17, 4, 4],
|
||||
"ĸ": [0, 0, 0, 0, 0, 17, 9, 7, 9, 17, 0, 0],
|
||||
"Ĺ": [8, 4, 0, 1, 1, 1, 1, 1, 1, 31, 0, 0],
|
||||
"ĺ": [8, 4, 0, 31, 4, 4, 4, 4, 4, 31, 0, 0],
|
||||
"Ļ": [0, 0, 0, 1, 1, 1, 1, 1, 1, 31, 8, 6],
|
||||
"ļ": [0, 0, 0, 31, 4, 4, 4, 4, 4, 31, 8, 6],
|
||||
"Ľ": [0, 0, 0, 17, 17, 9, 1, 1, 1, 31, 0, 0],
|
||||
"ľ": [0, 0, 0, 19, 18, 10, 2, 2, 2, 28, 0, 0],
|
||||
"Ŀ": [0, 0, 0, 1, 1, 1, 9, 1, 1, 31, 0, 0],
|
||||
"ŀ": [0, 0, 0, 3, 2, 2, 10, 2, 2, 28, 0, 0],
|
||||
"Ł": [0, 0, 0, 1, 1, 1, 3, 1, 1, 31, 0, 0],
|
||||
"ł": [0, 0, 0, 3, 2, 2, 6, 3, 2, 28, 0, 0],
|
||||
"Ń": [8, 4, 0, 17, 17, 19, 21, 25, 17, 17, 0, 0],
|
||||
"ń": [0, 0, 8, 4, 0, 15, 17, 17, 17, 17, 0, 0],
|
||||
"Ņ": [0, 0, 0, 17, 17, 19, 21, 25, 17, 17, 4, 3],
|
||||
"ņ": [0, 0, 0, 0, 0, 15, 17, 17, 17, 17, 4, 3],
|
||||
"Ň": [10, 4, 0, 17, 17, 19, 21, 25, 17, 17, 0, 0],
|
||||
"ň": [0, 0, 10, 4, 0, 15, 17, 17, 17, 17, 0, 0],
|
||||
"ʼn": [0, 0, 0, 0, 0, 15, 17, 17, 17, 17, 0, 0],
|
||||
"Ŋ": [0, 0, 0, 17, 17, 19, 21, 25, 17, 17, 16, 12],
|
||||
"ŋ": [0, 0, 0, 0, 0, 15, 17, 17, 17, 17, 16, 12],
|
||||
"Ō": [0, 14, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ō": [0, 0, 0, 14, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"Ŏ": [10, 4, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ŏ": [0, 0, 10, 4, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"Ő": [20, 10, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ő": [0, 0, 20, 10, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"Œ": [0, 0, 0, 30, 5, 5, 29, 5, 5, 30, 0, 0],
|
||||
"œ": [0, 0, 0, 0, 0, 14, 21, 29, 5, 14, 0, 0],
|
||||
"Ŕ": [8, 4, 0, 15, 17, 17, 15, 17, 17, 17, 0, 0],
|
||||
"ŕ": [0, 0, 8, 4, 0, 13, 19, 1, 1, 1, 0, 0],
|
||||
"Ŗ": [0, 0, 0, 15, 17, 17, 15, 17, 17, 17, 4, 3],
|
||||
"ŗ": [0, 0, 0, 0, 0, 13, 19, 1, 1, 1, 4, 3],
|
||||
"Ř": [10, 4, 0, 15, 17, 17, 15, 17, 17, 17, 0, 0],
|
||||
"ř": [0, 0, 10, 4, 0, 13, 19, 1, 1, 1, 0, 0],
|
||||
"Ś": [8, 4, 0, 14, 17, 1, 14, 16, 17, 14, 0, 0],
|
||||
"ś": [0, 0, 8, 4, 0, 30, 1, 14, 16, 15, 0, 0],
|
||||
"Ŝ": [4, 10, 0, 14, 17, 1, 14, 16, 17, 14, 0, 0],
|
||||
"ŝ": [0, 0, 4, 10, 0, 30, 1, 14, 16, 15, 0, 0],
|
||||
"Ş": [0, 0, 0, 14, 17, 1, 14, 16, 17, 14, 4, 3],
|
||||
"ş": [0, 0, 0, 0, 0, 30, 1, 14, 16, 15, 4, 3],
|
||||
"Š": [10, 4, 0, 14, 17, 1, 14, 16, 17, 14, 0, 0],
|
||||
"š": [0, 0, 10, 4, 0, 30, 1, 14, 16, 15, 0, 0],
|
||||
"Ţ": [0, 0, 0, 31, 4, 4, 4, 4, 4, 4, 4, 3],
|
||||
"ţ": [0, 0, 0, 2, 2, 15, 2, 2, 2, 28, 8, 6],
|
||||
"Ť": [10, 4, 0, 31, 4, 4, 4, 4, 4, 4, 0, 0],
|
||||
"ť": [0, 0, 8, 10, 2, 15, 2, 2, 2, 28, 0, 0],
|
||||
"Ŧ": [0, 0, 0, 31, 4, 14, 4, 4, 4, 4, 0, 0],
|
||||
"ŧ": [0, 0, 0, 2, 15, 2, 15, 2, 2, 28, 0, 0],
|
||||
"Ũ": [22, 9, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ũ": [0, 0, 22, 9, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"Ū": [0, 14, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ū": [0, 0, 0, 14, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"Ŭ": [10, 4, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ŭ": [0, 0, 10, 4, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"Ů": [10, 4, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ů": [0, 4, 10, 4, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"Ű": [20, 10, 0, 17, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"ű": [0, 0, 20, 10, 0, 17, 17, 17, 17, 30, 0, 0],
|
||||
"Ų": [0, 0, 0, 17, 17, 17, 17, 17, 17, 14, 4, 24],
|
||||
"ų": [0, 0, 0, 0, 0, 17, 17, 17, 17, 30, 4, 24],
|
||||
"Ŵ": [4, 10, 0, 17, 17, 17, 17, 21, 27, 17, 0, 0],
|
||||
"ŵ": [0, 0, 4, 10, 0, 17, 17, 21, 21, 10, 0, 0],
|
||||
"Ŷ": [4, 10, 0, 17, 17, 10, 4, 4, 4, 4, 0, 0],
|
||||
"ŷ": [0, 0, 4, 10, 0, 17, 17, 17, 17, 30, 16, 14],
|
||||
"Ÿ": [0, 10, 0, 17, 17, 10, 4, 4, 4, 4, 0, 0],
|
||||
"Ź": [8, 4, 0, 31, 16, 8, 4, 2, 1, 31, 0, 0],
|
||||
"ź": [0, 0, 8, 4, 0, 31, 8, 4, 2, 31, 0, 0],
|
||||
"Ż": [0, 4, 0, 31, 16, 8, 4, 2, 1, 31, 0, 0],
|
||||
"ż": [0, 0, 0, 4, 0, 31, 8, 4, 2, 31, 0, 0],
|
||||
"Ž": [10, 4, 0, 31, 16, 8, 4, 2, 1, 31, 0, 0],
|
||||
"ž": [0, 0, 10, 4, 0, 31, 8, 4, 2, 31, 0, 0],
|
||||
"Ё": [0, 10, 0, 31, 1, 1, 15, 1, 1, 31, 0, 0],
|
||||
"А": [0, 0, 0, 14, 17, 17, 17, 31, 17, 17, 0, 0],
|
||||
"Б": [0, 0, 0, 31, 1, 1, 15, 17, 17, 15, 0, 0],
|
||||
"В": [0, 0, 0, 15, 17, 17, 15, 17, 17, 15, 0, 0],
|
||||
"Г": [0, 0, 0, 31, 1, 1, 1, 1, 1, 1, 0, 0],
|
||||
"Д": [0, 0, 0, 12, 10, 10, 10, 10, 10, 31, 17, 0],
|
||||
"Е": [0, 0, 0, 31, 1, 1, 15, 1, 1, 31, 0, 0],
|
||||
"Ж": [0, 0, 0, 21, 21, 21, 14, 21, 21, 21, 0, 0],
|
||||
"З": [0, 0, 0, 14, 17, 16, 14, 16, 17, 14, 0, 0],
|
||||
"И": [0, 0, 0, 17, 17, 25, 21, 19, 17, 17, 0, 0],
|
||||
"Й": [0, 10, 4, 17, 17, 25, 21, 19, 17, 17, 0, 0],
|
||||
"К": [0, 0, 0, 25, 5, 5, 3, 5, 9, 17, 0, 0],
|
||||
"Л": [0, 0, 0, 30, 18, 18, 18, 18, 18, 17, 0, 0],
|
||||
"М": [0, 0, 0, 17, 27, 21, 17, 17, 17, 17, 0, 0],
|
||||
"Н": [0, 0, 0, 17, 17, 17, 31, 17, 17, 17, 0, 0],
|
||||
"О": [0, 0, 0, 14, 17, 17, 17, 17, 17, 14, 0, 0],
|
||||
"П": [0, 0, 0, 31, 17, 17, 17, 17, 17, 17, 0, 0],
|
||||
"Р": [0, 0, 0, 15, 17, 17, 15, 1, 1, 1, 0, 0],
|
||||
"С": [0, 0, 0, 14, 17, 1, 1, 1, 17, 14, 0, 0],
|
||||
"Т": [0, 0, 0, 31, 4, 4, 4, 4, 4, 4, 0, 0],
|
||||
"У": [0, 0, 0, 17, 17, 17, 17, 30, 16, 14, 0, 0],
|
||||
"Ф": [0, 0, 0, 4, 14, 21, 21, 21, 14, 4, 0, 0],
|
||||
"Х": [0, 0, 0, 17, 17, 10, 4, 10, 17, 17, 0, 0],
|
||||
"Ц": [0, 0, 0, 0, 9, 9, 9, 9, 9, 31, 16, 0],
|
||||
"Ч": [0, 0, 0, 17, 17, 17, 30, 16, 16, 16, 0, 0],
|
||||
"Ш": [0, 0, 0, 21, 21, 21, 21, 21, 21, 31, 0, 0],
|
||||
"Щ": [0, 0, 0, 21, 21, 21, 21, 21, 21, 31, 16, 0],
|
||||
"Ъ": [0, 0, 0, 0, 3, 2, 14, 18, 18, 14, 0, 0],
|
||||
"Ы": [0, 0, 0, 0, 17, 17, 19, 21, 21, 19, 0, 0],
|
||||
"Ь": [0, 0, 0, 0, 1, 1, 15, 17, 17, 15, 0, 0],
|
||||
"Э": [0, 0, 0, 14, 17, 16, 28, 16, 17, 14, 0, 0],
|
||||
"Ю": [0, 0, 0, 9, 21, 21, 23, 21, 21, 9, 0, 0],
|
||||
"Я": [0, 0, 0, 0, 30, 17, 17, 30, 17, 17, 0, 0],
|
||||
"а": [0, 0, 0, 0, 0, 14, 16, 30, 17, 30, 0, 0],
|
||||
"б": [0, 0, 0, 30, 1, 13, 19, 17, 17, 14, 0, 0],
|
||||
"в": [0, 0, 0, 0, 0, 15, 17, 15, 17, 15, 0, 0],
|
||||
"г": [0, 0, 0, 0, 0, 31, 1, 1, 1, 1, 0, 0],
|
||||
"д": [0, 0, 0, 0, 0, 12, 10, 10, 10, 31, 17, 0],
|
||||
"е": [0, 0, 0, 0, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"ж": [0, 0, 0, 0, 0, 21, 14, 4, 14, 21, 0, 0],
|
||||
"з": [0, 0, 0, 0, 0, 6, 9, 4, 9, 6, 0, 0],
|
||||
"и": [0, 0, 0, 0, 0, 17, 25, 21, 19, 17, 0, 0],
|
||||
"й": [0, 0, 0, 10, 4, 17, 25, 21, 19, 17, 0, 0],
|
||||
"к": [0, 0, 0, 0, 0, 17, 9, 7, 9, 17, 0, 0],
|
||||
"л": [0, 0, 0, 0, 0, 30, 18, 18, 18, 17, 0, 0],
|
||||
"м": [0, 0, 0, 0, 0, 17, 27, 21, 17, 17, 0, 0],
|
||||
"н": [0, 0, 0, 0, 0, 17, 17, 31, 17, 17, 0, 0],
|
||||
"о": [0, 0, 0, 0, 0, 14, 17, 17, 17, 14, 0, 0],
|
||||
"п": [0, 0, 0, 0, 0, 31, 17, 17, 17, 17, 0, 0],
|
||||
"р": [0, 0, 0, 0, 0, 13, 19, 17, 17, 15, 1, 1],
|
||||
"с": [0, 0, 0, 0, 0, 14, 17, 1, 17, 14, 0, 0],
|
||||
"т": [0, 0, 0, 0, 0, 31, 4, 4, 4, 4, 0, 0],
|
||||
"у": [0, 0, 0, 0, 0, 17, 17, 17, 17, 30, 16, 14],
|
||||
"ф": [0, 0, 0, 4, 4, 14, 21, 21, 21, 14, 4, 4],
|
||||
"х": [0, 0, 0, 0, 0, 17, 10, 4, 10, 17, 0, 0],
|
||||
"ц": [0, 0, 0, 0, 0, 9, 9, 9, 9, 31, 16, 0],
|
||||
"ч": [0, 0, 0, 0, 0, 17, 17, 17, 30, 16, 0, 0],
|
||||
"ш": [0, 0, 0, 0, 0, 21, 21, 21, 21, 31, 0, 0],
|
||||
"щ": [0, 0, 0, 0, 0, 21, 21, 21, 21, 31, 16, 0],
|
||||
"ъ": [0, 0, 0, 0, 0, 3, 2, 14, 18, 14, 0, 0],
|
||||
"ы": [0, 0, 0, 0, 0, 17, 17, 19, 21, 19, 0, 0],
|
||||
"ь": [0, 0, 0, 0, 0, 1, 1, 15, 17, 15, 0, 0],
|
||||
"э": [0, 0, 0, 0, 0, 14, 17, 28, 17, 14, 0, 0],
|
||||
"ю": [0, 0, 0, 0, 0, 9, 21, 23, 21, 9, 0, 0],
|
||||
"я": [0, 0, 0, 0, 0, 30, 17, 17, 30, 17, 0, 0],
|
||||
"ё": [0, 0, 0, 10, 0, 14, 17, 31, 1, 14, 0, 0],
|
||||
"—": [0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0],
|
||||
"’": [0, 0, 0, 8, 4, 0, 0, 0, 0, 0, 0, 0],
|
||||
"…": [0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 0, 0],
|
||||
"€": [0, 0, 0, 12, 18, 7, 2, 7, 18, 12, 0, 0],
|
||||
"←": [0, 0, 0, 0, 0, 4, 30, 31, 30, 4, 0, 0],
|
||||
"↑": [0, 0, 0, 0, 0, 4, 14, 31, 14, 14, 0, 0],
|
||||
"→": [0, 0, 0, 0, 0, 4, 15, 31, 15, 4, 0, 0],
|
||||
"↓": [0, 0, 0, 0, 0, 14, 14, 31, 14, 4, 0, 0],
|
||||
" ": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
}
|
||||
|
||||
|
||||
|
||||
def make_bytes(ch):
|
||||
rows = monogram[ch]
|
||||
index = list(monogram).index(ch) # ordered dict comes in handy
|
||||
print('\t//', repr(ch))
|
||||
for i, byte in enumerate(rows):
|
||||
if not byte: continue
|
||||
a = f'{byte:07b}' # convert byte to zero-left-padded str
|
||||
print(f'\tfont_monogram_data[{index}][{i:2}] = 0b{a};');
|
||||
|
||||
|
||||
NUM_CHARS = len(monogram)
|
||||
MAX_ORD = max(map(ord, monogram))
|
||||
|
||||
print(f'''\
|
||||
|
||||
|
||||
#define FONT_MONOGRAM_NUMBER_OF_CHARACTERS {NUM_CHARS}
|
||||
#define FONT_MONOGRAM_HEIGHT 12
|
||||
#define FONT_MONOGRAM_WIDTH 7
|
||||
|
||||
// This is 12 bytes of data per char, as in 12 rows, and each byte
|
||||
// represents the pixels in that row.
|
||||
u8 font_monogram_data[{NUM_CHARS}][12];
|
||||
|
||||
// Map from ord(ch) to index of ch's data in font_monogram_data.
|
||||
// This is for when you know the character that you want to draw but not
|
||||
// its index in the font_monogram_data array.
|
||||
u16 font_monogram_chars[{MAX_ORD}];
|
||||
|
||||
void
|
||||
init_monogram_font_data()
|
||||
{{
|
||||
\tmemset(font_monogram_data, 0, sizeof(font_monogram_data));
|
||||
|
||||
\t// Empty slots initialized to -1.
|
||||
\tmemset(font_monogram_chars, 0xFF, sizeof(font_monogram_chars));
|
||||
''')
|
||||
for i, ch in enumerate(monogram):
|
||||
make_bytes(ch)
|
||||
print(f'\tfont_monogram_chars[{hex(ord(ch))}] = {i};')
|
||||
print('}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -144,6 +144,7 @@ carefree_wu_line(u32* dest, size_t dest_stride, u64 x, u64 y, u64 w, u64 h, u32
|
|||
|
||||
// > We translate the point (x0, y0) to the origin,
|
||||
// so y = kx where k = h/w with k <= 1
|
||||
// (actually k < 1 because 45° lines are special-cased.)
|
||||
u16 k = 0xFFFF * h / w;
|
||||
u16 d = k >> 1;
|
||||
while (w) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
// In the Thun dialect of Joy we have four types of values:
|
||||
// Integers, Booleans, Symbols, and Lists.
|
||||
// We don't have Unions, Enums, or Typedefs.
|
||||
// So how do we represent Joy types?
|
||||
// In SICP they use a pair of arrays of pointers, one for heads and one
|
||||
// for tails.
|
||||
|
||||
|
||||
// > A pointer to a pair is an index into the two vectors.
|
||||
#define HEAP_SIZE 1024
|
||||
|
||||
u32 heads[HEAP_SIZE];
|
||||
u32 tails[HEAP_SIZE];
|
||||
u32 free = 0;
|
||||
|
||||
// > We also need a representation for objects other than pairs (such as
|
||||
// numbers and symbols) and a way to distinguish one kind of data from
|
||||
// another. There are many methods of accomplishing this, but they all
|
||||
// reduce to using typed pointers, that is, to extending the notion of
|
||||
// ``pointer'' to include information on data type.
|
||||
|
||||
#define TYPE_OF(pointer) (pointer >> 30)
|
||||
#define VALUE_OF(pointer) (pointer & 0x3fffffff)
|
||||
#define MAKE_POINTER(type, value) ((type & 3) << 30) | (value & 0x3fffffff)
|
||||
#define joyInt (0)
|
||||
#define joyList (1)
|
||||
#define joySymbol (2)
|
||||
#define joyBool (3)
|
||||
|
||||
|
||||
u32 empty_list = 0xffffffff;
|
||||
|
||||
|
||||
u32
|
||||
cons(u32 head, u32 tail)
|
||||
{
|
||||
if (free >= HEAP_SIZE) {
|
||||
//panic
|
||||
return;
|
||||
}
|
||||
heads[free] = head;
|
||||
tails[free] = tail;
|
||||
u32 cell = MAKE_POINTER(joyList, free);
|
||||
++free;
|
||||
return cell;
|
||||
}
|
||||
|
||||
u32
|
||||
head(u32 list)
|
||||
{
|
||||
return heads[VALUE_OF(list)];
|
||||
}
|
||||
|
||||
u32
|
||||
tail(u32 list)
|
||||
{
|
||||
return tails[VALUE_OF(list)];
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
main()
|
||||
{
|
||||
u32 stack = empty_list;
|
||||
|
||||
stack = cons(23, stack);
|
||||
stack = cons(42, stack);
|
||||
stack = cons(273, stack);
|
||||
|
||||
print_i64(head(stack));print_str(",");
|
||||
stack = tail(stack);
|
||||
print_i64(head(stack));print_str(",");
|
||||
stack = tail(stack);
|
||||
print_i64(head(stack));print_str(",");
|
||||
stack = tail(stack);
|
||||
print_i64(head(stack));print_str(",");
|
||||
print_endl();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,22 +1,22 @@
|
|||
from PIL import Image, ImageDraw
|
||||
|
||||
LIMIT = 0xffff
|
||||
|
||||
|
||||
def draw_wu_line(draw, x, y, w, h):
|
||||
# Without loss of generality only lines in the first oc
|
||||
assert(w > 0 and h > 0 and w > h)
|
||||
k = 0xffff * h // w
|
||||
print(bin(k), hex(k), k)
|
||||
k = LIMIT * (h-1) // w
|
||||
x1 = x + w - 1
|
||||
y1 = y + h - 1
|
||||
print(x1, y1)
|
||||
d = 0
|
||||
while x1 > x:
|
||||
draw.point([(x, y), (x1, y1)], fill=(0, 0, 0, 0xff - (d >> 8)))
|
||||
draw.point([(x, y + 1), (x1, y1 - 1)], fill=(0, 0, 0, d >> 8))
|
||||
x += 1
|
||||
x1 -= 1
|
||||
if d + k >= 0xFFFF:
|
||||
d = k - (0xFFFF - d)
|
||||
if d + k >= LIMIT:
|
||||
d = k - (LIMIT - d)
|
||||
y += 1
|
||||
y1 -= 1
|
||||
else:
|
||||
|
|
@ -30,14 +30,14 @@ def draw_wu_line(draw, x, y, w, h):
|
|||
alpha = 0x7f
|
||||
draw.point(points, fill=(0, 0, 0, alpha))
|
||||
|
||||
size = 100, 50
|
||||
size = 100, 33
|
||||
im = Image.new('RGBA', size)
|
||||
d = ImageDraw.Draw(im, 'RGBA')
|
||||
|
||||
#draw_wu_line(d, 0, 0, *size)
|
||||
draw_wu_line(d, 0, 0, *size)
|
||||
|
||||
for w in range(51, 100):
|
||||
draw_wu_line(d, 0, 0, w, 50)
|
||||
##for w in range(51, 100):
|
||||
## draw_wu_line(d, 0, 0, w, 50)
|
||||
|
||||
base = Image.new('RGBA', size, (0xff, 0xff, 0xff, 0xff))
|
||||
base.alpha_composite(im)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
FRAME_WIDTH = 100
|
||||
color = 1
|
||||
|
||||
line_color_buffer = [0] * FRAME_WIDTH
|
||||
|
||||
line_color_buffer[0] = color;
|
||||
offset = 1
|
||||
while ((offset << 1) < FRAME_WIDTH):
|
||||
color += 1
|
||||
print(f't: {offset} color: {color}')
|
||||
line_color_buffer[offset:offset << 1] = [color] * offset
|
||||
offset = offset << 1
|
||||
|
||||
print(f't: {offset} color: {color}')
|
||||
|
||||
remainder = FRAME_WIDTH - offset
|
||||
line_color_buffer[offset:] = line_color_buffer[:remainder]
|
||||
print(line_color_buffer)
|
||||
|
||||
##for i, n in enumerate(line_color_buffer):
|
||||
## print((i), n)
|
||||
## if not n:
|
||||
## break
|
||||
|
||||
[
|
||||
1, 1,
|
||||
2, 2,
|
||||
3, 3, 3, 3,
|
||||
4, 4, 4, 4, 4, 4, 4, 4,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||
1, 1,
|
||||
2, 2,
|
||||
3, 3, 3, 3,
|
||||
4, 4, 4, 4, 4, 4, 4, 4,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
6, 6, 6, 6
|
||||
]
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
utf8d = [
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,# // 00..1f
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,# // 20..3f
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,# // 40..5f
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,# // 60..7f
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,# // 80..9f
|
||||
7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,# // a0..bf
|
||||
8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,# // c0..df
|
||||
0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3,# // e0..ef
|
||||
0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,# // f0..ff
|
||||
0x0,0x1,0x2,0x3,0x5,0x8,0x7,0x1,0x1,0x1,0x4,0x6,0x1,0x1,0x1,0x1,# // s0..s0
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,# // s1..s2
|
||||
1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,# // s3..s4
|
||||
1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1,# // s5..s6
|
||||
1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,# // s7..s8
|
||||
]
|
||||
|
||||
for i, byte in enumerate(utf8d):
|
||||
print(f'utf8d[{i:3}] = 0x{byte:x};', end=' ' if (i + 1) % 4 else '\n')
|
||||
|
||||
##utf8d[ 0] = 0; utf8d[ 1] = 0; utf8d[ 2] = 0; utf8d[ 3] = 0;
|
||||
##utf8d[ 4] = 0; utf8d[ 5] = 0; utf8d[ 6] = 0; utf8d[ 7] = 0;
|
||||
##utf8d[ 8] = 0; utf8d[ 9] = 0; utf8d[ 10] = 0; utf8d[ 11] = 0;
|
||||
##
|
||||
|
||||
99
|
||||
32
|
||||
226
|
||||
134
|
||||
144
|
||||
|
||||
|
||||
0b01100011;
|
||||
0b00100000;
|
||||
0b1110
|
||||
0010;
|
||||
0b10
|
||||
000110;
|
||||
0b10
|
||||
010000;
|
||||
|
||||
0b0010_000110_010000
|
||||
0b10_000110_010000
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 916 B After Width: | Height: | Size: 452 B |
|
|
@ -2,6 +2,7 @@
|
|||
#include <uvm/syscalls.h>
|
||||
#include <uvm/utils.h>
|
||||
#include "/home/sforman/src/Joypy/implementations/uvm-ncc/font/font.h"
|
||||
#include "/home/sforman/src/Joypy/implementations/uvm-ncc/font/monogram.h"
|
||||
#include "/home/sforman/src/Joypy/implementations/uvm-ncc/graphics.h"
|
||||
|
||||
#define font_data font_PublicPixel_22_data
|
||||
|
|
@ -42,6 +43,31 @@ draw_char(u8 ch, u64 dest_x, u64 dest_y)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
draw_monogram_char(u8 ch, u64 dest_x, u64 dest_y, u32 color)
|
||||
{
|
||||
// Check the inputs.
|
||||
if (ch < 0 || dest_x < 0 || dest_y < 0
|
||||
|| ch > font_monogram_number_of_characters
|
||||
|| dest_x >= (FRAME_WIDTH - font_monogram_width)
|
||||
|| dest_y >= (FRAME_HEIGHT - font_monogram_height))
|
||||
// No error message or anything, just decline to draw.
|
||||
return;
|
||||
u32* d = frame_buffer + FRAME_WIDTH * dest_y + dest_x;
|
||||
for (u64 y = 0; y < font_monogram_height; ++y) {
|
||||
u8 pixel_bits = font_monogram_data[ch][y];
|
||||
for (u64 x = 0; x < font_monogram_width; ++x) {
|
||||
if (!pixel_bits) break;
|
||||
if (pixel_bits & 1) {
|
||||
*(d+x) = color;
|
||||
}
|
||||
pixel_bits = pixel_bits >> 1;
|
||||
}
|
||||
d = d + FRAME_WIDTH;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
keydown(u64 window_id, u16 keycode)
|
||||
{
|
||||
|
|
@ -98,17 +124,27 @@ void
|
|||
main()
|
||||
{
|
||||
init_font_data();
|
||||
init_monogram_font_data();
|
||||
wid = window_create(FRAME_WIDTH, FRAME_HEIGHT, "Xerblin", 0);
|
||||
draw_background(frame_buffer, FRAME_WIDTH, FRAME_HEIGHT);
|
||||
for (size_t ch = 0; ch < font_numchars; ++ch) {
|
||||
draw_char(
|
||||
for (size_t ch = 0; ch < font_monogram_number_of_characters; ++ch) {
|
||||
draw_monogram_char(
|
||||
ch,
|
||||
128 + (ch % 26) * font_width,
|
||||
128 + (ch / 26) * font_height
|
||||
129 + (ch % 26) * font_monogram_width,
|
||||
129 + (ch / 26) * font_monogram_height,
|
||||
0x00000000
|
||||
);
|
||||
}
|
||||
u64 w = 3 + 26 * font_width;
|
||||
u64 h = 4 + 4 * font_height;
|
||||
for (size_t ch = 0; ch < font_monogram_number_of_characters; ++ch) {
|
||||
draw_monogram_char(
|
||||
ch,
|
||||
128 + (ch % 26) * font_monogram_width,
|
||||
128 + (ch / 26) * font_monogram_height,
|
||||
0x00FFFFFF
|
||||
);
|
||||
}
|
||||
u64 w = 3 + 26 * font_monogram_width;
|
||||
u64 h = 4 + font_monogram_number_of_characters / 26 * font_monogram_height;
|
||||
carefree_draw_box(frame_buffer, FRAME_WIDTH, 126, 126, w, h, WHITE);
|
||||
w = 200;
|
||||
carefree_wu_line(frame_buffer, FRAME_WIDTH, 0, 0, FRAME_WIDTH, FRAME_HEIGHT-1, WHITE);
|
||||
|
|
|
|||
Loading…
Reference in New Issue