From d442baf1f10970219afbb3307e7a377e8d34116c Mon Sep 17 00:00:00 2001 From: kris Date: Tue, 2 Nov 2021 12:30:43 +0000 Subject: [PATCH] Tidy a bit --- ntsc_colours.py | 20 +++++++++++--------- palette_ntsc.py | 1 + 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/ntsc_colours.py b/ntsc_colours.py index b2682a8..b926766 100644 --- a/ntsc_colours.py +++ b/ntsc_colours.py @@ -1,6 +1,5 @@ """Precomputes all possible colours available via NTSC emulation.""" -import colour import numpy as np from PIL import Image import screen @@ -14,6 +13,7 @@ def main(): print("import numpy as np") print() + print("# Indexed by (trailing 8-bit dot pattern, x % 4)") print("SRGB = {") # For each sequence of 8 pixels, compute the RGB colour of the right-most # pixel, using NTSC emulation. @@ -21,28 +21,30 @@ def main(): # position with respect to NTSC phase. # TODO: should be 3? Do I have a compensating off-by-one in bitmap_to_ntsc? ntsc_shift = 2 - for j in range(ntsc_shift, ntsc_shift+4): - bitmap = np.zeros((1, 11+ntsc_shift), dtype=np.bool) + for j in range(ntsc_shift, ntsc_shift + 4): + bitmap = np.zeros((1, 11 + ntsc_shift), dtype=np.bool) for bits in range(256): bits8 = np.empty((8,), dtype=np.bool) for i in range(8): bits8[i] = bits & (1 << i) - bitmap[0, j:j+8] = bits8 + bitmap[0, j:j + 8] = bits8 + # bitmap_to_ntsc produces 3 output pixels for each DHGR input ntsc = s.bitmap_to_ntsc(bitmap) - last_colour = ntsc[0, 3*(j+8)-1, :] - colours[(bits, j-ntsc_shift)] = last_colour + last_colour = ntsc[0, 3 * (j + 8) - 1, :] + colours[(bits, j - ntsc_shift)] = last_colour unique.add(tuple(last_colour)) print(" (%d, %d): np.array((%d, %d, %d))," % ( - bits, j-ntsc_shift, last_colour[0], last_colour[1], last_colour[2])) + bits, j - ntsc_shift, last_colour[0], last_colour[1], + last_colour[2])) print("}") print("# %d unique colours" % len(unique)) # Show spectrum of available colours sorted by HSV hue value - im = np.zeros((128*4, 256 * 16, 3), dtype=np.uint8) + im = np.zeros((128 * 4, 256 * 16, 3), dtype=np.uint8) for x, j in colours: - im[128*j:128*(j+1), x * 16: (x + 1) * 16, :] = colours[x,j] + im[128 * j:128 * (j + 1), x * 16: (x + 1) * 16, :] = colours[x, j] Image.fromarray(im).show() diff --git a/palette_ntsc.py b/palette_ntsc.py index 1c65e84..2934c3a 100644 --- a/palette_ntsc.py +++ b/palette_ntsc.py @@ -1,5 +1,6 @@ import numpy as np +# Indexed by (trailing 8-bit dot pattern, x % 4) SRGB = { (0, 0): np.array((0, 0, 0)), (1, 0): np.array((0, 37, 0)),