#!/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")