analog/v2-analog-rev1/scripts/generate_hires_dotpatterns.py

35 lines
978 B
Python
Raw Normal View History

2023-01-07 07:15:21 +00:00
#!/usr/bin/env python3
import sys
fp = sys.stdout
fp.write("// Mapping of a hires video byte to 14 half-pixel dots.\n")
fp.write("// Bits are displayed from MSB to LSB.\n")
fp.write("static uint16_t hires_dot_patterns[256] = {")
for hiresByteValue in range(256):
if hiresByteValue % 8 == 0:
fp.write("\n ")
bits = 0
# hires byte consistes of
# MSB - delay by 1/2 'pixel'
# bits[0:6] - pixel bits, displayed from LSB to MSB
# Want to output a doubled resolution bitmap of 14 bits
# that is shifted according to the MSB, and bit-reversed so
# it is displayed MSB to LSB
for i in range(7):
bits <<= 2
if hiresByteValue & 1:
bits |= 0x3
hiresByteValue >>= 1
if hiresByteValue & 1:
# Output pixels are delayed by an extra half-pixel
bits >>= 1
#print("0b{:014b}".format(bits))
fp.write("0x{:04x},".format(bits))
fp.write("\n};\n")