commit 29cfce5510b81a6f575534a0cb34f856f17e4269 Author: Sergiusz 'q3k' BazaƄski Date: Sun Sep 20 21:35:10 2015 +0200 Initial commit. WIP. diff --git a/gamma.v b/gamma.v new file mode 100644 index 0000000..fdc634b --- /dev/null +++ b/gamma.v @@ -0,0 +1,262 @@ +module gamma(input [7:0] in, output reg [11:0] out); +always @(in) begin +case(in) + 8'h00: out = 12'h000; + 8'h01: out = 12'h000; + 8'h02: out = 12'h000; + 8'h03: out = 12'h000; + 8'h04: out = 12'h000; + 8'h05: out = 12'h000; + 8'h06: out = 12'h000; + 8'h07: out = 12'h000; + 8'h08: out = 12'h000; + 8'h09: out = 12'h000; + 8'h0a: out = 12'h000; + 8'h0b: out = 12'h000; + 8'h0c: out = 12'h000; + 8'h0d: out = 12'h000; + 8'h0e: out = 12'h000; + 8'h0f: out = 12'h000; + 8'h10: out = 12'h000; + 8'h11: out = 12'h000; + 8'h12: out = 12'h000; + 8'h13: out = 12'h000; + 8'h14: out = 12'h000; + 8'h15: out = 12'h000; + 8'h16: out = 12'h000; + 8'h17: out = 12'h000; + 8'h18: out = 12'h000; + 8'h19: out = 12'h000; + 8'h1a: out = 12'h000; + 8'h1b: out = 12'h001; + 8'h1c: out = 12'h001; + 8'h1d: out = 12'h001; + 8'h1e: out = 12'h001; + 8'h1f: out = 12'h001; + 8'h20: out = 12'h001; + 8'h21: out = 12'h001; + 8'h22: out = 12'h001; + 8'h23: out = 12'h001; + 8'h24: out = 12'h002; + 8'h25: out = 12'h002; + 8'h26: out = 12'h002; + 8'h27: out = 12'h002; + 8'h28: out = 12'h002; + 8'h29: out = 12'h003; + 8'h2a: out = 12'h003; + 8'h2b: out = 12'h003; + 8'h2c: out = 12'h004; + 8'h2d: out = 12'h004; + 8'h2e: out = 12'h004; + 8'h2f: out = 12'h005; + 8'h30: out = 12'h005; + 8'h31: out = 12'h006; + 8'h32: out = 12'h006; + 8'h33: out = 12'h007; + 8'h34: out = 12'h007; + 8'h35: out = 12'h008; + 8'h36: out = 12'h008; + 8'h37: out = 12'h009; + 8'h38: out = 12'h00a; + 8'h39: out = 12'h00a; + 8'h3a: out = 12'h00b; + 8'h3b: out = 12'h00c; + 8'h3c: out = 12'h00d; + 8'h3d: out = 12'h00d; + 8'h3e: out = 12'h00e; + 8'h3f: out = 12'h00f; + 8'h40: out = 12'h010; + 8'h41: out = 12'h011; + 8'h42: out = 12'h012; + 8'h43: out = 12'h014; + 8'h44: out = 12'h015; + 8'h45: out = 12'h016; + 8'h46: out = 12'h017; + 8'h47: out = 12'h019; + 8'h48: out = 12'h01a; + 8'h49: out = 12'h01c; + 8'h4a: out = 12'h01d; + 8'h4b: out = 12'h01f; + 8'h4c: out = 12'h020; + 8'h4d: out = 12'h022; + 8'h4e: out = 12'h024; + 8'h4f: out = 12'h026; + 8'h50: out = 12'h028; + 8'h51: out = 12'h02a; + 8'h52: out = 12'h02c; + 8'h53: out = 12'h02e; + 8'h54: out = 12'h030; + 8'h55: out = 12'h033; + 8'h56: out = 12'h035; + 8'h57: out = 12'h037; + 8'h58: out = 12'h03a; + 8'h59: out = 12'h03d; + 8'h5a: out = 12'h040; + 8'h5b: out = 12'h042; + 8'h5c: out = 12'h045; + 8'h5d: out = 12'h048; + 8'h5e: out = 12'h04c; + 8'h5f: out = 12'h04f; + 8'h60: out = 12'h052; + 8'h61: out = 12'h056; + 8'h62: out = 12'h059; + 8'h63: out = 12'h05d; + 8'h64: out = 12'h061; + 8'h65: out = 12'h065; + 8'h66: out = 12'h069; + 8'h67: out = 12'h06d; + 8'h68: out = 12'h071; + 8'h69: out = 12'h076; + 8'h6a: out = 12'h07a; + 8'h6b: out = 12'h07f; + 8'h6c: out = 12'h084; + 8'h6d: out = 12'h089; + 8'h6e: out = 12'h08e; + 8'h6f: out = 12'h093; + 8'h70: out = 12'h098; + 8'h71: out = 12'h09e; + 8'h72: out = 12'h0a4; + 8'h73: out = 12'h0a9; + 8'h74: out = 12'h0af; + 8'h75: out = 12'h0b5; + 8'h76: out = 12'h0bc; + 8'h77: out = 12'h0c2; + 8'h78: out = 12'h0c9; + 8'h79: out = 12'h0d0; + 8'h7a: out = 12'h0d7; + 8'h7b: out = 12'h0de; + 8'h7c: out = 12'h0e5; + 8'h7d: out = 12'h0ec; + 8'h7e: out = 12'h0f4; + 8'h7f: out = 12'h0fc; + 8'h80: out = 12'h104; + 8'h81: out = 12'h10c; + 8'h82: out = 12'h115; + 8'h83: out = 12'h11d; + 8'h84: out = 12'h126; + 8'h85: out = 12'h12f; + 8'h86: out = 12'h138; + 8'h87: out = 12'h142; + 8'h88: out = 12'h14b; + 8'h89: out = 12'h155; + 8'h8a: out = 12'h15f; + 8'h8b: out = 12'h16a; + 8'h8c: out = 12'h174; + 8'h8d: out = 12'h17f; + 8'h8e: out = 12'h18a; + 8'h8f: out = 12'h195; + 8'h90: out = 12'h1a0; + 8'h91: out = 12'h1ac; + 8'h92: out = 12'h1b8; + 8'h93: out = 12'h1c4; + 8'h94: out = 12'h1d1; + 8'h95: out = 12'h1dd; + 8'h96: out = 12'h1ea; + 8'h97: out = 12'h1f8; + 8'h98: out = 12'h205; + 8'h99: out = 12'h213; + 8'h9a: out = 12'h221; + 8'h9b: out = 12'h22f; + 8'h9c: out = 12'h23e; + 8'h9d: out = 12'h24c; + 8'h9e: out = 12'h25c; + 8'h9f: out = 12'h26b; + 8'ha0: out = 12'h27b; + 8'ha1: out = 12'h28b; + 8'ha2: out = 12'h29b; + 8'ha3: out = 12'h2ac; + 8'ha4: out = 12'h2bd; + 8'ha5: out = 12'h2ce; + 8'ha6: out = 12'h2df; + 8'ha7: out = 12'h2f1; + 8'ha8: out = 12'h303; + 8'ha9: out = 12'h316; + 8'haa: out = 12'h329; + 8'hab: out = 12'h33c; + 8'hac: out = 12'h350; + 8'had: out = 12'h364; + 8'hae: out = 12'h378; + 8'haf: out = 12'h38c; + 8'hb0: out = 12'h3a1; + 8'hb1: out = 12'h3b7; + 8'hb2: out = 12'h3cc; + 8'hb3: out = 12'h3e2; + 8'hb4: out = 12'h3f9; + 8'hb5: out = 12'h40f; + 8'hb6: out = 12'h427; + 8'hb7: out = 12'h43e; + 8'hb8: out = 12'h456; + 8'hb9: out = 12'h46e; + 8'hba: out = 12'h487; + 8'hbb: out = 12'h4a0; + 8'hbc: out = 12'h4ba; + 8'hbd: out = 12'h4d4; + 8'hbe: out = 12'h4ee; + 8'hbf: out = 12'h509; + 8'hc0: out = 12'h524; + 8'hc1: out = 12'h540; + 8'hc2: out = 12'h55c; + 8'hc3: out = 12'h578; + 8'hc4: out = 12'h595; + 8'hc5: out = 12'h5b3; + 8'hc6: out = 12'h5d1; + 8'hc7: out = 12'h5ef; + 8'hc8: out = 12'h60e; + 8'hc9: out = 12'h62d; + 8'hca: out = 12'h64c; + 8'hcb: out = 12'h66d; + 8'hcc: out = 12'h68d; + 8'hcd: out = 12'h6ae; + 8'hce: out = 12'h6d0; + 8'hcf: out = 12'h6f2; + 8'hd0: out = 12'h715; + 8'hd1: out = 12'h738; + 8'hd2: out = 12'h75c; + 8'hd3: out = 12'h780; + 8'hd4: out = 12'h7a4; + 8'hd5: out = 12'h7c9; + 8'hd6: out = 12'h7ef; + 8'hd7: out = 12'h815; + 8'hd8: out = 12'h83c; + 8'hd9: out = 12'h863; + 8'hda: out = 12'h88b; + 8'hdb: out = 12'h8b4; + 8'hdc: out = 12'h8dd; + 8'hdd: out = 12'h906; + 8'hde: out = 12'h930; + 8'hdf: out = 12'h95b; + 8'he0: out = 12'h986; + 8'he1: out = 12'h9b2; + 8'he2: out = 12'h9df; + 8'he3: out = 12'ha0c; + 8'he4: out = 12'ha39; + 8'he5: out = 12'ha67; + 8'he6: out = 12'ha96; + 8'he7: out = 12'hac6; + 8'he8: out = 12'haf6; + 8'he9: out = 12'hb26; + 8'hea: out = 12'hb58; + 8'heb: out = 12'hb8a; + 8'hec: out = 12'hbbc; + 8'hed: out = 12'hbf0; + 8'hee: out = 12'hc23; + 8'hef: out = 12'hc58; + 8'hf0: out = 12'hc8d; + 8'hf1: out = 12'hcc3; + 8'hf2: out = 12'hcfa; + 8'hf3: out = 12'hd31; + 8'hf4: out = 12'hd69; + 8'hf5: out = 12'hda1; + 8'hf6: out = 12'hddb; + 8'hf7: out = 12'he15; + 8'hf8: out = 12'he50; + 8'hf9: out = 12'he8b; + 8'hfa: out = 12'hec7; + 8'hfb: out = 12'hf04; + 8'hfc: out = 12'hf42; + 8'hfd: out = 12'hf80; + 8'hfe: out = 12'hfbf; + 8'hff: out = 12'hfff; +endcase +end +endmodule diff --git a/gammagenerate.py b/gammagenerate.py new file mode 100644 index 0000000..802adf3 --- /dev/null +++ b/gammagenerate.py @@ -0,0 +1,16 @@ +import math + +print 'module gamma(input [7:0] in, output reg [11:0] out);' +print 'always @(in) begin' +print 'case(in)' + +gamma = 4 + +for i in range(256): + f = float(i)/255.0 + o = int(math.pow(f, gamma) * (4095) + 0.5) + print "\t8'h{:02x}: out = 12'h{:03x};".format(i, o) + +print 'endcase' +print 'end' +print 'endmodule' diff --git a/image.png b/image.png new file mode 100644 index 0000000..90c9266 Binary files /dev/null and b/image.png differ diff --git a/image.v b/image.v new file mode 100644 index 0000000..4c57ac3 --- /dev/null +++ b/image.v @@ -0,0 +1,1031 @@ +module image(input [4:0] x, input [4:0] y, output reg [7:0] r, output reg [7:0] g, output reg [7:0] b); +wire [9:0] ix = x << 5 | y; +always @(ix) begin +case(ix) + 10'h000: begin r = 8'h90; g = 8'hac; b = 8'haa; end + 10'h020: begin r = 8'h94; g = 8'hac; b = 8'haa; end + 10'h040: begin r = 8'h93; g = 8'haa; b = 8'ha7; end + 10'h060: begin r = 8'h95; g = 8'hab; b = 8'haa; end + 10'h080: begin r = 8'h95; g = 8'hab; b = 8'ha9; end + 10'h0a0: begin r = 8'h94; g = 8'hab; b = 8'ha9; end + 10'h0c0: begin r = 8'h95; g = 8'had; b = 8'haa; end + 10'h0e0: begin r = 8'h96; g = 8'hac; b = 8'hae; end + 10'h100: begin r = 8'h98; g = 8'had; b = 8'hae; end + 10'h120: begin r = 8'h97; g = 8'hac; b = 8'had; end + 10'h140: begin r = 8'h94; g = 8'haa; b = 8'hac; end + 10'h160: begin r = 8'h93; g = 8'ha9; b = 8'had; end + 10'h180: begin r = 8'h90; g = 8'ha8; b = 8'ha9; end + 10'h1a0: begin r = 8'h98; g = 8'hac; b = 8'ha7; end + 10'h1c0: begin r = 8'hb1; g = 8'hba; b = 8'hb2; end + 10'h1e0: begin r = 8'hc8; g = 8'hca; b = 8'hbc; end + 10'h200: begin r = 8'hd5; g = 8'hd3; b = 8'hc7; end + 10'h220: begin r = 8'hd6; g = 8'hd8; b = 8'hc6; end + 10'h240: begin r = 8'hcc; g = 8'hce; b = 8'hc1; end + 10'h260: begin r = 8'hb2; g = 8'hbf; b = 8'hb6; end + 10'h280: begin r = 8'h95; g = 8'ha7; b = 8'h9f; end + 10'h2a0: begin r = 8'h87; g = 8'h9d; b = 8'h99; end + 10'h2c0: begin r = 8'h89; g = 8'h9d; b = 8'h9c; end + 10'h2e0: begin r = 8'h89; g = 8'h9d; b = 8'h9e; end + 10'h300: begin r = 8'h86; g = 8'h9c; b = 8'h9d; end + 10'h320: begin r = 8'h85; g = 8'h9b; b = 8'h99; end + 10'h340: begin r = 8'h82; g = 8'h98; b = 8'h94; end + 10'h360: begin r = 8'h82; g = 8'h99; b = 8'h91; end + 10'h380: begin r = 8'h80; g = 8'h95; b = 8'h91; end + 10'h3a0: begin r = 8'h80; g = 8'h95; b = 8'h94; end + 10'h3c0: begin r = 8'h8a; g = 8'h9c; b = 8'h9e; end + 10'h3e0: begin r = 8'h85; g = 8'h94; b = 8'h97; end + 10'h001: begin r = 8'h90; g = 8'hae; b = 8'had; end + 10'h021: begin r = 8'h93; g = 8'had; b = 8'hab; end + 10'h041: begin r = 8'h95; g = 8'had; b = 8'haa; end + 10'h061: begin r = 8'h97; g = 8'had; b = 8'hac; end + 10'h081: begin r = 8'h96; g = 8'hac; b = 8'had; end + 10'h0a1: begin r = 8'h98; g = 8'had; b = 8'hae; end + 10'h0c1: begin r = 8'h98; g = 8'hae; b = 8'hae; end + 10'h0e1: begin r = 8'h98; g = 8'had; b = 8'hae; end + 10'h101: begin r = 8'h9a; g = 8'hb0; b = 8'hb1; end + 10'h121: begin r = 8'h99; g = 8'hae; b = 8'haf; end + 10'h141: begin r = 8'h94; g = 8'hab; b = 8'hac; end + 10'h161: begin r = 8'h9d; g = 8'hb1; b = 8'hac; end + 10'h181: begin r = 8'hbd; g = 8'hc0; b = 8'hb7; end + 10'h1a1: begin r = 8'hc7; g = 8'hc2; b = 8'hb2; end + 10'h1c1: begin r = 8'hc7; g = 8'hbd; b = 8'ha8; end + 10'h1e1: begin r = 8'hc1; g = 8'hb5; b = 8'h9b; end + 10'h201: begin r = 8'hc9; g = 8'hbb; b = 8'ha5; end + 10'h221: begin r = 8'hcf; g = 8'hc0; b = 8'ha8; end + 10'h241: begin r = 8'hd4; g = 8'hc2; b = 8'ha6; end + 10'h261: begin r = 8'hd7; g = 8'hcd; b = 8'hb1; end + 10'h281: begin r = 8'he2; g = 8'hdf; b = 8'hcb; end + 10'h2a1: begin r = 8'hd0; g = 8'hd5; b = 8'hc8; end + 10'h2c1: begin r = 8'h94; g = 8'ha6; b = 8'ha0; end + 10'h2e1: begin r = 8'h8b; g = 8'ha1; b = 8'h9f; end + 10'h301: begin r = 8'h8a; g = 8'h9f; b = 8'h9f; end + 10'h321: begin r = 8'h89; g = 8'h9e; b = 8'h9f; end + 10'h341: begin r = 8'h86; g = 8'h9d; b = 8'h99; end + 10'h361: begin r = 8'h84; g = 8'h9b; b = 8'h97; end + 10'h381: begin r = 8'h83; g = 8'h98; b = 8'h97; end + 10'h3a1: begin r = 8'h82; g = 8'h97; b = 8'h97; end + 10'h3c1: begin r = 8'h7f; g = 8'h93; b = 8'h94; end + 10'h3e1: begin r = 8'h82; g = 8'h94; b = 8'h96; end + 10'h002: begin r = 8'h91; g = 8'hae; b = 8'hae; end + 10'h022: begin r = 8'h96; g = 8'hb0; b = 8'haf; end + 10'h042: begin r = 8'h97; g = 8'hb0; b = 8'hb0; end + 10'h062: begin r = 8'h97; g = 8'haf; b = 8'haf; end + 10'h082: begin r = 8'h96; g = 8'had; b = 8'had; end + 10'h0a2: begin r = 8'h98; g = 8'had; b = 8'hae; end + 10'h0c2: begin r = 8'h99; g = 8'hae; b = 8'haf; end + 10'h0e2: begin r = 8'h98; g = 8'hae; b = 8'haf; end + 10'h102: begin r = 8'h97; g = 8'haf; b = 8'hb1; end + 10'h122: begin r = 8'h9a; g = 8'hb0; b = 8'haf; end + 10'h142: begin r = 8'hb4; g = 8'hbd; b = 8'hb4; end + 10'h162: begin r = 8'hae; g = 8'ha8; b = 8'h92; end + 10'h182: begin r = 8'h7f; g = 8'h6e; b = 8'h4b; end + 10'h1a2: begin r = 8'h6d; g = 8'h59; b = 8'h36; end + 10'h1c2: begin r = 8'h74; g = 8'h5f; b = 8'h43; end + 10'h1e2: begin r = 8'h87; g = 8'h73; b = 8'h55; end + 10'h202: begin r = 8'h97; g = 8'h86; b = 8'h67; end + 10'h222: begin r = 8'h9a; g = 8'h88; b = 8'h6a; end + 10'h242: begin r = 8'ha6; g = 8'h95; b = 8'h73; end + 10'h262: begin r = 8'hb5; g = 8'ha3; b = 8'h7f; end + 10'h282: begin r = 8'hb9; g = 8'ha4; b = 8'h84; end + 10'h2a2: begin r = 8'hc2; g = 8'hb3; b = 8'h9b; end + 10'h2c2: begin r = 8'he7; g = 8'he3; b = 8'hd1; end + 10'h2e2: begin r = 8'hab; g = 8'hb9; b = 8'hac; end + 10'h302: begin r = 8'h90; g = 8'ha3; b = 8'ha1; end + 10'h322: begin r = 8'h8c; g = 8'ha2; b = 8'ha0; end + 10'h342: begin r = 8'h89; g = 8'h9f; b = 8'h9e; end + 10'h362: begin r = 8'h85; g = 8'h9b; b = 8'h99; end + 10'h382: begin r = 8'h87; g = 8'h9b; b = 8'h9c; end + 10'h3a2: begin r = 8'h86; g = 8'h9c; b = 8'h9d; end + 10'h3c2: begin r = 8'h83; g = 8'h97; b = 8'h98; end + 10'h3e2: begin r = 8'h84; g = 8'h96; b = 8'h96; end + 10'h003: begin r = 8'h91; g = 8'haf; b = 8'hb1; end + 10'h023: begin r = 8'h95; g = 8'hb2; b = 8'hb5; end + 10'h043: begin r = 8'h97; g = 8'hb0; b = 8'hb3; end + 10'h063: begin r = 8'h97; g = 8'haf; b = 8'hb2; end + 10'h083: begin r = 8'h98; g = 8'hb0; b = 8'hb0; end + 10'h0a3: begin r = 8'h97; g = 8'hb0; b = 8'hb0; end + 10'h0c3: begin r = 8'h97; g = 8'haf; b = 8'haf; end + 10'h0e3: begin r = 8'h96; g = 8'hb0; b = 8'haf; end + 10'h103: begin r = 8'h98; g = 8'hb2; b = 8'hb0; end + 10'h123: begin r = 8'h9b; g = 8'h97; b = 8'h87; end + 10'h143: begin r = 8'h94; g = 8'h7b; b = 8'h55; end + 10'h163: begin r = 8'hac; g = 8'h87; b = 8'h4c; end + 10'h183: begin r = 8'hbb; g = 8'h8b; b = 8'h3e; end + 10'h1a3: begin r = 8'hb7; g = 8'h8a; b = 8'h46; end + 10'h1c3: begin r = 8'hab; g = 8'h85; b = 8'h51; end + 10'h1e3: begin r = 8'h9b; g = 8'h84; b = 8'h5c; end + 10'h203: begin r = 8'ha8; g = 8'h8b; b = 8'h62; end + 10'h223: begin r = 8'hb6; g = 8'ha1; b = 8'h83; end + 10'h243: begin r = 8'hbd; g = 8'ha8; b = 8'h87; end + 10'h263: begin r = 8'hc4; g = 8'hac; b = 8'h8d; end + 10'h283: begin r = 8'hce; g = 8'hb5; b = 8'h97; end + 10'h2a3: begin r = 8'hdb; g = 8'hc5; b = 8'had; end + 10'h2c3: begin r = 8'hc7; g = 8'hb4; b = 8'h9e; end + 10'h2e3: begin r = 8'hdc; g = 8'hd1; b = 8'hbe; end + 10'h303: begin r = 8'hb5; g = 8'hbf; b = 8'hb9; end + 10'h323: begin r = 8'h8f; g = 8'ha5; b = 8'ha3; end + 10'h343: begin r = 8'h8a; g = 8'ha2; b = 8'ha3; end + 10'h363: begin r = 8'h87; g = 8'ha0; b = 8'h9d; end + 10'h383: begin r = 8'h8b; g = 8'ha0; b = 8'ha1; end + 10'h3a3: begin r = 8'h88; g = 8'h9d; b = 8'h9e; end + 10'h3c3: begin r = 8'h88; g = 8'h9d; b = 8'h9e; end + 10'h3e3: begin r = 8'h86; g = 8'h9b; b = 8'h9a; end + 10'h004: begin r = 8'h93; g = 8'hb1; b = 8'hb3; end + 10'h024: begin r = 8'h94; g = 8'hb2; b = 8'hb4; end + 10'h044: begin r = 8'h96; g = 8'hb1; b = 8'hb4; end + 10'h064: begin r = 8'h98; g = 8'hb0; b = 8'hb4; end + 10'h084: begin r = 8'h97; g = 8'haf; b = 8'hb2; end + 10'h0a4: begin r = 8'h97; g = 8'hb0; b = 8'hb2; end + 10'h0c4: begin r = 8'h95; g = 8'had; b = 8'had; end + 10'h0e4: begin r = 8'h94; g = 8'hac; b = 8'hac; end + 10'h104: begin r = 8'h71; g = 8'h6e; b = 8'h64; end + 10'h124: begin r = 8'h7b; g = 8'h61; b = 8'h38; end + 10'h144: begin r = 8'hb6; g = 8'h8c; b = 8'h45; end + 10'h164: begin r = 8'hca; g = 8'h99; b = 8'h45; end + 10'h184: begin r = 8'hd3; g = 8'h9e; b = 8'h45; end + 10'h1a4: begin r = 8'hd8; g = 8'ha2; b = 8'h56; end + 10'h1c4: begin r = 8'hd9; g = 8'ha6; b = 8'h55; end + 10'h1e4: begin r = 8'hd9; g = 8'haa; b = 8'h61; end + 10'h204: begin r = 8'hcd; g = 8'ha7; b = 8'h6d; end + 10'h224: begin r = 8'hd0; g = 8'hae; b = 8'h7d; end + 10'h244: begin r = 8'hdc; g = 8'hba; b = 8'h99; end + 10'h264: begin r = 8'he0; g = 8'hbe; b = 8'h9f; end + 10'h284: begin r = 8'he6; g = 8'hc4; b = 8'ha9; end + 10'h2a4: begin r = 8'he1; g = 8'hbf; b = 8'h9c; end + 10'h2c4: begin r = 8'hd7; g = 8'hb1; b = 8'h8b; end + 10'h2e4: begin r = 8'hcf; g = 8'hb1; b = 8'h8e; end + 10'h304: begin r = 8'hd1; g = 8'hc6; b = 8'hb5; end + 10'h324: begin r = 8'h98; g = 8'ha8; b = 8'ha4; end + 10'h344: begin r = 8'h8a; g = 8'ha3; b = 8'ha0; end + 10'h364: begin r = 8'h89; g = 8'ha1; b = 8'ha1; end + 10'h384: begin r = 8'h8a; g = 8'h9e; b = 8'h9f; end + 10'h3a4: begin r = 8'h87; g = 8'h9e; b = 8'h9e; end + 10'h3c4: begin r = 8'h86; g = 8'h9b; b = 8'h9c; end + 10'h3e4: begin r = 8'h86; g = 8'h9a; b = 8'h9b; end + 10'h005: begin r = 8'h94; g = 8'hb1; b = 8'hb4; end + 10'h025: begin r = 8'h96; g = 8'hb4; b = 8'hb6; end + 10'h045: begin r = 8'h97; g = 8'hb5; b = 8'hb7; end + 10'h065: begin r = 8'h99; g = 8'hb1; b = 8'hb5; end + 10'h085: begin r = 8'h98; g = 8'hb0; b = 8'hb0; end + 10'h0a5: begin r = 8'h98; g = 8'haf; b = 8'haf; end + 10'h0c5: begin r = 8'h94; g = 8'hac; b = 8'hab; end + 10'h0e5: begin r = 8'h75; g = 8'h79; b = 8'h69; end + 10'h105: begin r = 8'h83; g = 8'h71; b = 8'h55; end + 10'h125: begin r = 8'haf; g = 8'h87; b = 8'h4b; end + 10'h145: begin r = 8'hd3; g = 8'h9a; b = 8'h4b; end + 10'h165: begin r = 8'hd5; g = 8'ha0; b = 8'h47; end + 10'h185: begin r = 8'hde; g = 8'ha6; b = 8'h55; end + 10'h1a5: begin r = 8'he5; g = 8'hab; b = 8'h62; end + 10'h1c5: begin r = 8'he9; g = 8'hb0; b = 8'h68; end + 10'h1e5: begin r = 8'he9; g = 8'haf; b = 8'h66; end + 10'h205: begin r = 8'he9; g = 8'hb0; b = 8'h6b; end + 10'h225: begin r = 8'he2; g = 8'hb0; b = 8'h6f; end + 10'h245: begin r = 8'hdf; g = 8'haf; b = 8'h79; end + 10'h265: begin r = 8'he0; g = 8'hb4; b = 8'h84; end + 10'h285: begin r = 8'he8; g = 8'hba; b = 8'h95; end + 10'h2a5: begin r = 8'he3; g = 8'hb5; b = 8'h84; end + 10'h2c5: begin r = 8'hd5; g = 8'hab; b = 8'h6d; end + 10'h2e5: begin r = 8'hce; g = 8'ha6; b = 8'h69; end + 10'h305: begin r = 8'hcd; g = 8'hb1; b = 8'h8c; end + 10'h325: begin r = 8'hb0; g = 8'hae; b = 8'h9f; end + 10'h345: begin r = 8'h8e; g = 8'ha1; b = 8'h9a; end + 10'h365: begin r = 8'h88; g = 8'ha1; b = 8'h9d; end + 10'h385: begin r = 8'h85; g = 8'h9e; b = 8'h9e; end + 10'h3a5: begin r = 8'h84; g = 8'h9c; b = 8'h9d; end + 10'h3c5: begin r = 8'h86; g = 8'h9b; b = 8'h9c; end + 10'h3e5: begin r = 8'h83; g = 8'h9b; b = 8'h9b; end + 10'h006: begin r = 8'h95; g = 8'hb3; b = 8'hb5; end + 10'h026: begin r = 8'h97; g = 8'hb5; b = 8'hb7; end + 10'h046: begin r = 8'h98; g = 8'hb4; b = 8'hb7; end + 10'h066: begin r = 8'h9a; g = 8'hb2; b = 8'hb7; end + 10'h086: begin r = 8'h99; g = 8'hb0; b = 8'hb1; end + 10'h0a6: begin r = 8'h98; g = 8'hae; b = 8'had; end + 10'h0c6: begin r = 8'h8b; g = 8'h98; b = 8'h92; end + 10'h0e6: begin r = 8'ha0; g = 8'h97; b = 8'h83; end + 10'h106: begin r = 8'ha4; g = 8'h8d; b = 8'h69; end + 10'h126: begin r = 8'hc7; g = 8'h98; b = 8'h48; end + 10'h146: begin r = 8'hd5; g = 8'h9e; b = 8'h4e; end + 10'h166: begin r = 8'hd7; g = 8'ha0; b = 8'h4f; end + 10'h186: begin r = 8'he2; g = 8'ha9; b = 8'h62; end + 10'h1a6: begin r = 8'he9; g = 8'had; b = 8'h70; end + 10'h1c6: begin r = 8'hf4; g = 8'hb8; b = 8'h81; end + 10'h1e6: begin r = 8'hf7; g = 8'hbc; b = 8'h86; end + 10'h206: begin r = 8'hf4; g = 8'hba; b = 8'h80; end + 10'h226: begin r = 8'hf3; g = 8'hb7; b = 8'h7d; end + 10'h246: begin r = 8'hf3; g = 8'hbb; b = 8'h81; end + 10'h266: begin r = 8'hf3; g = 8'hb9; b = 8'h80; end + 10'h286: begin r = 8'hf9; g = 8'hbf; b = 8'h8b; end + 10'h2a6: begin r = 8'hf1; g = 8'hbc; b = 8'h85; end + 10'h2c6: begin r = 8'hea; g = 8'hb6; b = 8'h7f; end + 10'h2e6: begin r = 8'hdc; g = 8'hb2; b = 8'h7d; end + 10'h306: begin r = 8'hd1; g = 8'ha9; b = 8'h78; end + 10'h326: begin r = 8'hc4; g = 8'haa; b = 8'h8b; end + 10'h346: begin r = 8'haf; g = 8'had; b = 8'ha1; end + 10'h366: begin r = 8'h8a; g = 8'ha4; b = 8'h9d; end + 10'h386: begin r = 8'h85; g = 8'ha3; b = 8'h9f; end + 10'h3a6: begin r = 8'h86; g = 8'ha1; b = 8'ha0; end + 10'h3c6: begin r = 8'h87; g = 8'h9f; b = 8'h9f; end + 10'h3e6: begin r = 8'h85; g = 8'h9d; b = 8'h9d; end + 10'h007: begin r = 8'h99; g = 8'hb4; b = 8'hb7; end + 10'h027: begin r = 8'h97; g = 8'hb5; b = 8'hb7; end + 10'h047: begin r = 8'h99; g = 8'hb4; b = 8'hb7; end + 10'h067: begin r = 8'h9c; g = 8'hb3; b = 8'hb7; end + 10'h087: begin r = 8'h9a; g = 8'hb2; b = 8'hb2; end + 10'h0a7: begin r = 8'h95; g = 8'hac; b = 8'haa; end + 10'h0c7: begin r = 8'h6e; g = 8'h6c; b = 8'h5d; end + 10'h0e7: begin r = 8'h94; g = 8'h86; b = 8'h6c; end + 10'h107: begin r = 8'ha9; g = 8'h85; b = 8'h43; end + 10'h127: begin r = 8'hd6; g = 8'ha2; b = 8'h49; end + 10'h147: begin r = 8'hd5; g = 8'ha1; b = 8'h4e; end + 10'h167: begin r = 8'hda; g = 8'ha2; b = 8'h56; end + 10'h187: begin r = 8'he0; g = 8'ha8; b = 8'h5e; end + 10'h1a7: begin r = 8'heb; g = 8'hb1; b = 8'h71; end + 10'h1c7: begin r = 8'hfc; g = 8'hc1; b = 8'h8c; end + 10'h1e7: begin r = 8'hfd; g = 8'hcf; b = 8'ha4; end + 10'h207: begin r = 8'hfe; g = 8'hc7; b = 8'h98; end + 10'h227: begin r = 8'hf9; g = 8'hbb; b = 8'h84; end + 10'h247: begin r = 8'hf6; g = 8'hb8; b = 8'h7f; end + 10'h267: begin r = 8'hfc; g = 8'hbb; b = 8'h85; end + 10'h287: begin r = 8'hff; g = 8'hc5; b = 8'h95; end + 10'h2a7: begin r = 8'hfe; g = 8'hc3; b = 8'h93; end + 10'h2c7: begin r = 8'hf7; g = 8'hc0; b = 8'h96; end + 10'h2e7: begin r = 8'hf3; g = 8'hc1; b = 8'h97; end + 10'h307: begin r = 8'hdd; g = 8'hb0; b = 8'h81; end + 10'h327: begin r = 8'hd1; g = 8'ha9; b = 8'h7c; end + 10'h347: begin r = 8'hbb; g = 8'ha8; b = 8'h91; end + 10'h367: begin r = 8'ha3; g = 8'hb0; b = 8'ha8; end + 10'h387: begin r = 8'h87; g = 8'ha5; b = 8'ha4; end + 10'h3a7: begin r = 8'h8c; g = 8'ha7; b = 8'ha6; end + 10'h3c7: begin r = 8'h8c; g = 8'ha4; b = 8'ha4; end + 10'h3e7: begin r = 8'h89; g = 8'ha1; b = 8'ha1; end + 10'h008: begin r = 8'h9a; g = 8'hb5; b = 8'hb8; end + 10'h028: begin r = 8'h9b; g = 8'hb3; b = 8'hb7; end + 10'h048: begin r = 8'h9b; g = 8'hb3; b = 8'hb7; end + 10'h068: begin r = 8'h9a; g = 8'hb3; b = 8'hb7; end + 10'h088: begin r = 8'h96; g = 8'hb2; b = 8'hb4; end + 10'h0a8: begin r = 8'h8f; g = 8'ha0; b = 8'h9e; end + 10'h0c8: begin r = 8'h86; g = 8'h7c; b = 8'h6d; end + 10'h0e8: begin r = 8'h96; g = 8'h81; b = 8'h68; end + 10'h108: begin r = 8'hc3; g = 8'h8d; b = 8'h44; end + 10'h128: begin r = 8'hd5; g = 8'ha3; b = 8'h4f; end + 10'h148: begin r = 8'hd1; g = 8'h9d; b = 8'h47; end + 10'h168: begin r = 8'hdb; g = 8'ha3; b = 8'h56; end + 10'h188: begin r = 8'hdf; g = 8'ha5; b = 8'h57; end + 10'h1a8: begin r = 8'he7; g = 8'hae; b = 8'h6a; end + 10'h1c8: begin r = 8'hf0; g = 8'hbb; b = 8'h86; end + 10'h1e8: begin r = 8'hfd; g = 8'hcf; b = 8'ha6; end + 10'h208: begin r = 8'hfe; g = 8'hc3; b = 8'h95; end + 10'h228: begin r = 8'hfc; g = 8'hbb; b = 8'h85; end + 10'h248: begin r = 8'hf5; g = 8'hb8; b = 8'h7b; end + 10'h268: begin r = 8'hfb; g = 8'hbb; b = 8'h82; end + 10'h288: begin r = 8'hfd; g = 8'hc2; b = 8'h90; end + 10'h2a8: begin r = 8'hff; g = 8'hc3; b = 8'h98; end + 10'h2c8: begin r = 8'hfe; g = 8'hc9; b = 8'ha4; end + 10'h2e8: begin r = 8'hfe; g = 8'hce; b = 8'haa; end + 10'h308: begin r = 8'hec; g = 8'hba; b = 8'h8a; end + 10'h328: begin r = 8'hd8; g = 8'haa; b = 8'h74; end + 10'h348: begin r = 8'hc6; g = 8'hae; b = 8'h8e; end + 10'h368: begin r = 8'hae; g = 8'hb5; b = 8'haa; end + 10'h388: begin r = 8'h86; g = 8'ha9; b = 8'ha6; end + 10'h3a8: begin r = 8'h88; g = 8'ha6; b = 8'ha4; end + 10'h3c8: begin r = 8'h8d; g = 8'ha7; b = 8'ha6; end + 10'h3e8: begin r = 8'h89; g = 8'ha1; b = 8'ha1; end + 10'h009: begin r = 8'h9a; g = 8'hb4; b = 8'hb7; end + 10'h029: begin r = 8'h9b; g = 8'hb3; b = 8'hb3; end + 10'h049: begin r = 8'h9b; g = 8'hb4; b = 8'hb7; end + 10'h069: begin r = 8'h98; g = 8'hb5; b = 8'hb7; end + 10'h089: begin r = 8'h95; g = 8'hb3; b = 8'hb4; end + 10'h0a9: begin r = 8'h93; g = 8'h9d; b = 8'h98; end + 10'h0c9: begin r = 8'ha0; g = 8'h96; b = 8'h89; end + 10'h0e9: begin r = 8'ha0; g = 8'h85; b = 8'h5f; end + 10'h109: begin r = 8'hcc; g = 8'h97; b = 8'h3d; end + 10'h129: begin r = 8'hd1; g = 8'h9f; b = 8'h43; end + 10'h149: begin r = 8'hd3; g = 8'h9d; b = 8'h49; end + 10'h169: begin r = 8'hd9; g = 8'h9f; b = 8'h4d; end + 10'h189: begin r = 8'hdc; g = 8'ha4; b = 8'h52; end + 10'h1a9: begin r = 8'hdb; g = 8'ha5; b = 8'h5b; end + 10'h1c9: begin r = 8'hec; g = 8'hb6; b = 8'h79; end + 10'h1e9: begin r = 8'hfc; g = 8'hc6; b = 8'h99; end + 10'h209: begin r = 8'hf9; g = 8'hbe; b = 8'h8a; end + 10'h229: begin r = 8'hf0; g = 8'hb6; b = 8'h77; end + 10'h249: begin r = 8'hf0; g = 8'hb6; b = 8'h7a; end + 10'h269: begin r = 8'hf4; g = 8'hb8; b = 8'h7c; end + 10'h289: begin r = 8'hf7; g = 8'hba; b = 8'h82; end + 10'h2a9: begin r = 8'hf8; g = 8'hba; b = 8'h83; end + 10'h2c9: begin r = 8'hfd; g = 8'hc6; b = 8'h9a; end + 10'h2e9: begin r = 8'hff; g = 8'hd0; b = 8'hac; end + 10'h309: begin r = 8'hef; g = 8'hbb; b = 8'h8c; end + 10'h329: begin r = 8'hdc; g = 8'hac; b = 8'h7d; end + 10'h349: begin r = 8'hc8; g = 8'hac; b = 8'h84; end + 10'h369: begin r = 8'hb5; g = 8'hb4; b = 8'ha9; end + 10'h389: begin r = 8'h88; g = 8'haa; b = 8'ha8; end + 10'h3a9: begin r = 8'h87; g = 8'ha8; b = 8'ha5; end + 10'h3c9: begin r = 8'h89; g = 8'ha8; b = 8'ha6; end + 10'h3e9: begin r = 8'h88; g = 8'ha5; b = 8'ha3; end + 10'h00a: begin r = 8'h9c; g = 8'hb4; b = 8'hb7; end + 10'h02a: begin r = 8'h9c; g = 8'hb2; b = 8'hb3; end + 10'h04a: begin r = 8'h9c; g = 8'hb3; b = 8'hb5; end + 10'h06a: begin r = 8'h9a; g = 8'hb3; b = 8'hb5; end + 10'h08a: begin r = 8'h95; g = 8'hb3; b = 8'hb5; end + 10'h0aa: begin r = 8'h93; g = 8'ha1; b = 8'h95; end + 10'h0ca: begin r = 8'h8e; g = 8'h81; b = 8'h68; end + 10'h0ea: begin r = 8'ha7; g = 8'h8c; b = 8'h61; end + 10'h10a: begin r = 8'hc9; g = 8'h95; b = 8'h36; end + 10'h12a: begin r = 8'hce; g = 8'h99; b = 8'h3f; end + 10'h14a: begin r = 8'hd0; g = 8'h9a; b = 8'h45; end + 10'h16a: begin r = 8'hd7; g = 8'h9c; b = 8'h4b; end + 10'h18a: begin r = 8'hd6; g = 8'ha0; b = 8'h4d; end + 10'h1aa: begin r = 8'hda; g = 8'ha6; b = 8'h5b; end + 10'h1ca: begin r = 8'he4; g = 8'haf; b = 8'h6e; end + 10'h1ea: begin r = 8'hf1; g = 8'hb9; b = 8'h86; end + 10'h20a: begin r = 8'hee; g = 8'hb4; b = 8'h7d; end + 10'h22a: begin r = 8'he8; g = 8'hb1; b = 8'h6f; end + 10'h24a: begin r = 8'hed; g = 8'hb3; b = 8'h79; end + 10'h26a: begin r = 8'hea; g = 8'hb4; b = 8'h74; end + 10'h28a: begin r = 8'hec; g = 8'hb1; b = 8'h6c; end + 10'h2aa: begin r = 8'hee; g = 8'hb3; b = 8'h74; end + 10'h2ca: begin r = 8'hf1; g = 8'hb9; b = 8'h81; end + 10'h2ea: begin r = 8'hf0; g = 8'hbb; b = 8'h84; end + 10'h30a: begin r = 8'he3; g = 8'haf; b = 8'h74; end + 10'h32a: begin r = 8'hdd; g = 8'ha9; b = 8'h6e; end + 10'h34a: begin r = 8'hc8; g = 8'ha5; b = 8'h70; end + 10'h36a: begin r = 8'hb6; g = 8'hbb; b = 8'hae; end + 10'h38a: begin r = 8'h88; g = 8'hab; b = 8'ha7; end + 10'h3aa: begin r = 8'h85; g = 8'ha8; b = 8'ha4; end + 10'h3ca: begin r = 8'h88; g = 8'haa; b = 8'ha6; end + 10'h3ea: begin r = 8'h86; g = 8'ha7; b = 8'ha4; end + 10'h00b: begin r = 8'h9d; g = 8'hb5; b = 8'hb7; end + 10'h02b: begin r = 8'h9d; g = 8'hb3; b = 8'hb3; end + 10'h04b: begin r = 8'h9b; g = 8'hb1; b = 8'hb2; end + 10'h06b: begin r = 8'ha4; g = 8'hb2; b = 8'haa; end + 10'h08b: begin r = 8'hc8; g = 8'ha6; b = 8'h75; end + 10'h0ab: begin r = 8'ha4; g = 8'h98; b = 8'h81; end + 10'h0cb: begin r = 8'h8f; g = 8'h79; b = 8'h5f; end + 10'h0eb: begin r = 8'hb3; g = 8'h97; b = 8'h6d; end + 10'h10b: begin r = 8'hca; g = 8'h95; b = 8'h3a; end + 10'h12b: begin r = 8'hcd; g = 8'h9a; b = 8'h40; end + 10'h14b: begin r = 8'hcd; g = 8'h99; b = 8'h43; end + 10'h16b: begin r = 8'hd3; g = 8'h9b; b = 8'h45; end + 10'h18b: begin r = 8'hd4; g = 8'h9c; b = 8'h46; end + 10'h1ab: begin r = 8'hd9; g = 8'ha4; b = 8'h57; end + 10'h1cb: begin r = 8'heb; g = 8'hb2; b = 8'h75; end + 10'h1eb: begin r = 8'hf7; g = 8'hc0; b = 8'h98; end + 10'h20b: begin r = 8'hf4; g = 8'hbb; b = 8'h8d; end + 10'h22b: begin r = 8'hef; g = 8'hb8; b = 8'h80; end + 10'h24b: begin r = 8'he8; g = 8'hb3; b = 8'h76; end + 10'h26b: begin r = 8'he2; g = 8'hae; b = 8'h6d; end + 10'h28b: begin r = 8'he3; g = 8'haf; b = 8'h64; end + 10'h2ab: begin r = 8'he7; g = 8'hb0; b = 8'h6f; end + 10'h2cb: begin r = 8'hef; g = 8'hb8; b = 8'h7f; end + 10'h2eb: begin r = 8'hea; g = 8'hb6; b = 8'h7c; end + 10'h30b: begin r = 8'hdb; g = 8'ha8; b = 8'h64; end + 10'h32b: begin r = 8'hd9; g = 8'ha5; b = 8'h65; end + 10'h34b: begin r = 8'hc4; g = 8'ha1; b = 8'h6e; end + 10'h36b: begin r = 8'ha9; g = 8'hb0; b = 8'ha0; end + 10'h38b: begin r = 8'h85; g = 8'ha9; b = 8'ha6; end + 10'h3ab: begin r = 8'h86; g = 8'ha8; b = 8'ha9; end + 10'h3cb: begin r = 8'h85; g = 8'ha8; b = 8'ha5; end + 10'h3eb: begin r = 8'h83; g = 8'ha6; b = 8'ha2; end + 10'h00c: begin r = 8'h9e; g = 8'hb4; b = 8'hb6; end + 10'h02c: begin r = 8'h9f; g = 8'hb4; b = 8'hb6; end + 10'h04c: begin r = 8'h9d; g = 8'hb5; b = 8'hb8; end + 10'h06c: begin r = 8'hc8; g = 8'ha5; b = 8'h74; end + 10'h08c: begin r = 8'hd5; g = 8'h9e; b = 8'h53; end + 10'h0ac: begin r = 8'hcf; g = 8'ha2; b = 8'h5f; end + 10'h0cc: begin r = 8'ha9; g = 8'h98; b = 8'h79; end + 10'h0ec: begin r = 8'hb4; g = 8'h98; b = 8'h6b; end + 10'h10c: begin r = 8'hc9; g = 8'h9a; b = 8'h3d; end + 10'h12c: begin r = 8'hce; g = 8'h9d; b = 8'h48; end + 10'h14c: begin r = 8'hcd; g = 8'h98; b = 8'h42; end + 10'h16c: begin r = 8'hcb; g = 8'h94; b = 8'h39; end + 10'h18c: begin r = 8'hd0; g = 8'h99; b = 8'h3f; end + 10'h1ac: begin r = 8'hd9; g = 8'ha3; b = 8'h50; end + 10'h1cc: begin r = 8'hee; g = 8'hb4; b = 8'h79; end + 10'h1ec: begin r = 8'hf6; g = 8'hc1; b = 8'h8c; end + 10'h20c: begin r = 8'hfa; g = 8'hbc; b = 8'h88; end + 10'h22c: begin r = 8'hf8; g = 8'hbb; b = 8'h85; end + 10'h24c: begin r = 8'hf6; g = 8'hbe; b = 8'h85; end + 10'h26c: begin r = 8'hef; g = 8'hb7; b = 8'h79; end + 10'h28c: begin r = 8'hf1; g = 8'hb5; b = 8'h76; end + 10'h2ac: begin r = 8'hf3; g = 8'hb8; b = 8'h7c; end + 10'h2cc: begin r = 8'hf8; g = 8'hbc; b = 8'h81; end + 10'h2ec: begin r = 8'he8; g = 8'hb2; b = 8'h76; end + 10'h30c: begin r = 8'hd5; g = 8'ha2; b = 8'h57; end + 10'h32c: begin r = 8'hd6; g = 8'ha3; b = 8'h5a; end + 10'h34c: begin r = 8'hbc; g = 8'h9a; b = 8'h6a; end + 10'h36c: begin r = 8'h9d; g = 8'ha3; b = 8'h92; end + 10'h38c: begin r = 8'h82; g = 8'ha9; b = 8'ha5; end + 10'h3ac: begin r = 8'h82; g = 8'ha7; b = 8'ha7; end + 10'h3cc: begin r = 8'h83; g = 8'ha6; b = 8'ha2; end + 10'h3ec: begin r = 8'h82; g = 8'ha5; b = 8'ha1; end + 10'h00d: begin r = 8'h9e; g = 8'hb3; b = 8'hb7; end + 10'h02d: begin r = 8'h9d; g = 8'hb3; b = 8'hb6; end + 10'h04d: begin r = 8'h9c; g = 8'hb5; b = 8'hb6; end + 10'h06d: begin r = 8'hca; g = 8'h9d; b = 8'h5f; end + 10'h08d: begin r = 8'he7; g = 8'hae; b = 8'h6e; end + 10'h0ad: begin r = 8'hdc; g = 8'ha4; b = 8'h64; end + 10'h0cd: begin r = 8'hb1; g = 8'h9a; b = 8'h6b; end + 10'h0ed: begin r = 8'hb5; g = 8'h9d; b = 8'h70; end + 10'h10d: begin r = 8'hc7; g = 8'h98; b = 8'h49; end + 10'h12d: begin r = 8'hcf; g = 8'h9f; b = 8'h4d; end + 10'h14d: begin r = 8'hcc; g = 8'h98; b = 8'h3d; end + 10'h16d: begin r = 8'hca; g = 8'h94; b = 8'h39; end + 10'h18d: begin r = 8'hd1; g = 8'h99; b = 8'h41; end + 10'h1ad: begin r = 8'hdf; g = 8'haa; b = 8'h5f; end + 10'h1cd: begin r = 8'hf0; g = 8'hb7; b = 8'h7c; end + 10'h1ed: begin r = 8'hef; g = 8'hba; b = 8'h85; end + 10'h20d: begin r = 8'hf1; g = 8'hb7; b = 8'h77; end + 10'h22d: begin r = 8'hfb; g = 8'hbc; b = 8'h86; end + 10'h24d: begin r = 8'hf8; g = 8'hbe; b = 8'h86; end + 10'h26d: begin r = 8'hf7; g = 8'hb9; b = 8'h80; end + 10'h28d: begin r = 8'hf6; g = 8'hb8; b = 8'h7b; end + 10'h2ad: begin r = 8'hf9; g = 8'hba; b = 8'h82; end + 10'h2cd: begin r = 8'hf6; g = 8'hbc; b = 8'h83; end + 10'h2ed: begin r = 8'he9; g = 8'had; b = 8'h72; end + 10'h30d: begin r = 8'hd7; g = 8'ha3; b = 8'h58; end + 10'h32d: begin r = 8'hd1; g = 8'h9f; b = 8'h56; end + 10'h34d: begin r = 8'haf; g = 8'h92; b = 8'h61; end + 10'h36d: begin r = 8'h9a; g = 8'ha3; b = 8'h96; end + 10'h38d: begin r = 8'h81; g = 8'ha9; b = 8'ha5; end + 10'h3ad: begin r = 8'h81; g = 8'ha8; b = 8'ha7; end + 10'h3cd: begin r = 8'h83; g = 8'ha6; b = 8'ha2; end + 10'h3ed: begin r = 8'h81; g = 8'ha5; b = 8'ha1; end + 10'h00e: begin r = 8'h9c; g = 8'hb1; b = 8'hb4; end + 10'h02e: begin r = 8'h9d; g = 8'hb2; b = 8'hb5; end + 10'h04e: begin r = 8'h9b; g = 8'hb2; b = 8'hb6; end + 10'h06e: begin r = 8'hc9; g = 8'h9e; b = 8'h60; end + 10'h08e: begin r = 8'he8; g = 8'hac; b = 8'h63; end + 10'h0ae: begin r = 8'hb7; g = 8'h7d; b = 8'h1c; end + 10'h0ce: begin r = 8'hce; g = 8'h9f; b = 8'h56; end + 10'h0ee: begin r = 8'hb6; g = 8'h85; b = 8'h30; end + 10'h10e: begin r = 8'hcd; g = 8'h93; b = 8'h38; end + 10'h12e: begin r = 8'hd8; g = 8'ha0; b = 8'h4b; end + 10'h14e: begin r = 8'hd0; g = 8'h9b; b = 8'h42; end + 10'h16e: begin r = 8'hcb; g = 8'h98; b = 8'h44; end + 10'h18e: begin r = 8'hbe; g = 8'h8d; b = 8'h41; end + 10'h1ae: begin r = 8'haf; g = 8'h82; b = 8'h42; end + 10'h1ce: begin r = 8'h9d; g = 8'h6c; b = 8'h2a; end + 10'h1ee: begin r = 8'hc1; g = 8'h91; b = 8'h43; end + 10'h20e: begin r = 8'he6; g = 8'hb0; b = 8'h69; end + 10'h22e: begin r = 8'heb; g = 8'hb0; b = 8'h64; end + 10'h24e: begin r = 8'hef; g = 8'hb5; b = 8'h75; end + 10'h26e: begin r = 8'hec; g = 8'hb3; b = 8'h6c; end + 10'h28e: begin r = 8'hec; g = 8'hb0; b = 8'h6a; end + 10'h2ae: begin r = 8'hee; g = 8'hb3; b = 8'h76; end + 10'h2ce: begin r = 8'he8; g = 8'hae; b = 8'h6a; end + 10'h2ee: begin r = 8'hea; g = 8'hb1; b = 8'h6d; end + 10'h30e: begin r = 8'hdf; g = 8'haa; b = 8'h5c; end + 10'h32e: begin r = 8'hc8; g = 8'h99; b = 8'h4d; end + 10'h34e: begin r = 8'ha5; g = 8'h90; b = 8'h6f; end + 10'h36e: begin r = 8'h94; g = 8'ha5; b = 8'h99; end + 10'h38e: begin r = 8'h85; g = 8'ha9; b = 8'ha6; end + 10'h3ae: begin r = 8'h86; g = 8'ha8; b = 8'ha9; end + 10'h3ce: begin r = 8'h85; g = 8'ha7; b = 8'ha7; end + 10'h3ee: begin r = 8'h84; g = 8'ha7; b = 8'ha3; end + 10'h00f: begin r = 8'h9c; g = 8'hb2; b = 8'hb3; end + 10'h02f: begin r = 8'h9c; g = 8'hb1; b = 8'hb6; end + 10'h04f: begin r = 8'h9a; g = 8'hb0; b = 8'hb3; end + 10'h06f: begin r = 8'hb7; g = 8'ha6; b = 8'h82; end + 10'h08f: begin r = 8'hdc; g = 8'ha1; b = 8'h60; end + 10'h0af: begin r = 8'he3; g = 8'haa; b = 8'h67; end + 10'h0cf: begin r = 8'hc9; g = 8'h95; b = 8'h4a; end + 10'h0ef: begin r = 8'hbe; g = 8'h86; b = 8'h31; end + 10'h10f: begin r = 8'hd4; g = 8'h96; b = 8'h32; end + 10'h12f: begin r = 8'hdb; g = 8'ha1; b = 8'h3f; end + 10'h14f: begin r = 8'hdb; g = 8'ha2; b = 8'h4b; end + 10'h16f: begin r = 8'hd2; g = 8'h9e; b = 8'h55; end + 10'h18f: begin r = 8'hb3; g = 8'h84; b = 8'h3b; end + 10'h1af: begin r = 8'h8b; g = 8'h5d; b = 8'h20; end + 10'h1cf: begin r = 8'h81; g = 8'h58; b = 8'h26; end + 10'h1ef: begin r = 8'h8d; g = 8'h61; b = 8'h37; end + 10'h20f: begin r = 8'h9c; g = 8'h6a; b = 8'h19; end + 10'h22f: begin r = 8'hc5; g = 8'h8d; b = 8'h33; end + 10'h24f: begin r = 8'hd6; g = 8'ha2; b = 8'h4f; end + 10'h26f: begin r = 8'hd6; g = 8'ha2; b = 8'h55; end + 10'h28f: begin r = 8'hce; g = 8'h9b; b = 8'h4d; end + 10'h2af: begin r = 8'hd0; g = 8'h9e; b = 8'h53; end + 10'h2cf: begin r = 8'hd4; g = 8'ha4; b = 8'h65; end + 10'h2ef: begin r = 8'he0; g = 8'hae; b = 8'h72; end + 10'h30f: begin r = 8'hdb; g = 8'ha6; b = 8'h5a; end + 10'h32f: begin r = 8'hc4; g = 8'h92; b = 8'h42; end + 10'h34f: begin r = 8'hb5; g = 8'h9a; b = 8'h6c; end + 10'h36f: begin r = 8'h87; g = 8'haa; b = 8'ha5; end + 10'h38f: begin r = 8'h81; g = 8'ha9; b = 8'ha6; end + 10'h3af: begin r = 8'h86; g = 8'ha8; b = 8'ha8; end + 10'h3cf: begin r = 8'h85; g = 8'ha8; b = 8'ha4; end + 10'h3ef: begin r = 8'h84; g = 8'ha7; b = 8'ha3; end + 10'h010: begin r = 8'h9a; g = 8'hb2; b = 8'hb5; end + 10'h030: begin r = 8'h9c; g = 8'hb0; b = 8'hb4; end + 10'h050: begin r = 8'h9a; g = 8'hb0; b = 8'hb3; end + 10'h070: begin r = 8'ha5; g = 8'ha9; b = 8'ha1; end + 10'h090: begin r = 8'hdf; g = 8'ha2; b = 8'h59; end + 10'h0b0: begin r = 8'hdd; g = 8'ha3; b = 8'h59; end + 10'h0d0: begin r = 8'hd8; g = 8'h9f; b = 8'h56; end + 10'h0f0: begin r = 8'hbf; g = 8'h83; b = 8'h23; end + 10'h110: begin r = 8'hd1; g = 8'h92; b = 8'h27; end + 10'h130: begin r = 8'he5; g = 8'ha4; b = 8'h45; end + 10'h150: begin r = 8'hef; g = 8'hae; b = 8'h5e; end + 10'h170: begin r = 8'he7; g = 8'hab; b = 8'h60; end + 10'h190: begin r = 8'hd6; g = 8'ha0; b = 8'h59; end + 10'h1b0: begin r = 8'hcf; g = 8'ha4; b = 8'h75; end + 10'h1d0: begin r = 8'h90; g = 8'h72; b = 8'h41; end + 10'h1f0: begin r = 8'h86; g = 8'h63; b = 8'h39; end + 10'h210: begin r = 8'h75; g = 8'h50; b = 8'h1f; end + 10'h230: begin r = 8'hb3; g = 8'h83; b = 8'h30; end + 10'h250: begin r = 8'hd3; g = 8'ha1; b = 8'h52; end + 10'h270: begin r = 8'hb8; g = 8'h88; b = 8'h38; end + 10'h290: begin r = 8'h85; g = 8'h54; b = 8'h11; end + 10'h2b0: begin r = 8'h74; g = 8'h4e; b = 8'h1c; end + 10'h2d0: begin r = 8'h8c; g = 8'h64; b = 8'h2e; end + 10'h2f0: begin r = 8'ha2; g = 8'h77; b = 8'h39; end + 10'h310: begin r = 8'hba; g = 8'h8a; b = 8'h40; end + 10'h330: begin r = 8'hc6; g = 8'h90; b = 8'h42; end + 10'h350: begin r = 8'hb4; g = 8'h9b; b = 8'h64; end + 10'h370: begin r = 8'h88; g = 8'hab; b = 8'ha9; end + 10'h390: begin r = 8'h84; g = 8'haa; b = 8'ha6; end + 10'h3b0: begin r = 8'h85; g = 8'ha8; b = 8'ha4; end + 10'h3d0: begin r = 8'h85; g = 8'ha8; b = 8'ha4; end + 10'h3f0: begin r = 8'h84; g = 8'ha7; b = 8'ha3; end + 10'h011: begin r = 8'h9c; g = 8'hb1; b = 8'hb6; end + 10'h031: begin r = 8'h9b; g = 8'haf; b = 8'hb5; end + 10'h051: begin r = 8'h9a; g = 8'hb0; b = 8'hb0; end + 10'h071: begin r = 8'h9d; g = 8'haf; b = 8'had; end + 10'h091: begin r = 8'heb; g = 8'hac; b = 8'h6a; end + 10'h0b1: begin r = 8'he8; g = 8'hab; b = 8'h61; end + 10'h0d1: begin r = 8'hd4; g = 8'h9a; b = 8'h42; end + 10'h0f1: begin r = 8'hc2; g = 8'h82; b = 8'h1d; end + 10'h111: begin r = 8'hcd; g = 8'h8d; b = 8'h2a; end + 10'h131: begin r = 8'he4; g = 8'ha3; b = 8'h44; end + 10'h151: begin r = 8'hf6; g = 8'hb2; b = 8'h64; end + 10'h171: begin r = 8'hfd; g = 8'hbb; b = 8'h7f; end + 10'h191: begin r = 8'hef; g = 8'hb2; b = 8'h74; end + 10'h1b1: begin r = 8'he1; g = 8'ha9; b = 8'h5b; end + 10'h1d1: begin r = 8'hc7; g = 8'h93; b = 8'h36; end + 10'h1f1: begin r = 8'hb4; g = 8'h7d; b = 8'h29; end + 10'h211: begin r = 8'hd2; g = 8'h9f; b = 8'h5b; end + 10'h231: begin r = 8'he0; g = 8'ha5; b = 8'h5b; end + 10'h251: begin r = 8'hec; g = 8'hb4; b = 8'h74; end + 10'h271: begin r = 8'h9c; g = 8'h73; b = 8'h3f; end + 10'h291: begin r = 8'h5f; g = 8'h3e; b = 8'h19; end + 10'h2b1: begin r = 8'h60; g = 8'h46; b = 8'h22; end + 10'h2d1: begin r = 8'h5d; g = 8'h48; b = 8'h28; end + 10'h2f1: begin r = 8'h88; g = 8'h63; b = 8'h34; end + 10'h311: begin r = 8'hcb; g = 8'h93; b = 8'h45; end + 10'h331: begin r = 8'hca; g = 8'h93; b = 8'h3e; end + 10'h351: begin r = 8'ha6; g = 8'haa; b = 8'h8a; end + 10'h371: begin r = 8'h83; g = 8'hab; b = 8'ha6; end + 10'h391: begin r = 8'h82; g = 8'ha9; b = 8'ha4; end + 10'h3b1: begin r = 8'h83; g = 8'ha9; b = 8'ha4; end + 10'h3d1: begin r = 8'h85; g = 8'ha8; b = 8'ha4; end + 10'h3f1: begin r = 8'h83; g = 8'ha6; b = 8'ha2; end + 10'h012: begin r = 8'h9b; g = 8'haf; b = 8'hb4; end + 10'h032: begin r = 8'h9a; g = 8'haf; b = 8'hb4; end + 10'h052: begin r = 8'h9a; g = 8'hae; b = 8'hb0; end + 10'h072: begin r = 8'h99; g = 8'haf; b = 8'haf; end + 10'h092: begin r = 8'hd9; g = 8'ha7; b = 8'h61; end + 10'h0b2: begin r = 8'hf8; g = 8'hb4; b = 8'h69; end + 10'h0d2: begin r = 8'hd3; g = 8'h96; b = 8'h41; end + 10'h0f2: begin r = 8'hc5; g = 8'h83; b = 8'h21; end + 10'h112: begin r = 8'hcb; g = 8'h8b; b = 8'h29; end + 10'h132: begin r = 8'hde; g = 8'h9c; b = 8'h3f; end + 10'h152: begin r = 8'hf3; g = 8'haf; b = 8'h5c; end + 10'h172: begin r = 8'hfd; g = 8'hba; b = 8'h7c; end + 10'h192: begin r = 8'hfe; g = 8'hbd; b = 8'h83; end + 10'h1b2: begin r = 8'hf8; g = 8'hb7; b = 8'h75; end + 10'h1d2: begin r = 8'hf4; g = 8'hb2; b = 8'h6a; end + 10'h1f2: begin r = 8'hf6; g = 8'hb5; b = 8'h6b; end + 10'h212: begin r = 8'hf5; g = 8'hb2; b = 8'h6b; end + 10'h232: begin r = 8'he7; g = 8'ha5; b = 8'h50; end + 10'h252: begin r = 8'hf9; g = 8'hbb; b = 8'h87; end + 10'h272: begin r = 8'hef; g = 8'hb7; b = 8'h7e; end + 10'h292: begin r = 8'hd3; g = 8'ha1; b = 8'h6f; end + 10'h2b2: begin r = 8'hd3; g = 8'h9f; b = 8'h56; end + 10'h2d2: begin r = 8'he5; g = 8'hae; b = 8'h6b; end + 10'h2f2: begin r = 8'he6; g = 8'hac; b = 8'h64; end + 10'h312: begin r = 8'he9; g = 8'hae; b = 8'h68; end + 10'h332: begin r = 8'hca; g = 8'h9a; b = 8'h4c; end + 10'h352: begin r = 8'h8a; g = 8'hac; b = 8'ha7; end + 10'h372: begin r = 8'h87; g = 8'hab; b = 8'ha7; end + 10'h392: begin r = 8'h88; g = 8'hac; b = 8'ha8; end + 10'h3b2: begin r = 8'h82; g = 8'ha9; b = 8'ha4; end + 10'h3d2: begin r = 8'h83; g = 8'ha8; b = 8'ha4; end + 10'h3f2: begin r = 8'h83; g = 8'ha6; b = 8'ha2; end + 10'h013: begin r = 8'h9b; g = 8'hb0; b = 8'hb5; end + 10'h033: begin r = 8'h98; g = 8'had; b = 8'haf; end + 10'h053: begin r = 8'h99; g = 8'hac; b = 8'had; end + 10'h073: begin r = 8'h9a; g = 8'hac; b = 8'had; end + 10'h093: begin r = 8'hab; g = 8'ha8; b = 8'h9b; end + 10'h0b3: begin r = 8'hc9; g = 8'ha4; b = 8'h77; end + 10'h0d3: begin r = 8'hb7; g = 8'h91; b = 8'h4c; end + 10'h0f3: begin r = 8'hc3; g = 8'h86; b = 8'h23; end + 10'h113: begin r = 8'hc4; g = 8'h84; b = 8'h17; end + 10'h133: begin r = 8'hd4; g = 8'h94; b = 8'h2d; end + 10'h153: begin r = 8'he8; g = 8'ha5; b = 8'h4f; end + 10'h173: begin r = 8'hfc; g = 8'hb8; b = 8'h7b; end + 10'h193: begin r = 8'hfe; g = 8'hbd; b = 8'h7e; end + 10'h1b3: begin r = 8'hfc; g = 8'hb9; b = 8'h7a; end + 10'h1d3: begin r = 8'hf6; g = 8'hb5; b = 8'h75; end + 10'h1f3: begin r = 8'hf4; g = 8'hb2; b = 8'h6a; end + 10'h213: begin r = 8'hf2; g = 8'hb1; b = 8'h5f; end + 10'h233: begin r = 8'he5; g = 8'ha6; b = 8'h4c; end + 10'h253: begin r = 8'hf8; g = 8'hc1; b = 8'h8d; end + 10'h273: begin r = 8'hf6; g = 8'hbc; b = 8'h84; end + 10'h293: begin r = 8'hff; g = 8'hc7; b = 8'h9e; end + 10'h2b3: begin r = 8'hf4; g = 8'hbd; b = 8'h8d; end + 10'h2d3: begin r = 8'hf7; g = 8'hbf; b = 8'h8f; end + 10'h2f3: begin r = 8'hf6; g = 8'hbc; b = 8'h8c; end + 10'h313: begin r = 8'he7; g = 8'hab; b = 8'h65; end + 10'h333: begin r = 8'hc7; g = 8'ha0; b = 8'h64; end + 10'h353: begin r = 8'h86; g = 8'had; b = 8'ha9; end + 10'h373: begin r = 8'h86; g = 8'had; b = 8'ha8; end + 10'h393: begin r = 8'h87; g = 8'haa; b = 8'ha6; end + 10'h3b3: begin r = 8'h82; g = 8'ha9; b = 8'ha4; end + 10'h3d3: begin r = 8'h84; g = 8'ha8; b = 8'ha4; end + 10'h3f3: begin r = 8'h87; g = 8'haa; b = 8'ha6; end + 10'h014: begin r = 8'h9a; g = 8'hae; b = 8'hb0; end + 10'h034: begin r = 8'h98; g = 8'hac; b = 8'had; end + 10'h054: begin r = 8'h97; g = 8'hab; b = 8'hac; end + 10'h074: begin r = 8'h98; g = 8'hab; b = 8'hab; end + 10'h094: begin r = 8'h9b; g = 8'haa; b = 8'ha8; end + 10'h0b4: begin r = 8'ha1; g = 8'ha9; b = 8'ha3; end + 10'h0d4: begin r = 8'hb2; g = 8'h9a; b = 8'h6b; end + 10'h0f4: begin r = 8'hc3; g = 8'h86; b = 8'h24; end + 10'h114: begin r = 8'hc1; g = 8'h82; b = 8'h18; end + 10'h134: begin r = 8'hca; g = 8'h8a; b = 8'h20; end + 10'h154: begin r = 8'hda; g = 8'h9a; b = 8'h3d; end + 10'h174: begin r = 8'hea; g = 8'ha8; b = 8'h5b; end + 10'h194: begin r = 8'hef; g = 8'hae; b = 8'h59; end + 10'h1b4: begin r = 8'hee; g = 8'hac; b = 8'h58; end + 10'h1d4: begin r = 8'he0; g = 8'h9f; b = 8'h37; end + 10'h1f4: begin r = 8'hd1; g = 8'h90; b = 8'h2c; end + 10'h214: begin r = 8'he1; g = 8'ha3; b = 8'h51; end + 10'h234: begin r = 8'he6; g = 8'ha6; b = 8'h55; end + 10'h254: begin r = 8'hfc; g = 8'hc3; b = 8'h90; end + 10'h274: begin r = 8'heb; g = 8'haf; b = 8'h68; end + 10'h294: begin r = 8'hf0; g = 8'hb5; b = 8'h7f; end + 10'h2b4: begin r = 8'hfe; g = 8'hc4; b = 8'h99; end + 10'h2d4: begin r = 8'hfe; g = 8'hca; b = 8'ha2; end + 10'h2f4: begin r = 8'hf8; g = 8'hb9; b = 8'h87; end + 10'h314: begin r = 8'hdb; g = 8'ha0; b = 8'h51; end + 10'h334: begin r = 8'hb7; g = 8'ha4; b = 8'h79; end + 10'h354: begin r = 8'h88; g = 8'haf; b = 8'had; end + 10'h374: begin r = 8'h89; g = 8'hb0; b = 8'hae; end + 10'h394: begin r = 8'h86; g = 8'had; b = 8'haa; end + 10'h3b4: begin r = 8'h84; g = 8'haa; b = 8'ha5; end + 10'h3d4: begin r = 8'h86; g = 8'ha9; b = 8'ha6; end + 10'h3f4: begin r = 8'h87; g = 8'hab; b = 8'ha6; end + 10'h015: begin r = 8'h9a; g = 8'hae; b = 8'haf; end + 10'h035: begin r = 8'h99; g = 8'hac; b = 8'hac; end + 10'h055: begin r = 8'h99; g = 8'hab; b = 8'hac; end + 10'h075: begin r = 8'h98; g = 8'haa; b = 8'hab; end + 10'h095: begin r = 8'h99; g = 8'ha9; b = 8'haa; end + 10'h0b5: begin r = 8'ha8; g = 8'hb0; b = 8'ha7; end + 10'h0d5: begin r = 8'hb8; g = 8'h9b; b = 8'h6b; end + 10'h0f5: begin r = 8'hbc; g = 8'h85; b = 8'h1c; end + 10'h115: begin r = 8'hc7; g = 8'h8f; b = 8'h2c; end + 10'h135: begin r = 8'hbe; g = 8'h86; b = 8'h24; end + 10'h155: begin r = 8'hca; g = 8'h8e; b = 8'h25; end + 10'h175: begin r = 8'hd7; g = 8'h9a; b = 8'h33; end + 10'h195: begin r = 8'hd7; g = 8'h99; b = 8'h37; end + 10'h1b5: begin r = 8'hd0; g = 8'h90; b = 8'h28; end + 10'h1d5: begin r = 8'hbf; g = 8'h7f; b = 8'h20; end + 10'h1f5: begin r = 8'hd4; g = 8'h97; b = 8'h31; end + 10'h215: begin r = 8'hed; g = 8'hae; b = 8'h64; end + 10'h235: begin r = 8'heb; g = 8'had; b = 8'h64; end + 10'h255: begin r = 8'hfe; g = 8'hd1; b = 8'ha7; end + 10'h275: begin r = 8'hed; g = 8'hb3; b = 8'h74; end + 10'h295: begin r = 8'hc0; g = 8'h8a; b = 8'h35; end + 10'h2b5: begin r = 8'he7; g = 8'ha8; b = 8'h5e; end + 10'h2d5: begin r = 8'hf4; g = 8'hb2; b = 8'h71; end + 10'h2f5: begin r = 8'he8; g = 8'ha8; b = 8'h5e; end + 10'h315: begin r = 8'hd0; g = 8'h9a; b = 8'h49; end + 10'h335: begin r = 8'h99; g = 8'hab; b = 8'ha6; end + 10'h355: begin r = 8'h8e; g = 8'hb0; b = 8'hb0; end + 10'h375: begin r = 8'h8d; g = 8'haf; b = 8'hb0; end + 10'h395: begin r = 8'h8b; g = 8'haf; b = 8'haf; end + 10'h3b5: begin r = 8'h88; g = 8'hae; b = 8'hab; end + 10'h3d5: begin r = 8'h88; g = 8'hab; b = 8'ha7; end + 10'h3f5: begin r = 8'h88; g = 8'haa; b = 8'hab; end + 10'h016: begin r = 8'h9b; g = 8'had; b = 8'hae; end + 10'h036: begin r = 8'h98; g = 8'haa; b = 8'haa; end + 10'h056: begin r = 8'h98; g = 8'ha9; b = 8'ha9; end + 10'h076: begin r = 8'h99; g = 8'haa; b = 8'hab; end + 10'h096: begin r = 8'h9a; g = 8'haa; b = 8'ha7; end + 10'h0b6: begin r = 8'hbc; g = 8'hb4; b = 8'ha5; end + 10'h0d6: begin r = 8'hb3; g = 8'h9a; b = 8'h6a; end + 10'h0f6: begin r = 8'hba; g = 8'h83; b = 8'h28; end + 10'h116: begin r = 8'hc9; g = 8'h94; b = 8'h3b; end + 10'h136: begin r = 8'hb8; g = 8'h88; b = 8'h18; end + 10'h156: begin r = 8'hcc; g = 8'h91; b = 8'h35; end + 10'h176: begin r = 8'hcd; g = 8'h94; b = 8'h38; end + 10'h196: begin r = 8'hc0; g = 8'h85; b = 8'h29; end + 10'h1b6: begin r = 8'hb8; g = 8'h77; b = 8'h2a; end + 10'h1d6: begin r = 8'he9; g = 8'hac; b = 8'h6b; end + 10'h1f6: begin r = 8'hef; g = 8'hb0; b = 8'h6f; end + 10'h216: begin r = 8'hc7; g = 8'h89; b = 8'h33; end + 10'h236: begin r = 8'hdb; g = 8'h9c; b = 8'h4c; end + 10'h256: begin r = 8'he0; g = 8'ha9; b = 8'h60; end + 10'h276: begin r = 8'hd4; g = 8'ha1; b = 8'h5f; end + 10'h296: begin r = 8'h9b; g = 8'h5f; b = 8'h22; end + 10'h2b6: begin r = 8'hbe; g = 8'h7f; b = 8'h23; end + 10'h2d6: begin r = 8'hd3; g = 8'h95; b = 8'h2c; end + 10'h2f6: begin r = 8'hd3; g = 8'h92; b = 8'h28; end + 10'h316: begin r = 8'hca; g = 8'ha6; b = 8'h73; end + 10'h336: begin r = 8'hab; g = 8'hb1; b = 8'ha9; end + 10'h356: begin r = 8'h9f; g = 8'hb6; b = 8'hb4; end + 10'h376: begin r = 8'h91; g = 8'hb1; b = 8'hb0; end + 10'h396: begin r = 8'h8d; g = 8'hb2; b = 8'hb0; end + 10'h3b6: begin r = 8'h8b; g = 8'haf; b = 8'had; end + 10'h3d6: begin r = 8'h85; g = 8'had; b = 8'ha9; end + 10'h3f6: begin r = 8'h84; g = 8'ha9; b = 8'ha7; end + 10'h017: begin r = 8'h99; g = 8'haa; b = 8'hab; end + 10'h037: begin r = 8'h99; g = 8'ha9; b = 8'ha9; end + 10'h057: begin r = 8'h99; g = 8'ha8; b = 8'ha9; end + 10'h077: begin r = 8'h9b; g = 8'haa; b = 8'haa; end + 10'h097: begin r = 8'hab; g = 8'haf; b = 8'ha5; end + 10'h0b7: begin r = 8'hcf; g = 8'hc3; b = 8'haf; end + 10'h0d7: begin r = 8'h9b; g = 8'h76; b = 8'h4a; end + 10'h0f7: begin r = 8'hae; g = 8'h76; b = 8'h1b; end + 10'h117: begin r = 8'hc2; g = 8'h8e; b = 8'h2e; end + 10'h137: begin r = 8'hc0; g = 8'h8e; b = 8'h2c; end + 10'h157: begin r = 8'hcd; g = 8'h97; b = 8'h41; end + 10'h177: begin r = 8'hcf; g = 8'h9b; b = 8'h40; end + 10'h197: begin r = 8'hc0; g = 8'h87; b = 8'h3a; end + 10'h1b7: begin r = 8'he0; g = 8'ha7; b = 8'h55; end + 10'h1d7: begin r = 8'he5; g = 8'haa; b = 8'h5e; end + 10'h1f7: begin r = 8'hec; g = 8'hb0; b = 8'h6a; end + 10'h217: begin r = 8'he6; g = 8'haa; b = 8'h60; end + 10'h237: begin r = 8'hc2; g = 8'h89; b = 8'h2d; end + 10'h257: begin r = 8'hb0; g = 8'h79; b = 8'h24; end + 10'h277: begin r = 8'hcf; g = 8'h9e; b = 8'h55; end + 10'h297: begin r = 8'hb9; g = 8'h8f; b = 8'h4e; end + 10'h2b7: begin r = 8'ha8; g = 8'h6d; b = 8'h1f; end + 10'h2d7: begin r = 8'hcb; g = 8'h8f; b = 8'h24; end + 10'h2f7: begin r = 8'hd6; g = 8'ha0; b = 8'h48; end + 10'h317: begin r = 8'he2; g = 8'hc4; b = 8'h9f; end + 10'h337: begin r = 8'hda; g = 8'hcb; b = 8'hb5; end + 10'h357: begin r = 8'hd8; g = 8'hd1; b = 8'hc5; end + 10'h377: begin r = 8'hd5; g = 8'hd4; b = 8'hc7; end + 10'h397: begin r = 8'hc8; g = 8'hcf; b = 8'hc5; end + 10'h3b7: begin r = 8'hae; g = 8'hc1; b = 8'hbc; end + 10'h3d7: begin r = 8'h95; g = 8'hb1; b = 8'hb0; end + 10'h3f7: begin r = 8'h86; g = 8'hac; b = 8'ha6; end + 10'h018: begin r = 8'h9a; g = 8'ha9; b = 8'ha9; end + 10'h038: begin r = 8'h9a; g = 8'ha7; b = 8'ha6; end + 10'h058: begin r = 8'h9c; g = 8'ha8; b = 8'ha5; end + 10'h078: begin r = 8'h9f; g = 8'ha8; b = 8'h9d; end + 10'h098: begin r = 8'hce; g = 8'hc1; b = 8'had; end + 10'h0b8: begin r = 8'he8; g = 8'hda; b = 8'hc5; end + 10'h0d8: begin r = 8'h92; g = 8'h75; b = 8'h4a; end + 10'h0f8: begin r = 8'hbd; g = 8'h8a; b = 8'h2d; end + 10'h118: begin r = 8'hb4; g = 8'h7e; b = 8'h25; end + 10'h138: begin r = 8'hc2; g = 8'h90; b = 8'h37; end + 10'h158: begin r = 8'hce; g = 8'h98; b = 8'h41; end + 10'h178: begin r = 8'hd6; g = 8'ha3; b = 8'h50; end + 10'h198: begin r = 8'hd1; g = 8'h9d; b = 8'h49; end + 10'h1b8: begin r = 8'hc4; g = 8'h8b; b = 8'h2f; end + 10'h1d8: begin r = 8'hcb; g = 8'h93; b = 8'h44; end + 10'h1f8: begin r = 8'hcb; g = 8'h93; b = 8'h3e; end + 10'h218: begin r = 8'hd8; g = 8'h9c; b = 8'h43; end + 10'h238: begin r = 8'hd5; g = 8'ha0; b = 8'h4f; end + 10'h258: begin r = 8'hc3; g = 8'h92; b = 8'h3e; end + 10'h278: begin r = 8'hc4; g = 8'h95; b = 8'h36; end + 10'h298: begin r = 8'hba; g = 8'h89; b = 8'h41; end + 10'h2b8: begin r = 8'hb3; g = 8'h7e; b = 8'h31; end + 10'h2d8: begin r = 8'hda; g = 8'ha2; b = 8'h4b; end + 10'h2f8: begin r = 8'hd9; g = 8'hae; b = 8'h71; end + 10'h318: begin r = 8'hf3; g = 8'hdd; b = 8'hbc; end + 10'h338: begin r = 8'hd9; g = 8'hc9; b = 8'hb7; end + 10'h358: begin r = 8'hdf; g = 8'hd1; b = 8'hc1; end + 10'h378: begin r = 8'he3; g = 8'hd2; b = 8'hc4; end + 10'h398: begin r = 8'he3; g = 8'hd6; b = 8'hc7; end + 10'h3b8: begin r = 8'he2; g = 8'hdb; b = 8'hcb; end + 10'h3d8: begin r = 8'he1; g = 8'hdf; b = 8'hd1; end + 10'h3f8: begin r = 8'hb4; g = 8'hc2; b = 8'hba; end + 10'h019: begin r = 8'ha5; g = 8'had; b = 8'ha7; end + 10'h039: begin r = 8'hbd; g = 8'hbc; b = 8'hb0; end + 10'h059: begin r = 8'hcf; g = 8'hcb; b = 8'hbb; end + 10'h079: begin r = 8'hca; g = 8'hb9; b = 8'h99; end + 10'h099: begin r = 8'hdf; g = 8'hcc; b = 8'hbd; end + 10'h0b9: begin r = 8'he6; g = 8'hd6; b = 8'hc3; end + 10'h0d9: begin r = 8'he1; g = 8'hd2; b = 8'hb5; end + 10'h0f9: begin r = 8'hc0; g = 8'h87; b = 8'h2b; end + 10'h119: begin r = 8'hb4; g = 8'h80; b = 8'h28; end + 10'h139: begin r = 8'hb8; g = 8'h85; b = 8'h2c; end + 10'h159: begin r = 8'hc7; g = 8'h93; b = 8'h3c; end + 10'h179: begin r = 8'hce; g = 8'h9d; b = 8'h46; end + 10'h199: begin r = 8'hd4; g = 8'h9f; b = 8'h47; end + 10'h1b9: begin r = 8'hd2; g = 8'h9c; b = 8'h41; end + 10'h1d9: begin r = 8'he0; g = 8'ha5; b = 8'h54; end + 10'h1f9: begin r = 8'he7; g = 8'ha8; b = 8'h5f; end + 10'h219: begin r = 8'hde; g = 8'h9a; b = 8'h53; end + 10'h239: begin r = 8'hd8; g = 8'h97; b = 8'h47; end + 10'h259: begin r = 8'hd8; g = 8'h9a; b = 8'h49; end + 10'h279: begin r = 8'hdd; g = 8'ha1; b = 8'h50; end + 10'h299: begin r = 8'hd2; g = 8'ha0; b = 8'h54; end + 10'h2b9: begin r = 8'hca; g = 8'h95; b = 8'h49; end + 10'h2d9: begin r = 8'hd2; g = 8'h9e; b = 8'h4a; end + 10'h2f9: begin r = 8'he6; g = 8'hc4; b = 8'h9f; end + 10'h319: begin r = 8'hfb; g = 8'he2; b = 8'hc6; end + 10'h339: begin r = 8'hdb; g = 8'hcc; b = 8'hba; end + 10'h359: begin r = 8'hea; g = 8'hdb; b = 8'hc8; end + 10'h379: begin r = 8'hd5; g = 8'hc7; b = 8'hb5; end + 10'h399: begin r = 8'hdd; g = 8'hcf; b = 8'hbf; end + 10'h3b9: begin r = 8'hdb; g = 8'hcf; b = 8'hbf; end + 10'h3d9: begin r = 8'hf2; g = 8'he6; b = 8'hd4; end + 10'h3f9: begin r = 8'hdc; g = 8'hd2; b = 8'hc3; end + 10'h01a: begin r = 8'he0; g = 8'hd4; b = 8'hc0; end + 10'h03a: begin r = 8'hec; g = 8'he0; b = 8'hc7; end + 10'h05a: begin r = 8'hf4; g = 8'he6; b = 8'hcd; end + 10'h07a: begin r = 8'hdb; g = 8'hc8; b = 8'ha5; end + 10'h09a: begin r = 8'he1; g = 8'hd0; b = 8'hbc; end + 10'h0ba: begin r = 8'he3; g = 8'hd1; b = 8'hbf; end + 10'h0da: begin r = 8'hee; g = 8'hdd; b = 8'hc4; end + 10'h0fa: begin r = 8'he5; g = 8'hd0; b = 8'hab; end + 10'h11a: begin r = 8'hc2; g = 8'h91; b = 8'h3f; end + 10'h13a: begin r = 8'hae; g = 8'h7d; b = 8'h20; end + 10'h15a: begin r = 8'hbe; g = 8'h8e; b = 8'h3b; end + 10'h17a: begin r = 8'hc8; g = 8'h94; b = 8'h3f; end + 10'h19a: begin r = 8'hd1; g = 8'h9b; b = 8'h41; end + 10'h1ba: begin r = 8'he5; g = 8'had; b = 8'h5a; end + 10'h1da: begin r = 8'he7; g = 8'hab; b = 8'h59; end + 10'h1fa: begin r = 8'he7; g = 8'hab; b = 8'h58; end + 10'h21a: begin r = 8'hd7; g = 8'h9c; b = 8'h3b; end + 10'h23a: begin r = 8'hd1; g = 8'h91; b = 8'h35; end + 10'h25a: begin r = 8'hce; g = 8'h94; b = 8'h36; end + 10'h27a: begin r = 8'hdb; g = 8'ha4; b = 8'h4c; end + 10'h29a: begin r = 8'hde; g = 8'ha5; b = 8'h5a; end + 10'h2ba: begin r = 8'hce; g = 8'h9a; b = 8'h47; end + 10'h2da: begin r = 8'hd4; g = 8'haa; b = 8'h70; end + 10'h2fa: begin r = 8'hf2; g = 8'hd3; b = 8'hb3; end + 10'h31a: begin r = 8'hf6; g = 8'hde; b = 8'hc1; end + 10'h33a: begin r = 8'hdf; g = 8'hcf; b = 8'hbd; end + 10'h35a: begin r = 8'hf3; g = 8'he3; b = 8'hcf; end + 10'h37a: begin r = 8'hc9; g = 8'hb8; b = 8'ha7; end + 10'h39a: begin r = 8'hd1; g = 8'hc2; b = 8'hb2; end + 10'h3ba: begin r = 8'hd8; g = 8'hcc; b = 8'hbb; end + 10'h3da: begin r = 8'hee; g = 8'he1; b = 8'hcc; end + 10'h3fa: begin r = 8'hd4; g = 8'hc8; b = 8'hb8; end + 10'h01b: begin r = 8'hf1; g = 8'he4; b = 8'hca; end + 10'h03b: begin r = 8'hf2; g = 8'he3; b = 8'hc9; end + 10'h05b: begin r = 8'hf9; g = 8'he7; b = 8'hce; end + 10'h07b: begin r = 8'he7; g = 8'hd5; b = 8'hb2; end + 10'h09b: begin r = 8'hef; g = 8'hde; b = 8'hc4; end + 10'h0bb: begin r = 8'he6; g = 8'hd6; b = 8'hc2; end + 10'h0db: begin r = 8'he8; g = 8'hd8; b = 8'hbe; end + 10'h0fb: begin r = 8'hed; g = 8'hdb; b = 8'hc3; end + 10'h11b: begin r = 8'hef; g = 8'he0; b = 8'hc3; end + 10'h13b: begin r = 8'hc6; g = 8'h9d; b = 8'h5f; end + 10'h15b: begin r = 8'hb5; g = 8'h89; b = 8'h3b; end + 10'h17b: begin r = 8'hc0; g = 8'h90; b = 8'h3b; end + 10'h19b: begin r = 8'hca; g = 8'h96; b = 8'h3e; end + 10'h1bb: begin r = 8'hda; g = 8'ha3; b = 8'h4b; end + 10'h1db: begin r = 8'he7; g = 8'haa; b = 8'h50; end + 10'h1fb: begin r = 8'hec; g = 8'hab; b = 8'h4f; end + 10'h21b: begin r = 8'he7; g = 8'ha8; b = 8'h4b; end + 10'h23b: begin r = 8'hde; g = 8'h9f; b = 8'h43; end + 10'h25b: begin r = 8'hda; g = 8'ha1; b = 8'h45; end + 10'h27b: begin r = 8'he3; g = 8'ha9; b = 8'h58; end + 10'h29b: begin r = 8'hdc; g = 8'ha5; b = 8'h52; end + 10'h2bb: begin r = 8'hce; g = 8'h9d; b = 8'h4d; end + 10'h2db: begin r = 8'hd9; g = 8'hc4; b = 8'ha9; end + 10'h2fb: begin r = 8'he1; g = 8'hc9; b = 8'ha1; end + 10'h31b: begin r = 8'hf0; g = 8'hdf; b = 8'hbf; end + 10'h33b: begin r = 8'heb; g = 8'hdc; b = 8'hc4; end + 10'h35b: begin r = 8'hf7; g = 8'he4; b = 8'hd0; end + 10'h37b: begin r = 8'hc5; g = 8'hb5; b = 8'ha1; end + 10'h39b: begin r = 8'hc4; g = 8'hb4; b = 8'ha1; end + 10'h3bb: begin r = 8'hd7; g = 8'hc8; b = 8'hb6; end + 10'h3db: begin r = 8'hef; g = 8'he3; b = 8'hcb; end + 10'h3fb: begin r = 8'hd6; g = 8'hc8; b = 8'hb6; end + 10'h01c: begin r = 8'hfd; g = 8'hf1; b = 8'hd4; end + 10'h03c: begin r = 8'hfd; g = 8'hf0; b = 8'hd3; end + 10'h05c: begin r = 8'hfe; g = 8'hf0; b = 8'hd1; end + 10'h07c: begin r = 8'hfe; g = 8'hf0; b = 8'hcf; end + 10'h09c: begin r = 8'hd1; g = 8'hbd; b = 8'h8e; end + 10'h0bc: begin r = 8'hf3; g = 8'he1; b = 8'hc6; end + 10'h0dc: begin r = 8'hee; g = 8'hdd; b = 8'hc5; end + 10'h0fc: begin r = 8'hf1; g = 8'hde; b = 8'hc6; end + 10'h11c: begin r = 8'hee; g = 8'hdc; b = 8'hc3; end + 10'h13c: begin r = 8'hf2; g = 8'he2; b = 8'hc9; end + 10'h15c: begin r = 8'he1; g = 8'hca; b = 8'ha1; end + 10'h17c: begin r = 8'hb7; g = 8'h91; b = 8'h53; end + 10'h19c: begin r = 8'hba; g = 8'h90; b = 8'h38; end + 10'h1bc: begin r = 8'hca; g = 8'h98; b = 8'h3c; end + 10'h1dc: begin r = 8'hd5; g = 8'h9e; b = 8'h3c; end + 10'h1fc: begin r = 8'he6; g = 8'ha5; b = 8'h46; end + 10'h21c: begin r = 8'hf2; g = 8'hae; b = 8'h58; end + 10'h23c: begin r = 8'hf9; g = 8'hb5; b = 8'h65; end + 10'h25c: begin r = 8'hf4; g = 8'hb2; b = 8'h6b; end + 10'h27c: begin r = 8'hde; g = 8'ha6; b = 8'h51; end + 10'h29c: begin r = 8'hd8; g = 8'ha5; b = 8'h59; end + 10'h2bc: begin r = 8'he8; g = 8'hca; b = 8'ha6; end + 10'h2dc: begin r = 8'he8; g = 8'hd5; b = 8'hb6; end + 10'h2fc: begin r = 8'hcd; g = 8'hb9; b = 8'h8f; end + 10'h31c: begin r = 8'hf6; g = 8'he3; b = 8'hc6; end + 10'h33c: begin r = 8'hf2; g = 8'he2; b = 8'hc9; end + 10'h35c: begin r = 8'hf8; g = 8'he6; b = 8'hcd; end + 10'h37c: begin r = 8'hcd; g = 8'hbd; b = 8'ha7; end + 10'h39c: begin r = 8'hbc; g = 8'had; b = 8'h9a; end + 10'h3bc: begin r = 8'hd7; g = 8'hc6; b = 8'hb5; end + 10'h3dc: begin r = 8'hf0; g = 8'he1; b = 8'hca; end + 10'h3fc: begin r = 8'hda; g = 8'hcd; b = 8'hba; end + 10'h01d: begin r = 8'hff; g = 8'hf8; b = 8'hd8; end + 10'h03d: begin r = 8'hff; g = 8'hf5; b = 8'hd3; end + 10'h05d: begin r = 8'hff; g = 8'hf4; b = 8'hd0; end + 10'h07d: begin r = 8'hff; g = 8'hf5; b = 8'hd2; end + 10'h09d: begin r = 8'hef; g = 8'he5; b = 8'hb9; end + 10'h0bd: begin r = 8'hf4; g = 8'he2; b = 8'hba; end + 10'h0dd: begin r = 8'hfa; g = 8'he7; b = 8'hc7; end + 10'h0fd: begin r = 8'hf9; g = 8'he6; b = 8'hc9; end + 10'h11d: begin r = 8'hf6; g = 8'he4; b = 8'hc7; end + 10'h13d: begin r = 8'hf4; g = 8'he3; b = 8'hc3; end + 10'h15d: begin r = 8'hf6; g = 8'he0; b = 8'hc1; end + 10'h17d: begin r = 8'hee; g = 8'hd8; b = 8'hb7; end + 10'h19d: begin r = 8'hb9; g = 8'h97; b = 8'h60; end + 10'h1bd: begin r = 8'hb2; g = 8'h8b; b = 8'h46; end + 10'h1dd: begin r = 8'hc5; g = 8'h97; b = 8'h44; end + 10'h1fd: begin r = 8'hcc; g = 8'h94; b = 8'h3b; end + 10'h21d: begin r = 8'hd1; g = 8'h98; b = 8'h3a; end + 10'h23d: begin r = 8'hd3; g = 8'h99; b = 8'h3d; end + 10'h25d: begin r = 8'hd3; g = 8'h99; b = 8'h37; end + 10'h27d: begin r = 8'he1; g = 8'hb5; b = 8'h73; end + 10'h29d: begin r = 8'hf9; g = 8'he5; b = 8'hc4; end + 10'h2bd: begin r = 8'he7; g = 8'hcf; b = 8'hb0; end + 10'h2dd: begin r = 8'hf5; g = 8'hde; b = 8'hc0; end + 10'h2fd: begin r = 8'hf5; g = 8'he1; b = 8'hba; end + 10'h31d: begin r = 8'hea; g = 8'hd7; b = 8'hb2; end + 10'h33d: begin r = 8'hf6; g = 8'he8; b = 8'hce; end + 10'h35d: begin r = 8'hf8; g = 8'he9; b = 8'hd2; end + 10'h37d: begin r = 8'hda; g = 8'hcb; b = 8'hb6; end + 10'h39d: begin r = 8'hbc; g = 8'had; b = 8'h9a; end + 10'h3bd: begin r = 8'hd7; g = 8'hc6; b = 8'hb3; end + 10'h3dd: begin r = 8'hef; g = 8'he1; b = 8'hcc; end + 10'h3fd: begin r = 8'heb; g = 8'he1; b = 8'hcd; end + 10'h01e: begin r = 8'hff; g = 8'hf8; b = 8'hd8; end + 10'h03e: begin r = 8'hff; g = 8'hf5; b = 8'hd0; end + 10'h05e: begin r = 8'hff; g = 8'hf5; b = 8'hcf; end + 10'h07e: begin r = 8'hff; g = 8'hf6; b = 8'hd0; end + 10'h09e: begin r = 8'hff; g = 8'hf9; b = 8'hd7; end + 10'h0be: begin r = 8'he0; g = 8'hd2; b = 8'ha4; end + 10'h0de: begin r = 8'hff; g = 8'hf3; b = 8'hce; end + 10'h0fe: begin r = 8'hff; g = 8'hf0; b = 8'hcd; end + 10'h11e: begin r = 8'hfe; g = 8'hec; b = 8'hcb; end + 10'h13e: begin r = 8'hfc; g = 8'hea; b = 8'hc9; end + 10'h15e: begin r = 8'hfd; g = 8'he8; b = 8'hca; end + 10'h17e: begin r = 8'hfc; g = 8'he8; b = 8'hca; end + 10'h19e: begin r = 8'he8; g = 8'hd5; b = 8'hb7; end + 10'h1be: begin r = 8'hc6; g = 8'hb5; b = 8'h9f; end + 10'h1de: begin r = 8'hbc; g = 8'had; b = 8'h8d; end + 10'h1fe: begin r = 8'hc5; g = 8'hac; b = 8'h7f; end + 10'h21e: begin r = 8'hcb; g = 8'hb0; b = 8'h81; end + 10'h23e: begin r = 8'hca; g = 8'hb0; b = 8'h82; end + 10'h25e: begin r = 8'he7; g = 8'hcc; b = 8'hab; end + 10'h27e: begin r = 8'hfa; g = 8'he5; b = 8'hc7; end + 10'h29e: begin r = 8'hed; g = 8'hd9; b = 8'hb7; end + 10'h2be: begin r = 8'he9; g = 8'hd4; b = 8'hb6; end + 10'h2de: begin r = 8'hfb; g = 8'he3; b = 8'hc4; end + 10'h2fe: begin r = 8'hff; g = 8'hef; b = 8'hcd; end + 10'h31e: begin r = 8'he3; g = 8'hcf; b = 8'ha3; end + 10'h33e: begin r = 8'hfa; g = 8'he9; b = 8'hcf; end + 10'h35e: begin r = 8'hf6; g = 8'he8; b = 8'hd0; end + 10'h37e: begin r = 8'he2; g = 8'hd4; b = 8'hbf; end + 10'h39e: begin r = 8'hc1; g = 8'hb0; b = 8'h9e; end + 10'h3be: begin r = 8'hd3; g = 8'hc6; b = 8'hb1; end + 10'h3de: begin r = 8'hfc; g = 8'hf4; b = 8'hde; end + 10'h3fe: begin r = 8'hfd; g = 8'hf9; b = 8'he4; end + 10'h01f: begin r = 8'hfe; g = 8'hf9; b = 8'hd5; end + 10'h03f: begin r = 8'hff; g = 8'hf7; b = 8'hd0; end + 10'h05f: begin r = 8'hfe; g = 8'hf5; b = 8'hce; end + 10'h07f: begin r = 8'hff; g = 8'hf7; b = 8'hd0; end + 10'h09f: begin r = 8'hfe; g = 8'hf7; b = 8'hd4; end + 10'h0bf: begin r = 8'hf6; g = 8'hee; b = 8'hc7; end + 10'h0df: begin r = 8'hf0; g = 8'he6; b = 8'hb4; end + 10'h0ff: begin r = 8'hfe; g = 8'hfa; b = 8'hdb; end + 10'h11f: begin r = 8'hfc; g = 8'hf5; b = 8'hd8; end + 10'h13f: begin r = 8'hfe; g = 8'hf2; b = 8'hd0; end + 10'h15f: begin r = 8'hfd; g = 8'hee; b = 8'hcd; end + 10'h17f: begin r = 8'hfe; g = 8'hea; b = 8'hc8; end + 10'h19f: begin r = 8'hfb; g = 8'he6; b = 8'hc5; end + 10'h1bf: begin r = 8'he6; g = 8'hd2; b = 8'hb3; end + 10'h1df: begin r = 8'hbe; g = 8'hb1; b = 8'h93; end + 10'h1ff: begin r = 8'hcb; g = 8'hbc; b = 8'ha1; end + 10'h21f: begin r = 8'hdc; g = 8'hd1; b = 8'hb1; end + 10'h23f: begin r = 8'hda; g = 8'hcc; b = 8'had; end + 10'h25f: begin r = 8'hf5; g = 8'he5; b = 8'hc8; end + 10'h27f: begin r = 8'hd4; g = 8'hc5; b = 8'ha3; end + 10'h29f: begin r = 8'hde; g = 8'hcb; b = 8'hac; end + 10'h2bf: begin r = 8'hef; g = 8'hdb; b = 8'hbd; end + 10'h2df: begin r = 8'hfc; g = 8'he6; b = 8'hc3; end + 10'h2ff: begin r = 8'hfd; g = 8'he9; b = 8'hc6; end + 10'h31f: begin r = 8'he3; g = 8'hcf; b = 8'ha4; end + 10'h33f: begin r = 8'hf8; g = 8'he8; b = 8'hcb; end + 10'h35f: begin r = 8'hf3; g = 8'he5; b = 8'hca; end + 10'h37f: begin r = 8'he8; g = 8'hd9; b = 8'hc4; end + 10'h39f: begin r = 8'hcf; g = 8'hbf; b = 8'had; end + 10'h3bf: begin r = 8'hf3; g = 8'hea; b = 8'hd7; end + 10'h3df: begin r = 8'hff; g = 8'hfe; b = 8'hf0; end + 10'h3ff: begin r = 8'hfa; g = 8'hf8; b = 8'he5; end +endcase +end +endmodule diff --git a/imagegenerate.py b/imagegenerate.py new file mode 100644 index 0000000..29670f4 --- /dev/null +++ b/imagegenerate.py @@ -0,0 +1,20 @@ +from PIL import Image +im = Image.open('image.png') + +width, height = im.size + +print 'module image(input [4:0] x, input [4:0] y, output reg [7:0] r, output reg [7:0] g, output reg [7:0] b);' +print 'wire [9:0] ix = x << 5 | y;' +print 'always @(ix) begin' +print 'case(ix)' + +for y in range(width): + for x in range(height): + ix = x << 5 | y + r, g, b = im.getpixel((x, y)) + print "\t10'h{:03x}: begin r = 8'h{:02x}; g = 8'h{:02x}; b = 8'h{:02x}; end".format(ix, r, g, b) + +print 'endcase' +print 'end' +print 'endmodule' + diff --git a/top.v b/top.v new file mode 100644 index 0000000..774fa1d --- /dev/null +++ b/top.v @@ -0,0 +1,244 @@ +`timescale 1ns / 1ps + +module top( + input clk, + input reset, + output reg led0, + output reg led1, + + output LED_DR1, + output LED_DR2, + output LED_DG1, + output LED_DG2, + output LED_DB1, + output LED_DB2, + + output LED_S0, + output LED_S1, + output LED_S2, + + output LED_CLK, + output reg LED_STB, + output LED_OE + ); + +reg [25:0] counter; + +always @(posedge clk) +begin + if (~reset) begin + counter <= 0; + end else begin + if (counter == 50000000) begin + counter <= 0; + led0 <= ~led0; + led1 <= 0; + end else begin + counter <= (counter + 1) & {26{1'b1}}; + end + end +end + +reg [2:0] bank; +assign LED_S0 = bank[0]; +assign LED_S1 = bank[1]; +assign LED_S2 = bank[2]; + +`define WIDTH 64 +wire pixel_clock = counter[2]; + +reg [6:0] pixel_counter; + +wire pixel_burst = (pixel_counter < `WIDTH); +assign LED_CLK = pixel_burst ? counter[3] : 0; + +`define STATE_IDLE 3'b000 +`define STATE_WAIT_FOR_BURST_END 3'b001 +`define STATE_LATCH1 3'b010 +`define STATE_LATCH2 3'b011 +`define STATE_LATCH3 3'b100 +`define STATE_LATCH4 3'b101 +`define STATE_LATCH5 3'b110 +reg [2:0] state; + +reg LED_OE; + +reg [3:0] cur_bit; +reg [11:0] delay; +wire [11:0] brightness = 3000; +reg [11:0] brightness_delay; + +always @(posedge pixel_clock or negedge reset) begin + if (~reset) begin + pixel_counter <= `WIDTH; + bank <= 0; + state <= `STATE_IDLE; + LED_STB <= 0; + cur_bit <= 11; + delay <= 0; + LED_OE <= 1; + end else begin + // Pixel clock iteration + if (counter[3] == 1) begin + if (pixel_counter < `WIDTH) begin + pixel_counter <= pixel_counter + 1; + end + end + + // Row logic + case (state) + `STATE_IDLE: begin + state <= `STATE_WAIT_FOR_BURST_END; + pixel_counter <= 0; + LED_STB <= 0; + LED_OE <= 0; + end + `STATE_WAIT_FOR_BURST_END: begin + if (delay > 0) + delay <= delay - 1; + + if (brightness_delay > 0) + brightness_delay <= brightness_delay - 1; + else + LED_OE <= 1; + + if (delay == 0 && ~pixel_burst) begin + state <= `STATE_LATCH1; + LED_OE <= 1; + delay <= (1 << (cur_bit)); + brightness_delay <= (1 << (cur_bit))/16; + end + LED_STB <= 0; + end + `STATE_LATCH1: begin + LED_STB <= 0; + state <= `STATE_LATCH2; + end + `STATE_LATCH2: begin + LED_STB <= 1; + state <= `STATE_LATCH3; + end + `STATE_LATCH3: begin + LED_STB <= 1; + state <= `STATE_LATCH4; + end + `STATE_LATCH4: begin + LED_STB <= 0; + state <= `STATE_LATCH5; + end + `STATE_LATCH5: begin + LED_STB <= 0; + state <= `STATE_IDLE; + bank <= bank + 1; + if (bank == 7) begin + if (cur_bit == 0) begin + cur_bit <= 11; + end else begin + cur_bit <= cur_bit - 1; + end + end + end + endcase + end +end + +reg [20:0] animation_counter; +always @(posedge clk) begin + if (~reset) begin + animation_counter <= 0; + end else begin + if (animation_counter < 2000000) + animation_counter <= animation_counter + 1; + else + animation_counter <= 0; + end +end +reg [4:0] color_cycle; +always @(posedge animation_counter[20] or negedge reset) begin + if (~reset) begin + color_cycle <= 0; + end else begin + color_cycle <= color_cycle + 1; + end +end + +wire [4:0] cur_x = pixel_burst ? (31-pixel_counter[4:0]) : 0; +wire [2:0] cur_row = 7-(bank+1); +wire cur_screen = pixel_burst ? pixel_counter[5] : 0; + +wire [4:0] cur_y1 = (cur_screen << 4) + cur_row + 8; +wire [4:0] cur_y2 = (cur_screen << 4) + cur_row; + +//wire [7:0] color_r1 = (cur_y1 == 31) ? 150 : 0; +//wire [7:0] color_g1 = 0; +//wire [7:0] color_b1 = 0; +//wire [7:0] color_r2 = 0; +//wire [7:0] color_g2 = (cur_y2 == 0) ? 150 : 0; +//wire [7:0] color_b2 = 0; + +wire [7:0] color_r1; +wire [7:0] color_g1; +wire [7:0] color_b1; +wire [7:0] color_r2; +wire [7:0] color_g2; +wire [7:0] color_b2; + + +image image1( + .x(cur_x+color_cycle), + .y(cur_y1+(color_cycle<<1)), + .r(color_r1), + .g(color_g1), + .b(color_b1) +); + +image image2( + .x(cur_x+color_cycle), + .y(cur_y2+(color_cycle<<1)), + .r(color_r2), + .g(color_g2), + .b(color_b2) +); + +wire [11:0] color_r1_gamma; +wire [11:0] color_g1_gamma; +wire [11:0] color_b1_gamma; +wire [11:0] color_r2_gamma; +wire [11:0] color_g2_gamma; +wire [11:0] color_b2_gamma; + +gamma gamma_r1( + .in(color_r1), + .out(color_r1_gamma) +); +gamma gamma_g1( + .in(color_g1), + .out(color_g1_gamma) +); +gamma gamma_b1( + .in(color_b1), + .out(color_b1_gamma) +); + +gamma gamma_r2( + .in(color_r2), + .out(color_r2_gamma) +); +gamma gamma_g2( + .in(color_g2), + .out(color_g2_gamma) +); +gamma gamma_b2( + .in(color_b2), + .out(color_b2_gamma) +); + + +assign LED_DR1 = pixel_burst ? (color_r1_gamma >> cur_bit) : 0; +assign LED_DR2 = pixel_burst ? (color_r2_gamma >> cur_bit) : 0; +assign LED_DG1 = pixel_burst ? (color_g1_gamma >> cur_bit) : 0; +assign LED_DG2 = pixel_burst ? (color_g2_gamma >> cur_bit) : 0; +assign LED_DB1 = pixel_burst ? (color_b1_gamma >> cur_bit) : 0; +assign LED_DB2 = pixel_burst ? (color_b2_gamma >> cur_bit) : 0; + +endmodule