#!/usr/bin/env python3 # SPDX-License-Identifier: MIT import sys, pathlib sys.path.append(str(pathlib.Path(__file__).resolve().parents[1])) from m1n1.setup import * from m1n1.hw.dart import DART from m1n1.hw.scaler import * from m1n1.utils import * import struct import time from PIL import Image, ImageDraw SCALER_ADT = '/arm-io/scaler0' DART_ADT = '/arm-io/dart-scaler0' p.pmgr_adt_clocks_enable(DART_ADT) p.pmgr_adt_clocks_enable(SCALER_ADT) dart = DART.from_adt(u, DART_ADT) dart.initialize() scaler_base, _ = u.adt[SCALER_ADT].get_reg(0) apiodma_base, _ = u.adt[SCALER_ADT].get_reg(1) dpe_ctrl_base, _ = u.adt[SCALER_ADT].get_reg(2) scaler = ScalerMainRegs(u, scaler_base) def dpe_start(): p.write32(dpe_ctrl_base + 0x400, 0x1) p.write32(dpe_ctrl_base + 0x404, 0x1) p.write32(dpe_ctrl_base + 0x438, 0xf) p.write32(dpe_ctrl_base + 0x43c, 0x5) p.write32(dpe_ctrl_base + 0x408, 0x1) p.write32(dpe_ctrl_base + 0x440, 0x5) p.write32(dpe_ctrl_base + 0x444, 0x4) p.write32(dpe_ctrl_base + 0x40c, 0x1) p.write32(dpe_ctrl_base + 0x448, 0x5) p.write32(dpe_ctrl_base + 0x44c, 0x5) p.write32(dpe_ctrl_base + 0x410, 0x1) p.write32(dpe_ctrl_base + 0x450, 0x7) p.write32(dpe_ctrl_base + 0x454, 0x7) p.write32(dpe_ctrl_base + 0x414, 0x1) p.write32(dpe_ctrl_base + 0x458, 0xd) p.write32(dpe_ctrl_base + 0x45c, 0xc) p.write32(dpe_ctrl_base + 0x418, 0x1) p.write32(dpe_ctrl_base + 0x460, 0x13) p.write32(dpe_ctrl_base + 0x464, 0x12) p.write32(dpe_ctrl_base + 0x41c, 0x1) p.write32(dpe_ctrl_base + 0x468, 0x9) p.write32(dpe_ctrl_base + 0x46c, 0xa) p.write32(dpe_ctrl_base + 0x420, 0x1) p.write32(dpe_ctrl_base + 0x470, 0x33) p.write32(dpe_ctrl_base + 0x474, 0x2c) p.write32(dpe_ctrl_base + 0x424, 0x1) p.write32(dpe_ctrl_base + 0x478, 0x15) p.write32(dpe_ctrl_base + 0x47c, 0x15) p.write32(dpe_ctrl_base + 0x428, 0x1) p.write32(dpe_ctrl_base + 0x480, 0xe) p.write32(dpe_ctrl_base + 0x484, 0x5) p.write32(dpe_ctrl_base + 0x42c, 0x1) p.write32(dpe_ctrl_base + 0x488, 0x27) p.write32(dpe_ctrl_base + 0x48c, 0x15) p.write32(dpe_ctrl_base + 0x430, 0x1) p.write32(dpe_ctrl_base + 0x490, 0x15) p.write32(dpe_ctrl_base + 0x494, 0xe) p.write32(dpe_ctrl_base + 0x434, 0x1) p.write32(dpe_ctrl_base + 0x498, 0x0) p.write32(dpe_ctrl_base + 0x49c, 0x0) p.write32(dpe_ctrl_base + 0x4, 0x1000) p.write32(dpe_ctrl_base + 0x0, 0x101) def dpe_stop(): p.write32(dpe_ctrl_base + 0x0, 0x103) while p.read32(dpe_ctrl_base + 0x0) & 0xC != 4: ... p.write32(dpe_ctrl_base + 0x0, p.read32(dpe_ctrl_base + 0x0) & 0xfffffffc) print(f"Hardware version {scaler.HW_VERSION.val:08X}") scaler.RESET = 1 scaler.RESET = 0 print(f"Hardware version after reset {scaler.HW_VERSION.val:08X}") if len(sys.argv) < 3: print(f"Usage: {sys.argv[0]} input.png output.png") sys.exit(-1) input_image_fn = sys.argv[1] output_image_fn = sys.argv[2] in_data = b'' with Image.open(input_image_fn) as im: in_W, in_H = im.size in_BYTESPP = 4 in_STRIDE = in_W * in_BYTESPP in_SZ = in_W * in_H * in_BYTESPP for y in range(in_H): for x in range(in_W): r, g, b = im.getpixel((x, y)) in_data += struct.pack("BBBB", r, g, b, 255) out_W = in_W * 5 out_H = in_H * 3 out_BYTESPP = 4 out_STRIDE = out_W * out_BYTESPP out_SZ = out_W * out_H * out_BYTESPP * 2 # HACK: double size for testing purposes for i in range(in_W * in_H): in_data += struct.pack("<I", i & 0xFFFFFFFF) # chexdump(in_data) out_buf_phys = u.heap.memalign(0x4000, out_SZ) iface.writemem(out_buf_phys, b'\xAA' * out_SZ) out_buf_iova = dart.iomap(0, out_buf_phys, out_SZ) print(f"Output buffer @ phys {out_buf_phys:016X} iova {out_buf_iova:016X}") in_buf_phys = u.heap.memalign(0x4000, in_SZ) iface.writemem(in_buf_phys, in_data) in_buf_iova = dart.iomap(0, in_buf_phys, in_SZ) print(f"Input buffer @ phys {in_buf_phys:016X} iova {in_buf_iova:016X}") dart.dump_all() dpe_start() # reset CM p.write32(scaler_base + 0x3800, 0x0) # RDMA control p.write32(scaler_base + 0x180, 0x1) p.write32(scaler_base + 0x184, 0x1e) p.write32(scaler_base + 0x188, 0x0) p.write32(scaler_base + 0x18c, 0x0) p.write32(scaler_base + 0x190, 0x0) # transform config (flip/rotate) scaler.FLIP_ROTATE.set() # cache hints scaler.CACHE_HINTS_THING0[0].val = 0x7d311 scaler.CACHE_HINTS_THING0[1].val = 0x7d311 scaler.CACHE_HINTS_THING0[2].val = 0x7d311 scaler.CACHE_HINTS_THING0[3].val = 0x7d311 scaler.CACHE_HINTS_THING2[0].val = 0xbd311 scaler.CACHE_HINTS_THING2[1].val = 0xbd311 scaler.CACHE_HINTS_THING2[2].val = 0xbd311 # scaler.CACHE_HINTS_THING2[3].val = 0xbd311 scaler.CACHE_HINTS_THING1[0].val = 0x707 scaler.CACHE_HINTS_THING1[1].val = 0x707 scaler.CACHE_HINTS_THING1[2].val = 0x707 scaler.CACHE_HINTS_THING1[3].val = 0x707 scaler.CACHE_HINTS_THING3[0].val = 0xc0bd307 scaler.CACHE_HINTS_THING3[1].val = 0xc0bd307 scaler.CACHE_HINTS_THING3[2].val = 0xc0bd307 # scaler.CACHE_HINTS_THING3[3].val = 0xc0bd307 # tunables scaler.TUNABLES_THING0[0].val = 0x20 scaler.TUNABLES_THING0[1].val = 0x20 scaler.TUNABLES_THING0[2].val = 0x20 scaler.TUNABLES_THING0[3].val = 0x20 scaler.TUNABLES_THING1[0].val = 0x4000720 scaler.TUNABLES_THING1[1].val = 0x4000720 scaler.TUNABLES_THING1[2].val = 0x4000720 # scaler.TUNABLES_THING1[3].val = 0x4000720 # dest base addresses scaler.DST_PLANE1_LO = 0 scaler.DST_PLANE1_HI = 0 scaler.DST_PLANE0_LO = out_buf_iova & 0xFFFFFFFF scaler.DST_PLANE0_HI = out_buf_iova >> 32 scaler.DST_PLANE2_LO = 0 scaler.DST_PLANE2_HI = 0 # src base addresses scaler.SRC_PLANE1_LO = 0 scaler.SRC_PLANE1_HI = 0 scaler.SRC_PLANE0_LO = in_buf_iova & 0xFFFFFFFF scaler.SRC_PLANE0_HI = in_buf_iova >> 32 scaler.SRC_PLANE2_LO = 0 scaler.SRC_PLANE2_HI = 0 # dest stride scaler.DST_PLANE1_STRIDE = 0 scaler.DST_PLANE0_STRIDE = out_STRIDE scaler.DST_PLANE2_STRIDE = 0 # src stride scaler.SRC_PLANE1_STRIDE = 0 scaler.SRC_PLANE0_STRIDE = in_STRIDE scaler.SRC_PLANE2_STRIDE = 0 # dest offset scaler.DST_PLANE1_OFFSET = 0 scaler.DST_PLANE0_OFFSET = 0 scaler.DST_PLANE2_OFFSET = 0 # src offset scaler.SRC_PLANE1_OFFSET = 0 scaler.SRC_PLANE0_OFFSET = 0 scaler.SRC_PLANE2_OFFSET = 0 # dest sizes scaler.DST_W = out_W scaler.DST_H = out_H scaler.DST_SIZE_THING3 = 0 scaler.DST_SIZE_THING6 = 0 scaler.DST_SIZE_THING2 = 0 scaler.DST_SIZE_THING5 = 0 scaler.DST_SIZE_THING4 = 0 scaler.DST_SIZE_THING7 = 0 # src sizes scaler.SRC_W = in_W scaler.SRC_H = in_H scaler.SRC_SIZE_THING3 = 0 scaler.SRC_SIZE_THING6 = 0 scaler.SRC_SIZE_THING2 = 0 scaler.SRC_SIZE_THING5 = 0 scaler.SRC_SIZE_THING4 = 0 scaler.SRC_SIZE_THING7 = 0 # swizzling scaler.SRC_SWIZZLE = 0x03020100 scaler.DST_SWIZZLE = 0x03020100 # WDMA control p.write32(scaler_base + 0x280, 0x1) p.write32(scaler_base + 0x284, 0x81e) p.write32(scaler_base + 0x288, 0x800) p.write32(scaler_base + 0x28c, 0x800) # pixel averaging scaler.PIXEL_AVERAGING = 0 # ASE enhancement p.write32(scaler_base + 0x16800, 0x0) # ASE 3x1 transform p.write32(scaler_base + 0x16080, 0x0) p.write32(scaler_base + 0x16084, 0xb710367) p.write32(scaler_base + 0x16088, 0x128) # ASE interpolation p.write32(scaler_base + 0x16600, 0x15) # ASE angle detect p.write32(scaler_base + 0x16504, 0x2000500) p.write32(scaler_base + 0x16508, 0x3200) p.write32(scaler_base + 0x16534, 0x8) p.write32(scaler_base + 0x1651c, 0x851400) p.write32(scaler_base + 0x16568, 0x250500) p.write32(scaler_base + 0x16588, 0x496513) # ASE config p.write32(scaler_base + 0x16000, 0x0) # chroma upsampling p.write32(scaler_base + 0x800, 0xc) # chroma downsampling p.write32(scaler_base + 0x900, 0x0) # DDA init V??? scaler.SCALE_H_DDA_THING0 = 0 scaler.SCALE_H_DDA_THING2 = 0 scaler.SCALE_V_DDA_THING1 = 0 # vertical scaling scaler.SCALE_V_RATIO_0 = int(in_H / out_H * 0x400000) scaler.SCALE_V_RATIO_4 = 0 # XXX what does this do? scaler.SCALE_V_RATIO_1 = 0 # XXX what does this do? scaler.SCALE_V_RATIO_2 = 0 # XXX what does this set do? scaler.SCALE_V_RATIO_3 = 0 # XXX what does this set do? scaler.SCALE_V_RATIO_5 = 0 # XXX what does this set do? scaler.SCALE_V_FLAGS.set(EN=1) # XXX this is a random filter grabbed from a random trace scaler.SCALE_FILTER_V_BLOCK0[0].val = 0x0 scaler.SCALE_FILTER_V_BLOCK0[1].val = 0x50005 scaler.SCALE_FILTER_V_BLOCK1[0].val = 0x50000 scaler.SCALE_FILTER_V_BLOCK0[2].val = 0xb000b scaler.SCALE_FILTER_V_BLOCK0[3].val = 0x100010 scaler.SCALE_FILTER_V_BLOCK1[1].val = 0x10000b scaler.SCALE_FILTER_V_BLOCK0[4].val = 0x140014 scaler.SCALE_FILTER_V_BLOCK0[5].val = 0x180018 scaler.SCALE_FILTER_V_BLOCK1[2].val = 0x180014 scaler.SCALE_FILTER_V_BLOCK0[6].val = 0x1c001c scaler.SCALE_FILTER_V_BLOCK0[7].val = 0x200020 scaler.SCALE_FILTER_V_BLOCK1[3].val = 0x20001c scaler.SCALE_FILTER_V_BLOCK0[8].val = 0x230023 scaler.SCALE_FILTER_V_BLOCK0[9].val = 0x260026 scaler.SCALE_FILTER_V_BLOCK1[4].val = 0x260023 scaler.SCALE_FILTER_V_BLOCK0[10].val = 0x290029 scaler.SCALE_FILTER_V_BLOCK0[11].val = 0x2c002c scaler.SCALE_FILTER_V_BLOCK1[5].val = 0x2c0029 scaler.SCALE_FILTER_V_BLOCK0[12].val = 0x2e002e scaler.SCALE_FILTER_V_BLOCK0[13].val = 0x300030 scaler.SCALE_FILTER_V_BLOCK1[6].val = 0x30002e scaler.SCALE_FILTER_V_BLOCK0[14].val = 0x320032 scaler.SCALE_FILTER_V_BLOCK0[15].val = 0x330033 scaler.SCALE_FILTER_V_BLOCK1[7].val = 0x330032 scaler.SCALE_FILTER_V_BLOCK0[16].val = 0xff87ff87 scaler.SCALE_FILTER_V_BLOCK0[17].val = 0xff90ff90 scaler.SCALE_FILTER_V_BLOCK1[8].val = 0xff90ff87 scaler.SCALE_FILTER_V_BLOCK0[18].val = 0xff99ff99 scaler.SCALE_FILTER_V_BLOCK0[19].val = 0xffa1ffa1 scaler.SCALE_FILTER_V_BLOCK1[9].val = 0xffa1ff99 scaler.SCALE_FILTER_V_BLOCK0[20].val = 0xffaaffaa scaler.SCALE_FILTER_V_BLOCK0[21].val = 0xffb2ffb2 scaler.SCALE_FILTER_V_BLOCK1[10].val = 0xffb2ffaa scaler.SCALE_FILTER_V_BLOCK0[22].val = 0xffbaffba scaler.SCALE_FILTER_V_BLOCK0[23].val = 0xffc2ffc2 scaler.SCALE_FILTER_V_BLOCK1[11].val = 0xffc2ffba scaler.SCALE_FILTER_V_BLOCK0[24].val = 0xffcaffca scaler.SCALE_FILTER_V_BLOCK0[25].val = 0xffd2ffd2 scaler.SCALE_FILTER_V_BLOCK1[12].val = 0xffd2ffca scaler.SCALE_FILTER_V_BLOCK0[26].val = 0xffd9ffd9 scaler.SCALE_FILTER_V_BLOCK0[27].val = 0xffe0ffe0 scaler.SCALE_FILTER_V_BLOCK1[13].val = 0xffe0ffd9 scaler.SCALE_FILTER_V_BLOCK0[28].val = 0xffe7ffe7 scaler.SCALE_FILTER_V_BLOCK0[29].val = 0xffeeffee scaler.SCALE_FILTER_V_BLOCK1[14].val = 0xffeeffe7 scaler.SCALE_FILTER_V_BLOCK0[30].val = 0xfff4fff4 scaler.SCALE_FILTER_V_BLOCK0[31].val = 0xfffafffa scaler.SCALE_FILTER_V_BLOCK1[15].val = 0xfffafff4 scaler.SCALE_FILTER_V_BLOCK0[32].val = 0xff06ff06 scaler.SCALE_FILTER_V_BLOCK0[33].val = 0xff0cff0c scaler.SCALE_FILTER_V_BLOCK1[16].val = 0xff0cff06 scaler.SCALE_FILTER_V_BLOCK0[34].val = 0xff13ff13 scaler.SCALE_FILTER_V_BLOCK0[35].val = 0xff1aff1a scaler.SCALE_FILTER_V_BLOCK1[17].val = 0xff1aff13 scaler.SCALE_FILTER_V_BLOCK0[36].val = 0xff21ff21 scaler.SCALE_FILTER_V_BLOCK0[37].val = 0xff28ff28 scaler.SCALE_FILTER_V_BLOCK1[18].val = 0xff28ff21 scaler.SCALE_FILTER_V_BLOCK0[38].val = 0xff30ff30 scaler.SCALE_FILTER_V_BLOCK0[39].val = 0xff38ff38 scaler.SCALE_FILTER_V_BLOCK1[19].val = 0xff38ff30 scaler.SCALE_FILTER_V_BLOCK0[40].val = 0xff41ff41 scaler.SCALE_FILTER_V_BLOCK0[41].val = 0xff49ff49 scaler.SCALE_FILTER_V_BLOCK1[20].val = 0xff49ff41 scaler.SCALE_FILTER_V_BLOCK0[42].val = 0xff52ff52 scaler.SCALE_FILTER_V_BLOCK0[43].val = 0xff5bff5b scaler.SCALE_FILTER_V_BLOCK1[21].val = 0xff5bff52 scaler.SCALE_FILTER_V_BLOCK0[44].val = 0xff63ff63 scaler.SCALE_FILTER_V_BLOCK0[45].val = 0xff6cff6c scaler.SCALE_FILTER_V_BLOCK1[22].val = 0xff6cff63 scaler.SCALE_FILTER_V_BLOCK0[46].val = 0xff75ff75 scaler.SCALE_FILTER_V_BLOCK0[47].val = 0xff7eff7e scaler.SCALE_FILTER_V_BLOCK1[23].val = 0xff7eff75 scaler.SCALE_FILTER_V_BLOCK0[48].val = 0xff02ff02 scaler.SCALE_FILTER_V_BLOCK0[49].val = 0xfefcfefc scaler.SCALE_FILTER_V_BLOCK1[24].val = 0xfefcff02 scaler.SCALE_FILTER_V_BLOCK0[50].val = 0xfef7fef7 scaler.SCALE_FILTER_V_BLOCK0[51].val = 0xfef3fef3 scaler.SCALE_FILTER_V_BLOCK1[25].val = 0xfef3fef7 scaler.SCALE_FILTER_V_BLOCK0[52].val = 0xfeeffeef scaler.SCALE_FILTER_V_BLOCK0[53].val = 0xfeedfeed scaler.SCALE_FILTER_V_BLOCK1[26].val = 0xfeedfeef scaler.SCALE_FILTER_V_BLOCK0[54].val = 0xfeecfeec scaler.SCALE_FILTER_V_BLOCK0[55].val = 0xfeebfeeb scaler.SCALE_FILTER_V_BLOCK1[27].val = 0xfeebfeec scaler.SCALE_FILTER_V_BLOCK0[56].val = 0xfeebfeeb scaler.SCALE_FILTER_V_BLOCK0[57].val = 0xfeecfeec scaler.SCALE_FILTER_V_BLOCK1[28].val = 0xfeecfeeb scaler.SCALE_FILTER_V_BLOCK0[58].val = 0xfeeefeee scaler.SCALE_FILTER_V_BLOCK0[59].val = 0xfef1fef1 scaler.SCALE_FILTER_V_BLOCK1[29].val = 0xfef1feee scaler.SCALE_FILTER_V_BLOCK0[60].val = 0xfef4fef4 scaler.SCALE_FILTER_V_BLOCK0[61].val = 0xfef8fef8 scaler.SCALE_FILTER_V_BLOCK1[30].val = 0xfef8fef4 scaler.SCALE_FILTER_V_BLOCK0[62].val = 0xfefcfefc scaler.SCALE_FILTER_V_BLOCK0[63].val = 0xff01ff01 scaler.SCALE_FILTER_V_BLOCK1[31].val = 0xff01fefc scaler.SCALE_FILTER_V_BLOCK0[64].val = 0x0 scaler.SCALE_FILTER_V_BLOCK0[65].val = 0xffe7ffe7 scaler.SCALE_FILTER_V_BLOCK1[32].val = 0xffe70000 scaler.SCALE_FILTER_V_BLOCK0[66].val = 0xffcfffcf scaler.SCALE_FILTER_V_BLOCK0[67].val = 0xffb9ffb9 scaler.SCALE_FILTER_V_BLOCK1[33].val = 0xffb9ffcf scaler.SCALE_FILTER_V_BLOCK0[68].val = 0xffa4ffa4 scaler.SCALE_FILTER_V_BLOCK0[69].val = 0xff90ff90 scaler.SCALE_FILTER_V_BLOCK1[34].val = 0xff90ffa4 scaler.SCALE_FILTER_V_BLOCK0[70].val = 0xff7dff7d scaler.SCALE_FILTER_V_BLOCK0[71].val = 0xff6bff6b scaler.SCALE_FILTER_V_BLOCK1[35].val = 0xff6bff7d scaler.SCALE_FILTER_V_BLOCK0[72].val = 0xff5bff5b scaler.SCALE_FILTER_V_BLOCK0[73].val = 0xff4cff4c scaler.SCALE_FILTER_V_BLOCK1[36].val = 0xff4cff5b scaler.SCALE_FILTER_V_BLOCK0[74].val = 0xff3eff3e scaler.SCALE_FILTER_V_BLOCK0[75].val = 0xff31ff31 scaler.SCALE_FILTER_V_BLOCK1[37].val = 0xff31ff3e scaler.SCALE_FILTER_V_BLOCK0[76].val = 0xff26ff26 scaler.SCALE_FILTER_V_BLOCK0[77].val = 0xff1bff1b scaler.SCALE_FILTER_V_BLOCK1[38].val = 0xff1bff26 scaler.SCALE_FILTER_V_BLOCK0[78].val = 0xff12ff12 scaler.SCALE_FILTER_V_BLOCK0[79].val = 0xff0aff0a scaler.SCALE_FILTER_V_BLOCK1[39].val = 0xff0aff12 scaler.SCALE_FILTER_V_BLOCK0[80].val = 0x2210221 scaler.SCALE_FILTER_V_BLOCK0[81].val = 0x1f901f9 scaler.SCALE_FILTER_V_BLOCK1[40].val = 0x1f90221 scaler.SCALE_FILTER_V_BLOCK0[82].val = 0x1d001d0 scaler.SCALE_FILTER_V_BLOCK0[83].val = 0x1a901a9 scaler.SCALE_FILTER_V_BLOCK1[41].val = 0x1a901d0 scaler.SCALE_FILTER_V_BLOCK0[84].val = 0x1820182 scaler.SCALE_FILTER_V_BLOCK0[85].val = 0x15d015d scaler.SCALE_FILTER_V_BLOCK1[42].val = 0x15d0182 scaler.SCALE_FILTER_V_BLOCK0[86].val = 0x1380138 scaler.SCALE_FILTER_V_BLOCK0[87].val = 0x1140114 scaler.SCALE_FILTER_V_BLOCK1[43].val = 0x1140138 scaler.SCALE_FILTER_V_BLOCK0[88].val = 0xf100f1 scaler.SCALE_FILTER_V_BLOCK0[89].val = 0xcf00cf scaler.SCALE_FILTER_V_BLOCK1[44].val = 0xcf00f1 scaler.SCALE_FILTER_V_BLOCK0[90].val = 0xae00ae scaler.SCALE_FILTER_V_BLOCK0[91].val = 0x8e008e scaler.SCALE_FILTER_V_BLOCK1[45].val = 0x8e00ae scaler.SCALE_FILTER_V_BLOCK0[92].val = 0x6f006f scaler.SCALE_FILTER_V_BLOCK0[93].val = 0x520052 scaler.SCALE_FILTER_V_BLOCK1[46].val = 0x52006f scaler.SCALE_FILTER_V_BLOCK0[94].val = 0x350035 scaler.SCALE_FILTER_V_BLOCK0[95].val = 0x1a001a scaler.SCALE_FILTER_V_BLOCK1[47].val = 0x1a0035 scaler.SCALE_FILTER_V_BLOCK0[96].val = 0x4e404e4 scaler.SCALE_FILTER_V_BLOCK0[97].val = 0x4b804b8 scaler.SCALE_FILTER_V_BLOCK1[48].val = 0x4b804e4 scaler.SCALE_FILTER_V_BLOCK0[98].val = 0x48b048b scaler.SCALE_FILTER_V_BLOCK0[99].val = 0x45f045f scaler.SCALE_FILTER_V_BLOCK1[49].val = 0x45f048b scaler.SCALE_FILTER_V_BLOCK0[100].val = 0x4320432 scaler.SCALE_FILTER_V_BLOCK0[101].val = 0x4050405 scaler.SCALE_FILTER_V_BLOCK1[50].val = 0x4050432 scaler.SCALE_FILTER_V_BLOCK0[102].val = 0x3d803d8 scaler.SCALE_FILTER_V_BLOCK0[103].val = 0x3ab03ab scaler.SCALE_FILTER_V_BLOCK1[51].val = 0x3ab03d8 scaler.SCALE_FILTER_V_BLOCK0[104].val = 0x37e037e scaler.SCALE_FILTER_V_BLOCK0[105].val = 0x3510351 scaler.SCALE_FILTER_V_BLOCK1[52].val = 0x351037e scaler.SCALE_FILTER_V_BLOCK0[106].val = 0x3240324 scaler.SCALE_FILTER_V_BLOCK0[107].val = 0x2f802f8 scaler.SCALE_FILTER_V_BLOCK1[53].val = 0x2f80324 scaler.SCALE_FILTER_V_BLOCK0[108].val = 0x2cc02cc scaler.SCALE_FILTER_V_BLOCK0[109].val = 0x2a102a1 scaler.SCALE_FILTER_V_BLOCK1[54].val = 0x2a102cc scaler.SCALE_FILTER_V_BLOCK0[110].val = 0x2760276 scaler.SCALE_FILTER_V_BLOCK0[111].val = 0x24b024b scaler.SCALE_FILTER_V_BLOCK1[55].val = 0x24b0276 scaler.SCALE_FILTER_V_BLOCK0[112].val = 0x73b073b scaler.SCALE_FILTER_V_BLOCK0[113].val = 0x71e071e scaler.SCALE_FILTER_V_BLOCK1[56].val = 0x71e073b scaler.SCALE_FILTER_V_BLOCK0[114].val = 0x7000700 scaler.SCALE_FILTER_V_BLOCK0[115].val = 0x6e106e1 scaler.SCALE_FILTER_V_BLOCK1[57].val = 0x6e10700 scaler.SCALE_FILTER_V_BLOCK0[116].val = 0x6c006c0 scaler.SCALE_FILTER_V_BLOCK0[117].val = 0x69e069e scaler.SCALE_FILTER_V_BLOCK1[58].val = 0x69e06c0 scaler.SCALE_FILTER_V_BLOCK0[118].val = 0x67a067a scaler.SCALE_FILTER_V_BLOCK0[119].val = 0x6560656 scaler.SCALE_FILTER_V_BLOCK1[59].val = 0x656067a scaler.SCALE_FILTER_V_BLOCK0[120].val = 0x6300630 scaler.SCALE_FILTER_V_BLOCK0[121].val = 0x6090609 scaler.SCALE_FILTER_V_BLOCK1[60].val = 0x6090630 scaler.SCALE_FILTER_V_BLOCK0[122].val = 0x5e205e2 scaler.SCALE_FILTER_V_BLOCK0[123].val = 0x5b905b9 scaler.SCALE_FILTER_V_BLOCK1[61].val = 0x5b905e2 scaler.SCALE_FILTER_V_BLOCK0[124].val = 0x5900590 scaler.SCALE_FILTER_V_BLOCK0[125].val = 0x5660566 scaler.SCALE_FILTER_V_BLOCK1[62].val = 0x5660590 scaler.SCALE_FILTER_V_BLOCK0[126].val = 0x53b053b scaler.SCALE_FILTER_V_BLOCK0[127].val = 0x5100510 scaler.SCALE_FILTER_V_BLOCK1[63].val = 0x510053b scaler.SCALE_FILTER_V_BLOCK0[128].val = 0x82c082c scaler.SCALE_FILTER_V_BLOCK0[129].val = 0x82b082b scaler.SCALE_FILTER_V_BLOCK1[64].val = 0x82b082c scaler.SCALE_FILTER_V_BLOCK0[130].val = 0x8280828 scaler.SCALE_FILTER_V_BLOCK0[131].val = 0x8200820 scaler.SCALE_FILTER_V_BLOCK1[65].val = 0x8200828 scaler.SCALE_FILTER_V_BLOCK0[132].val = 0x81b081b scaler.SCALE_FILTER_V_BLOCK0[133].val = 0x8130813 scaler.SCALE_FILTER_V_BLOCK1[66].val = 0x813081b scaler.SCALE_FILTER_V_BLOCK0[134].val = 0x8080808 scaler.SCALE_FILTER_V_BLOCK0[135].val = 0x7fc07fc scaler.SCALE_FILTER_V_BLOCK1[67].val = 0x7fc0808 scaler.SCALE_FILTER_V_BLOCK0[136].val = 0x7ed07ed scaler.SCALE_FILTER_V_BLOCK0[137].val = 0x7dd07dd scaler.SCALE_FILTER_V_BLOCK1[68].val = 0x7dd07ed scaler.SCALE_FILTER_V_BLOCK0[138].val = 0x7cb07cb scaler.SCALE_FILTER_V_BLOCK0[139].val = 0x7b607b6 scaler.SCALE_FILTER_V_BLOCK1[69].val = 0x7b607cb scaler.SCALE_FILTER_V_BLOCK0[140].val = 0x7a207a2 scaler.SCALE_FILTER_V_BLOCK0[141].val = 0x78a078a scaler.SCALE_FILTER_V_BLOCK1[70].val = 0x78a07a2 scaler.SCALE_FILTER_V_BLOCK0[142].val = 0x7710771 scaler.SCALE_FILTER_V_BLOCK0[143].val = 0x7570757 scaler.SCALE_FILTER_V_BLOCK1[71].val = 0x7570771 scaler.SCALE_FILTER_V_BLOCK0[144].val = 0x73d073d scaler.SCALE_FILTER_V_BLOCK0[145].val = 0x7570757 scaler.SCALE_FILTER_V_BLOCK1[72].val = 0x757073d scaler.SCALE_FILTER_V_BLOCK0[146].val = 0x7710771 scaler.SCALE_FILTER_V_BLOCK0[147].val = 0x78a078a scaler.SCALE_FILTER_V_BLOCK1[73].val = 0x78a0771 scaler.SCALE_FILTER_V_BLOCK0[148].val = 0x7a207a2 scaler.SCALE_FILTER_V_BLOCK0[149].val = 0x7b607b6 scaler.SCALE_FILTER_V_BLOCK1[74].val = 0x7b607a2 scaler.SCALE_FILTER_V_BLOCK0[150].val = 0x7cb07cb scaler.SCALE_FILTER_V_BLOCK0[151].val = 0x7dd07dd scaler.SCALE_FILTER_V_BLOCK1[75].val = 0x7dd07cb scaler.SCALE_FILTER_V_BLOCK0[152].val = 0x7ed07ed scaler.SCALE_FILTER_V_BLOCK0[153].val = 0x7fc07fc scaler.SCALE_FILTER_V_BLOCK1[76].val = 0x7fc07ed scaler.SCALE_FILTER_V_BLOCK0[154].val = 0x8080808 scaler.SCALE_FILTER_V_BLOCK0[155].val = 0x8130813 scaler.SCALE_FILTER_V_BLOCK1[77].val = 0x8130808 scaler.SCALE_FILTER_V_BLOCK0[156].val = 0x81b081b scaler.SCALE_FILTER_V_BLOCK0[157].val = 0x8200820 scaler.SCALE_FILTER_V_BLOCK1[78].val = 0x820081b scaler.SCALE_FILTER_V_BLOCK0[158].val = 0x8280828 scaler.SCALE_FILTER_V_BLOCK0[159].val = 0x82b082b scaler.SCALE_FILTER_V_BLOCK1[79].val = 0x82b0828 scaler.SCALE_FILTER_V_BLOCK0[160].val = 0x4e404e4 scaler.SCALE_FILTER_V_BLOCK0[161].val = 0x5100510 scaler.SCALE_FILTER_V_BLOCK1[80].val = 0x51004e4 scaler.SCALE_FILTER_V_BLOCK0[162].val = 0x53b053b scaler.SCALE_FILTER_V_BLOCK0[163].val = 0x5660566 scaler.SCALE_FILTER_V_BLOCK1[81].val = 0x566053b scaler.SCALE_FILTER_V_BLOCK0[164].val = 0x5900590 scaler.SCALE_FILTER_V_BLOCK0[165].val = 0x5b905b9 scaler.SCALE_FILTER_V_BLOCK1[82].val = 0x5b90590 scaler.SCALE_FILTER_V_BLOCK0[166].val = 0x5e205e2 scaler.SCALE_FILTER_V_BLOCK0[167].val = 0x6090609 scaler.SCALE_FILTER_V_BLOCK1[83].val = 0x60905e2 scaler.SCALE_FILTER_V_BLOCK0[168].val = 0x6300630 scaler.SCALE_FILTER_V_BLOCK0[169].val = 0x6560656 scaler.SCALE_FILTER_V_BLOCK1[84].val = 0x6560630 scaler.SCALE_FILTER_V_BLOCK0[170].val = 0x67a067a scaler.SCALE_FILTER_V_BLOCK0[171].val = 0x69e069e scaler.SCALE_FILTER_V_BLOCK1[85].val = 0x69e067a scaler.SCALE_FILTER_V_BLOCK0[172].val = 0x6c006c0 scaler.SCALE_FILTER_V_BLOCK0[173].val = 0x6e106e1 scaler.SCALE_FILTER_V_BLOCK1[86].val = 0x6e106c0 scaler.SCALE_FILTER_V_BLOCK0[174].val = 0x7000700 scaler.SCALE_FILTER_V_BLOCK0[175].val = 0x71e071e scaler.SCALE_FILTER_V_BLOCK1[87].val = 0x71e0700 scaler.SCALE_FILTER_V_BLOCK0[176].val = 0x2210221 scaler.SCALE_FILTER_V_BLOCK0[177].val = 0x24b024b scaler.SCALE_FILTER_V_BLOCK1[88].val = 0x24b0221 scaler.SCALE_FILTER_V_BLOCK0[178].val = 0x2760276 scaler.SCALE_FILTER_V_BLOCK0[179].val = 0x2a102a1 scaler.SCALE_FILTER_V_BLOCK1[89].val = 0x2a10276 scaler.SCALE_FILTER_V_BLOCK0[180].val = 0x2cc02cc scaler.SCALE_FILTER_V_BLOCK0[181].val = 0x2f802f8 scaler.SCALE_FILTER_V_BLOCK1[90].val = 0x2f802cc scaler.SCALE_FILTER_V_BLOCK0[182].val = 0x3240324 scaler.SCALE_FILTER_V_BLOCK0[183].val = 0x3510351 scaler.SCALE_FILTER_V_BLOCK1[91].val = 0x3510324 scaler.SCALE_FILTER_V_BLOCK0[184].val = 0x37e037e scaler.SCALE_FILTER_V_BLOCK0[185].val = 0x3ab03ab scaler.SCALE_FILTER_V_BLOCK1[92].val = 0x3ab037e scaler.SCALE_FILTER_V_BLOCK0[186].val = 0x3d803d8 scaler.SCALE_FILTER_V_BLOCK0[187].val = 0x4050405 scaler.SCALE_FILTER_V_BLOCK1[93].val = 0x40503d8 scaler.SCALE_FILTER_V_BLOCK0[188].val = 0x4320432 scaler.SCALE_FILTER_V_BLOCK0[189].val = 0x45f045f scaler.SCALE_FILTER_V_BLOCK1[94].val = 0x45f0432 scaler.SCALE_FILTER_V_BLOCK0[190].val = 0x48b048b scaler.SCALE_FILTER_V_BLOCK0[191].val = 0x4b804b8 scaler.SCALE_FILTER_V_BLOCK1[95].val = 0x4b8048b scaler.SCALE_FILTER_V_BLOCK0[192].val = 0x0 scaler.SCALE_FILTER_V_BLOCK0[193].val = 0x1a001a scaler.SCALE_FILTER_V_BLOCK1[96].val = 0x1a0000 scaler.SCALE_FILTER_V_BLOCK0[194].val = 0x350035 scaler.SCALE_FILTER_V_BLOCK0[195].val = 0x520052 scaler.SCALE_FILTER_V_BLOCK1[97].val = 0x520035 scaler.SCALE_FILTER_V_BLOCK0[196].val = 0x6f006f scaler.SCALE_FILTER_V_BLOCK0[197].val = 0x8e008e scaler.SCALE_FILTER_V_BLOCK1[98].val = 0x8e006f scaler.SCALE_FILTER_V_BLOCK0[198].val = 0xae00ae scaler.SCALE_FILTER_V_BLOCK0[199].val = 0xcf00cf scaler.SCALE_FILTER_V_BLOCK1[99].val = 0xcf00ae scaler.SCALE_FILTER_V_BLOCK0[200].val = 0xf100f1 scaler.SCALE_FILTER_V_BLOCK0[201].val = 0x1140114 scaler.SCALE_FILTER_V_BLOCK1[100].val = 0x11400f1 scaler.SCALE_FILTER_V_BLOCK0[202].val = 0x1380138 scaler.SCALE_FILTER_V_BLOCK0[203].val = 0x15d015d scaler.SCALE_FILTER_V_BLOCK1[101].val = 0x15d0138 scaler.SCALE_FILTER_V_BLOCK0[204].val = 0x1820182 scaler.SCALE_FILTER_V_BLOCK0[205].val = 0x1a901a9 scaler.SCALE_FILTER_V_BLOCK1[102].val = 0x1a90182 scaler.SCALE_FILTER_V_BLOCK0[206].val = 0x1d001d0 scaler.SCALE_FILTER_V_BLOCK0[207].val = 0x1f901f9 scaler.SCALE_FILTER_V_BLOCK1[103].val = 0x1f901d0 scaler.SCALE_FILTER_V_BLOCK0[208].val = 0xff02ff02 scaler.SCALE_FILTER_V_BLOCK0[209].val = 0xff0aff0a scaler.SCALE_FILTER_V_BLOCK1[104].val = 0xff0aff02 scaler.SCALE_FILTER_V_BLOCK0[210].val = 0xff12ff12 scaler.SCALE_FILTER_V_BLOCK0[211].val = 0xff1bff1b scaler.SCALE_FILTER_V_BLOCK1[105].val = 0xff1bff12 scaler.SCALE_FILTER_V_BLOCK0[212].val = 0xff26ff26 scaler.SCALE_FILTER_V_BLOCK0[213].val = 0xff31ff31 scaler.SCALE_FILTER_V_BLOCK1[106].val = 0xff31ff26 scaler.SCALE_FILTER_V_BLOCK0[214].val = 0xff3eff3e scaler.SCALE_FILTER_V_BLOCK0[215].val = 0xff4cff4c scaler.SCALE_FILTER_V_BLOCK1[107].val = 0xff4cff3e scaler.SCALE_FILTER_V_BLOCK0[216].val = 0xff5bff5b scaler.SCALE_FILTER_V_BLOCK0[218].val = 0xff6bff6b scaler.SCALE_FILTER_V_BLOCK1[108].val = 0xff6bff5b scaler.SCALE_FILTER_V_BLOCK0[218].val = 0xff7dff7d scaler.SCALE_FILTER_V_BLOCK0[219].val = 0xff90ff90 scaler.SCALE_FILTER_V_BLOCK1[109].val = 0xff90ff7d scaler.SCALE_FILTER_V_BLOCK0[220].val = 0xffa4ffa4 scaler.SCALE_FILTER_V_BLOCK0[221].val = 0xffb9ffb9 scaler.SCALE_FILTER_V_BLOCK1[110].val = 0xffb9ffa4 scaler.SCALE_FILTER_V_BLOCK0[222].val = 0xffcfffcf scaler.SCALE_FILTER_V_BLOCK0[223].val = 0xffe7ffe7 scaler.SCALE_FILTER_V_BLOCK1[111].val = 0xffe7ffcf scaler.SCALE_FILTER_V_BLOCK0[224].val = 0xff06ff06 scaler.SCALE_FILTER_V_BLOCK0[225].val = 0xff01ff01 scaler.SCALE_FILTER_V_BLOCK1[112].val = 0xff01ff06 scaler.SCALE_FILTER_V_BLOCK0[226].val = 0xfefcfefc scaler.SCALE_FILTER_V_BLOCK0[227].val = 0xfef8fef8 scaler.SCALE_FILTER_V_BLOCK1[113].val = 0xfef8fefc scaler.SCALE_FILTER_V_BLOCK0[228].val = 0xfef4fef4 scaler.SCALE_FILTER_V_BLOCK0[229].val = 0xfef1fef1 scaler.SCALE_FILTER_V_BLOCK1[114].val = 0xfef1fef4 scaler.SCALE_FILTER_V_BLOCK0[230].val = 0xfeeefeee scaler.SCALE_FILTER_V_BLOCK0[231].val = 0xfeecfeec scaler.SCALE_FILTER_V_BLOCK1[115].val = 0xfeecfeee scaler.SCALE_FILTER_V_BLOCK0[232].val = 0xfeebfeeb scaler.SCALE_FILTER_V_BLOCK0[233].val = 0xfeebfeeb scaler.SCALE_FILTER_V_BLOCK1[116].val = 0xfeebfeeb scaler.SCALE_FILTER_V_BLOCK0[234].val = 0xfeecfeec scaler.SCALE_FILTER_V_BLOCK0[235].val = 0xfeedfeed scaler.SCALE_FILTER_V_BLOCK1[117].val = 0xfeedfeec scaler.SCALE_FILTER_V_BLOCK0[236].val = 0xfeeffeef scaler.SCALE_FILTER_V_BLOCK0[237].val = 0xfef3fef3 scaler.SCALE_FILTER_V_BLOCK1[118].val = 0xfef3feef scaler.SCALE_FILTER_V_BLOCK0[238].val = 0xfef7fef7 scaler.SCALE_FILTER_V_BLOCK0[239].val = 0xfefcfefc scaler.SCALE_FILTER_V_BLOCK1[119].val = 0xfefcfef7 scaler.SCALE_FILTER_V_BLOCK0[240].val = 0xff87ff87 scaler.SCALE_FILTER_V_BLOCK0[241].val = 0xff7eff7e scaler.SCALE_FILTER_V_BLOCK1[120].val = 0xff7eff87 scaler.SCALE_FILTER_V_BLOCK0[242].val = 0xff75ff75 scaler.SCALE_FILTER_V_BLOCK0[243].val = 0xff6cff6c scaler.SCALE_FILTER_V_BLOCK1[121].val = 0xff6cff75 scaler.SCALE_FILTER_V_BLOCK0[244].val = 0xff63ff63 scaler.SCALE_FILTER_V_BLOCK0[245].val = 0xff5bff5b scaler.SCALE_FILTER_V_BLOCK1[122].val = 0xff5bff63 scaler.SCALE_FILTER_V_BLOCK0[246].val = 0xff52ff52 scaler.SCALE_FILTER_V_BLOCK0[247].val = 0xff49ff49 scaler.SCALE_FILTER_V_BLOCK1[123].val = 0xff49ff52 scaler.SCALE_FILTER_V_BLOCK0[248].val = 0xff41ff41 scaler.SCALE_FILTER_V_BLOCK0[249].val = 0xff38ff38 scaler.SCALE_FILTER_V_BLOCK1[124].val = 0xff38ff41 scaler.SCALE_FILTER_V_BLOCK0[250].val = 0xff30ff30 scaler.SCALE_FILTER_V_BLOCK0[251].val = 0xff28ff28 scaler.SCALE_FILTER_V_BLOCK1[125].val = 0xff28ff30 scaler.SCALE_FILTER_V_BLOCK0[252].val = 0xff21ff21 scaler.SCALE_FILTER_V_BLOCK0[253].val = 0xff1aff1a scaler.SCALE_FILTER_V_BLOCK1[126].val = 0xff1aff21 scaler.SCALE_FILTER_V_BLOCK0[254].val = 0xff13ff13 scaler.SCALE_FILTER_V_BLOCK0[255].val = 0xff0cff0c scaler.SCALE_FILTER_V_BLOCK1[127].val = 0xff0cff13 scaler.SCALE_FILTER_V_BLOCK0[256].val = 0x0 scaler.SCALE_FILTER_V_BLOCK0[257].val = 0xfffafffa scaler.SCALE_FILTER_V_BLOCK1[128].val = 0xfffa0000 scaler.SCALE_FILTER_V_BLOCK0[258].val = 0xfff4fff4 scaler.SCALE_FILTER_V_BLOCK0[259].val = 0xffeeffee scaler.SCALE_FILTER_V_BLOCK1[129].val = 0xffeefff4 scaler.SCALE_FILTER_V_BLOCK0[260].val = 0xffe7ffe7 scaler.SCALE_FILTER_V_BLOCK0[261].val = 0xffe0ffe0 scaler.SCALE_FILTER_V_BLOCK1[130].val = 0xffe0ffe7 scaler.SCALE_FILTER_V_BLOCK0[262].val = 0xffd9ffd9 scaler.SCALE_FILTER_V_BLOCK0[263].val = 0xffd2ffd2 scaler.SCALE_FILTER_V_BLOCK1[131].val = 0xffd2ffd9 scaler.SCALE_FILTER_V_BLOCK0[264].val = 0xffcaffca scaler.SCALE_FILTER_V_BLOCK0[265].val = 0xffc2ffc2 scaler.SCALE_FILTER_V_BLOCK1[132].val = 0xffc2ffca scaler.SCALE_FILTER_V_BLOCK0[266].val = 0xffbaffba scaler.SCALE_FILTER_V_BLOCK0[267].val = 0xffb2ffb2 scaler.SCALE_FILTER_V_BLOCK1[133].val = 0xffb2ffba scaler.SCALE_FILTER_V_BLOCK0[268].val = 0xffaaffaa scaler.SCALE_FILTER_V_BLOCK0[269].val = 0xffa1ffa1 scaler.SCALE_FILTER_V_BLOCK1[134].val = 0xffa1ffaa scaler.SCALE_FILTER_V_BLOCK0[270].val = 0xff99ff99 scaler.SCALE_FILTER_V_BLOCK0[271].val = 0xff90ff90 scaler.SCALE_FILTER_V_BLOCK1[135].val = 0xff90ff99 scaler.SCALE_FILTER_V_BLOCK0[272].val = 0x340034 scaler.SCALE_FILTER_V_BLOCK0[273].val = 0x330033 scaler.SCALE_FILTER_V_BLOCK1[136].val = 0x330034 scaler.SCALE_FILTER_V_BLOCK0[274].val = 0x320032 scaler.SCALE_FILTER_V_BLOCK0[275].val = 0x300030 scaler.SCALE_FILTER_V_BLOCK1[137].val = 0x300032 scaler.SCALE_FILTER_V_BLOCK0[276].val = 0x2e002e scaler.SCALE_FILTER_V_BLOCK0[277].val = 0x2c002c scaler.SCALE_FILTER_V_BLOCK1[138].val = 0x2c002e scaler.SCALE_FILTER_V_BLOCK0[278].val = 0x290029 scaler.SCALE_FILTER_V_BLOCK0[279].val = 0x260026 scaler.SCALE_FILTER_V_BLOCK1[139].val = 0x260029 scaler.SCALE_FILTER_V_BLOCK0[280].val = 0x230023 scaler.SCALE_FILTER_V_BLOCK0[281].val = 0x200020 scaler.SCALE_FILTER_V_BLOCK1[140].val = 0x200023 scaler.SCALE_FILTER_V_BLOCK0[282].val = 0x1c001c scaler.SCALE_FILTER_V_BLOCK0[283].val = 0x180018 scaler.SCALE_FILTER_V_BLOCK1[141].val = 0x18001c scaler.SCALE_FILTER_V_BLOCK0[284].val = 0x140014 scaler.SCALE_FILTER_V_BLOCK0[285].val = 0x100010 scaler.SCALE_FILTER_V_BLOCK1[142].val = 0x100014 scaler.SCALE_FILTER_V_BLOCK0[286].val = 0xb000b scaler.SCALE_FILTER_V_BLOCK0[287].val = 0x50005 scaler.SCALE_FILTER_V_BLOCK1[143].val = 0x5000b # DDA init H scaler.SCALE_H_DDA_THING0 = 0 scaler.SCALE_H_DDA_THING2 = 0 scaler.SCALE_H_DDA_THING1 = 0 # horizontal scaling scaler.SCALE_H_RATIO_0 = int(in_W / out_W * 0x400000) scaler.SCALE_H_RATIO_4 = 0 # XXX what does this do? scaler.SCALE_H_RATIO_1 = 0 # XXX what does this do? scaler.SCALE_H_RATIO_2 = int(out_W / in_W * 0x400000) # XXX what does this set do? zeroing this one out doesn't work scaler.SCALE_H_RATIO_3 = 0 # XXX what does this set do? scaler.SCALE_H_RATIO_5 = 0 # XXX what does this set do? scaler.SCALE_H_FLAGS.set(EN=1) scaler.SCALE_FILTER_H_BLOCK0[0].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[1].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[0].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[2].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[3].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[1].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[4].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[5].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[2].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[6].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[7].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[3].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[8].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[9].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[4].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[10].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[11].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[5].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[12].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[13].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[6].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[14].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[15].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[7].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[16].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[17].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[8].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[18].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[19].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[9].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[20].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[21].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[10].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[22].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[23].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[11].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[24].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[25].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[12].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[26].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[27].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[13].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[28].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[29].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[14].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[30].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[31].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[15].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[32].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[33].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[16].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[34].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[35].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[17].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[36].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[37].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[18].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[38].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[39].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[19].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[40].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[41].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[20].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[42].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[43].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[21].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[44].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[45].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[22].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[46].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[47].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[23].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[48].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[49].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[24].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[50].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[51].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[25].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[52].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[53].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[26].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[54].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[55].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[27].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[56].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[57].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[28].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[58].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[59].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[29].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[60].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[61].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[30].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[62].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[63].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[31].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[64].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[65].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[32].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[66].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[67].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[33].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[68].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[69].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[34].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[70].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[71].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[35].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[72].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[73].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[36].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[74].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[75].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[37].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[76].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[77].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[38].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[78].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[79].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[39].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[80].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[81].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[40].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[82].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[83].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[41].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[84].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[85].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[42].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[86].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[87].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[43].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[88].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[89].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[44].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[90].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[91].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[45].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[92].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[93].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[46].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[94].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[95].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[47].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[96].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[97].val = 0x50005 scaler.SCALE_FILTER_H_BLOCK1[48].val = 0x50000 scaler.SCALE_FILTER_H_BLOCK0[98].val = 0xb000b scaler.SCALE_FILTER_H_BLOCK0[99].val = 0x100010 scaler.SCALE_FILTER_H_BLOCK1[49].val = 0x10000b scaler.SCALE_FILTER_H_BLOCK0[100].val = 0x140014 scaler.SCALE_FILTER_H_BLOCK0[101].val = 0x180018 scaler.SCALE_FILTER_H_BLOCK1[50].val = 0x180014 scaler.SCALE_FILTER_H_BLOCK0[102].val = 0x1c001c scaler.SCALE_FILTER_H_BLOCK0[103].val = 0x200020 scaler.SCALE_FILTER_H_BLOCK1[51].val = 0x20001c scaler.SCALE_FILTER_H_BLOCK0[104].val = 0x230023 scaler.SCALE_FILTER_H_BLOCK0[105].val = 0x260026 scaler.SCALE_FILTER_H_BLOCK1[52].val = 0x260023 scaler.SCALE_FILTER_H_BLOCK0[106].val = 0x290029 scaler.SCALE_FILTER_H_BLOCK0[107].val = 0x2c002c scaler.SCALE_FILTER_H_BLOCK1[53].val = 0x2c0029 scaler.SCALE_FILTER_H_BLOCK0[108].val = 0x2e002e scaler.SCALE_FILTER_H_BLOCK0[109].val = 0x300030 scaler.SCALE_FILTER_H_BLOCK1[54].val = 0x30002e scaler.SCALE_FILTER_H_BLOCK0[110].val = 0x320032 scaler.SCALE_FILTER_H_BLOCK0[111].val = 0x330033 scaler.SCALE_FILTER_H_BLOCK1[55].val = 0x330032 scaler.SCALE_FILTER_H_BLOCK0[112].val = 0xff87ff87 scaler.SCALE_FILTER_H_BLOCK0[113].val = 0xff90ff90 scaler.SCALE_FILTER_H_BLOCK1[56].val = 0xff90ff87 scaler.SCALE_FILTER_H_BLOCK0[114].val = 0xff99ff99 scaler.SCALE_FILTER_H_BLOCK0[115].val = 0xffa1ffa1 scaler.SCALE_FILTER_H_BLOCK1[57].val = 0xffa1ff99 scaler.SCALE_FILTER_H_BLOCK0[116].val = 0xffaaffaa scaler.SCALE_FILTER_H_BLOCK0[117].val = 0xffb2ffb2 scaler.SCALE_FILTER_H_BLOCK1[58].val = 0xffb2ffaa scaler.SCALE_FILTER_H_BLOCK0[118].val = 0xffbaffba scaler.SCALE_FILTER_H_BLOCK0[119].val = 0xffc2ffc2 scaler.SCALE_FILTER_H_BLOCK1[59].val = 0xffc2ffba scaler.SCALE_FILTER_H_BLOCK0[120].val = 0xffcaffca scaler.SCALE_FILTER_H_BLOCK0[121].val = 0xffd2ffd2 scaler.SCALE_FILTER_H_BLOCK1[60].val = 0xffd2ffca scaler.SCALE_FILTER_H_BLOCK0[122].val = 0xffd9ffd9 scaler.SCALE_FILTER_H_BLOCK0[123].val = 0xffe0ffe0 scaler.SCALE_FILTER_H_BLOCK1[61].val = 0xffe0ffd9 scaler.SCALE_FILTER_H_BLOCK0[124].val = 0xffe7ffe7 scaler.SCALE_FILTER_H_BLOCK0[125].val = 0xffeeffee scaler.SCALE_FILTER_H_BLOCK1[62].val = 0xffeeffe7 scaler.SCALE_FILTER_H_BLOCK0[126].val = 0xfff4fff4 scaler.SCALE_FILTER_H_BLOCK0[127].val = 0xfffafffa scaler.SCALE_FILTER_H_BLOCK1[63].val = 0xfffafff4 scaler.SCALE_FILTER_H_BLOCK0[128].val = 0xff06ff06 scaler.SCALE_FILTER_H_BLOCK0[129].val = 0xff0cff0c scaler.SCALE_FILTER_H_BLOCK1[64].val = 0xff0cff06 scaler.SCALE_FILTER_H_BLOCK0[130].val = 0xff13ff13 scaler.SCALE_FILTER_H_BLOCK0[131].val = 0xff1aff1a scaler.SCALE_FILTER_H_BLOCK1[65].val = 0xff1aff13 scaler.SCALE_FILTER_H_BLOCK0[132].val = 0xff21ff21 scaler.SCALE_FILTER_H_BLOCK0[133].val = 0xff28ff28 scaler.SCALE_FILTER_H_BLOCK1[66].val = 0xff28ff21 scaler.SCALE_FILTER_H_BLOCK0[134].val = 0xff30ff30 scaler.SCALE_FILTER_H_BLOCK0[135].val = 0xff38ff38 scaler.SCALE_FILTER_H_BLOCK1[67].val = 0xff38ff30 scaler.SCALE_FILTER_H_BLOCK0[136].val = 0xff41ff41 scaler.SCALE_FILTER_H_BLOCK0[137].val = 0xff49ff49 scaler.SCALE_FILTER_H_BLOCK1[68].val = 0xff49ff41 scaler.SCALE_FILTER_H_BLOCK0[138].val = 0xff52ff52 scaler.SCALE_FILTER_H_BLOCK0[139].val = 0xff5bff5b scaler.SCALE_FILTER_H_BLOCK1[69].val = 0xff5bff52 scaler.SCALE_FILTER_H_BLOCK0[140].val = 0xff63ff63 scaler.SCALE_FILTER_H_BLOCK0[141].val = 0xff6cff6c scaler.SCALE_FILTER_H_BLOCK1[70].val = 0xff6cff63 scaler.SCALE_FILTER_H_BLOCK0[142].val = 0xff75ff75 scaler.SCALE_FILTER_H_BLOCK0[143].val = 0xff7eff7e scaler.SCALE_FILTER_H_BLOCK1[71].val = 0xff7eff75 scaler.SCALE_FILTER_H_BLOCK0[144].val = 0xff02ff02 scaler.SCALE_FILTER_H_BLOCK0[145].val = 0xfefcfefc scaler.SCALE_FILTER_H_BLOCK1[72].val = 0xfefcff02 scaler.SCALE_FILTER_H_BLOCK0[146].val = 0xfef7fef7 scaler.SCALE_FILTER_H_BLOCK0[147].val = 0xfef3fef3 scaler.SCALE_FILTER_H_BLOCK1[73].val = 0xfef3fef7 scaler.SCALE_FILTER_H_BLOCK0[148].val = 0xfeeffeef scaler.SCALE_FILTER_H_BLOCK0[149].val = 0xfeedfeed scaler.SCALE_FILTER_H_BLOCK1[74].val = 0xfeedfeef scaler.SCALE_FILTER_H_BLOCK0[150].val = 0xfeecfeec scaler.SCALE_FILTER_H_BLOCK0[151].val = 0xfeebfeeb scaler.SCALE_FILTER_H_BLOCK1[75].val = 0xfeebfeec scaler.SCALE_FILTER_H_BLOCK0[152].val = 0xfeebfeeb scaler.SCALE_FILTER_H_BLOCK0[153].val = 0xfeecfeec scaler.SCALE_FILTER_H_BLOCK1[76].val = 0xfeecfeeb scaler.SCALE_FILTER_H_BLOCK0[154].val = 0xfeeefeee scaler.SCALE_FILTER_H_BLOCK0[155].val = 0xfef1fef1 scaler.SCALE_FILTER_H_BLOCK1[77].val = 0xfef1feee scaler.SCALE_FILTER_H_BLOCK0[156].val = 0xfef4fef4 scaler.SCALE_FILTER_H_BLOCK0[157].val = 0xfef8fef8 scaler.SCALE_FILTER_H_BLOCK1[78].val = 0xfef8fef4 scaler.SCALE_FILTER_H_BLOCK0[158].val = 0xfefcfefc scaler.SCALE_FILTER_H_BLOCK0[159].val = 0xff01ff01 scaler.SCALE_FILTER_H_BLOCK1[79].val = 0xff01fefc scaler.SCALE_FILTER_H_BLOCK0[160].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[161].val = 0xffe7ffe7 scaler.SCALE_FILTER_H_BLOCK1[80].val = 0xffe70000 scaler.SCALE_FILTER_H_BLOCK0[162].val = 0xffcfffcf scaler.SCALE_FILTER_H_BLOCK0[163].val = 0xffb9ffb9 scaler.SCALE_FILTER_H_BLOCK1[81].val = 0xffb9ffcf scaler.SCALE_FILTER_H_BLOCK0[164].val = 0xffa4ffa4 scaler.SCALE_FILTER_H_BLOCK0[165].val = 0xff90ff90 scaler.SCALE_FILTER_H_BLOCK1[82].val = 0xff90ffa4 scaler.SCALE_FILTER_H_BLOCK0[166].val = 0xff7dff7d scaler.SCALE_FILTER_H_BLOCK0[167].val = 0xff6bff6b scaler.SCALE_FILTER_H_BLOCK1[83].val = 0xff6bff7d scaler.SCALE_FILTER_H_BLOCK0[168].val = 0xff5bff5b scaler.SCALE_FILTER_H_BLOCK0[169].val = 0xff4cff4c scaler.SCALE_FILTER_H_BLOCK1[84].val = 0xff4cff5b scaler.SCALE_FILTER_H_BLOCK0[170].val = 0xff3eff3e scaler.SCALE_FILTER_H_BLOCK0[171].val = 0xff31ff31 scaler.SCALE_FILTER_H_BLOCK1[85].val = 0xff31ff3e scaler.SCALE_FILTER_H_BLOCK0[172].val = 0xff26ff26 scaler.SCALE_FILTER_H_BLOCK0[173].val = 0xff1bff1b scaler.SCALE_FILTER_H_BLOCK1[86].val = 0xff1bff26 scaler.SCALE_FILTER_H_BLOCK0[174].val = 0xff12ff12 scaler.SCALE_FILTER_H_BLOCK0[175].val = 0xff0aff0a scaler.SCALE_FILTER_H_BLOCK1[87].val = 0xff0aff12 scaler.SCALE_FILTER_H_BLOCK0[176].val = 0x2210221 scaler.SCALE_FILTER_H_BLOCK0[177].val = 0x1f901f9 scaler.SCALE_FILTER_H_BLOCK1[88].val = 0x1f90221 scaler.SCALE_FILTER_H_BLOCK0[178].val = 0x1d001d0 scaler.SCALE_FILTER_H_BLOCK0[179].val = 0x1a901a9 scaler.SCALE_FILTER_H_BLOCK1[89].val = 0x1a901d0 scaler.SCALE_FILTER_H_BLOCK0[180].val = 0x1820182 scaler.SCALE_FILTER_H_BLOCK0[181].val = 0x15d015d scaler.SCALE_FILTER_H_BLOCK1[90].val = 0x15d0182 scaler.SCALE_FILTER_H_BLOCK0[182].val = 0x1380138 scaler.SCALE_FILTER_H_BLOCK0[183].val = 0x1140114 scaler.SCALE_FILTER_H_BLOCK1[91].val = 0x1140138 scaler.SCALE_FILTER_H_BLOCK0[184].val = 0xf100f1 scaler.SCALE_FILTER_H_BLOCK0[185].val = 0xcf00cf scaler.SCALE_FILTER_H_BLOCK1[92].val = 0xcf00f1 scaler.SCALE_FILTER_H_BLOCK0[186].val = 0xae00ae scaler.SCALE_FILTER_H_BLOCK0[187].val = 0x8e008e scaler.SCALE_FILTER_H_BLOCK1[93].val = 0x8e00ae scaler.SCALE_FILTER_H_BLOCK0[188].val = 0x6f006f scaler.SCALE_FILTER_H_BLOCK0[189].val = 0x520052 scaler.SCALE_FILTER_H_BLOCK1[94].val = 0x52006f scaler.SCALE_FILTER_H_BLOCK0[190].val = 0x350035 scaler.SCALE_FILTER_H_BLOCK0[191].val = 0x1a001a scaler.SCALE_FILTER_H_BLOCK1[95].val = 0x1a0035 scaler.SCALE_FILTER_H_BLOCK0[192].val = 0x4e404e4 scaler.SCALE_FILTER_H_BLOCK0[193].val = 0x4b804b8 scaler.SCALE_FILTER_H_BLOCK1[96].val = 0x4b804e4 scaler.SCALE_FILTER_H_BLOCK0[194].val = 0x48b048b scaler.SCALE_FILTER_H_BLOCK0[195].val = 0x45f045f scaler.SCALE_FILTER_H_BLOCK1[97].val = 0x45f048b scaler.SCALE_FILTER_H_BLOCK0[196].val = 0x4320432 scaler.SCALE_FILTER_H_BLOCK0[197].val = 0x4050405 scaler.SCALE_FILTER_H_BLOCK1[98].val = 0x4050432 scaler.SCALE_FILTER_H_BLOCK0[198].val = 0x3d803d8 scaler.SCALE_FILTER_H_BLOCK0[199].val = 0x3ab03ab scaler.SCALE_FILTER_H_BLOCK1[99].val = 0x3ab03d8 scaler.SCALE_FILTER_H_BLOCK0[200].val = 0x37e037e scaler.SCALE_FILTER_H_BLOCK0[201].val = 0x3510351 scaler.SCALE_FILTER_H_BLOCK1[100].val = 0x351037e scaler.SCALE_FILTER_H_BLOCK0[202].val = 0x3240324 scaler.SCALE_FILTER_H_BLOCK0[203].val = 0x2f802f8 scaler.SCALE_FILTER_H_BLOCK1[101].val = 0x2f80324 scaler.SCALE_FILTER_H_BLOCK0[204].val = 0x2cc02cc scaler.SCALE_FILTER_H_BLOCK0[205].val = 0x2a102a1 scaler.SCALE_FILTER_H_BLOCK1[102].val = 0x2a102cc scaler.SCALE_FILTER_H_BLOCK0[206].val = 0x2760276 scaler.SCALE_FILTER_H_BLOCK0[207].val = 0x24b024b scaler.SCALE_FILTER_H_BLOCK1[103].val = 0x24b0276 scaler.SCALE_FILTER_H_BLOCK0[208].val = 0x73b073b scaler.SCALE_FILTER_H_BLOCK0[209].val = 0x71e071e scaler.SCALE_FILTER_H_BLOCK1[104].val = 0x71e073b scaler.SCALE_FILTER_H_BLOCK0[210].val = 0x7000700 scaler.SCALE_FILTER_H_BLOCK0[211].val = 0x6e106e1 scaler.SCALE_FILTER_H_BLOCK1[105].val = 0x6e10700 scaler.SCALE_FILTER_H_BLOCK0[212].val = 0x6c006c0 scaler.SCALE_FILTER_H_BLOCK0[213].val = 0x69e069e scaler.SCALE_FILTER_H_BLOCK1[106].val = 0x69e06c0 scaler.SCALE_FILTER_H_BLOCK0[214].val = 0x67a067a scaler.SCALE_FILTER_H_BLOCK0[215].val = 0x6560656 scaler.SCALE_FILTER_H_BLOCK1[107].val = 0x656067a scaler.SCALE_FILTER_H_BLOCK0[216].val = 0x6300630 scaler.SCALE_FILTER_H_BLOCK0[217].val = 0x6090609 scaler.SCALE_FILTER_H_BLOCK1[108].val = 0x6090630 scaler.SCALE_FILTER_H_BLOCK0[218].val = 0x5e205e2 scaler.SCALE_FILTER_H_BLOCK0[219].val = 0x5b905b9 scaler.SCALE_FILTER_H_BLOCK1[109].val = 0x5b905e2 scaler.SCALE_FILTER_H_BLOCK0[220].val = 0x5900590 scaler.SCALE_FILTER_H_BLOCK0[221].val = 0x5660566 scaler.SCALE_FILTER_H_BLOCK1[110].val = 0x5660590 scaler.SCALE_FILTER_H_BLOCK0[222].val = 0x53b053b scaler.SCALE_FILTER_H_BLOCK0[223].val = 0x5100510 scaler.SCALE_FILTER_H_BLOCK1[111].val = 0x510053b scaler.SCALE_FILTER_H_BLOCK0[224].val = 0x82c082c scaler.SCALE_FILTER_H_BLOCK0[225].val = 0x82b082b scaler.SCALE_FILTER_H_BLOCK1[112].val = 0x82b082c scaler.SCALE_FILTER_H_BLOCK0[226].val = 0x8280828 scaler.SCALE_FILTER_H_BLOCK0[227].val = 0x8200820 scaler.SCALE_FILTER_H_BLOCK1[113].val = 0x8200828 scaler.SCALE_FILTER_H_BLOCK0[228].val = 0x81b081b scaler.SCALE_FILTER_H_BLOCK0[229].val = 0x8130813 scaler.SCALE_FILTER_H_BLOCK1[114].val = 0x813081b scaler.SCALE_FILTER_H_BLOCK0[230].val = 0x8080808 scaler.SCALE_FILTER_H_BLOCK0[231].val = 0x7fc07fc scaler.SCALE_FILTER_H_BLOCK1[115].val = 0x7fc0808 scaler.SCALE_FILTER_H_BLOCK0[232].val = 0x7ed07ed scaler.SCALE_FILTER_H_BLOCK0[233].val = 0x7dd07dd scaler.SCALE_FILTER_H_BLOCK1[116].val = 0x7dd07ed scaler.SCALE_FILTER_H_BLOCK0[234].val = 0x7cb07cb scaler.SCALE_FILTER_H_BLOCK0[235].val = 0x7b607b6 scaler.SCALE_FILTER_H_BLOCK1[117].val = 0x7b607cb scaler.SCALE_FILTER_H_BLOCK0[236].val = 0x7a207a2 scaler.SCALE_FILTER_H_BLOCK0[237].val = 0x78a078a scaler.SCALE_FILTER_H_BLOCK1[118].val = 0x78a07a2 scaler.SCALE_FILTER_H_BLOCK0[238].val = 0x7710771 scaler.SCALE_FILTER_H_BLOCK0[239].val = 0x7570757 scaler.SCALE_FILTER_H_BLOCK1[119].val = 0x7570771 scaler.SCALE_FILTER_H_BLOCK0[240].val = 0x73d073d scaler.SCALE_FILTER_H_BLOCK0[241].val = 0x7570757 scaler.SCALE_FILTER_H_BLOCK1[120].val = 0x757073d scaler.SCALE_FILTER_H_BLOCK0[242].val = 0x7710771 scaler.SCALE_FILTER_H_BLOCK0[243].val = 0x78a078a scaler.SCALE_FILTER_H_BLOCK1[121].val = 0x78a0771 scaler.SCALE_FILTER_H_BLOCK0[244].val = 0x7a207a2 scaler.SCALE_FILTER_H_BLOCK0[245].val = 0x7b607b6 scaler.SCALE_FILTER_H_BLOCK1[122].val = 0x7b607a2 scaler.SCALE_FILTER_H_BLOCK0[246].val = 0x7cb07cb scaler.SCALE_FILTER_H_BLOCK0[247].val = 0x7dd07dd scaler.SCALE_FILTER_H_BLOCK1[123].val = 0x7dd07cb scaler.SCALE_FILTER_H_BLOCK0[248].val = 0x7ed07ed scaler.SCALE_FILTER_H_BLOCK0[249].val = 0x7fc07fc scaler.SCALE_FILTER_H_BLOCK1[124].val = 0x7fc07ed scaler.SCALE_FILTER_H_BLOCK0[250].val = 0x8080808 scaler.SCALE_FILTER_H_BLOCK0[251].val = 0x8130813 scaler.SCALE_FILTER_H_BLOCK1[125].val = 0x8130808 scaler.SCALE_FILTER_H_BLOCK0[252].val = 0x81b081b scaler.SCALE_FILTER_H_BLOCK0[253].val = 0x8200820 scaler.SCALE_FILTER_H_BLOCK1[126].val = 0x820081b scaler.SCALE_FILTER_H_BLOCK0[254].val = 0x8280828 scaler.SCALE_FILTER_H_BLOCK0[255].val = 0x82b082b scaler.SCALE_FILTER_H_BLOCK1[127].val = 0x82b0828 scaler.SCALE_FILTER_H_BLOCK0[256].val = 0x4e404e4 scaler.SCALE_FILTER_H_BLOCK0[257].val = 0x5100510 scaler.SCALE_FILTER_H_BLOCK1[128].val = 0x51004e4 scaler.SCALE_FILTER_H_BLOCK0[258].val = 0x53b053b scaler.SCALE_FILTER_H_BLOCK0[259].val = 0x5660566 scaler.SCALE_FILTER_H_BLOCK1[129].val = 0x566053b scaler.SCALE_FILTER_H_BLOCK0[260].val = 0x5900590 scaler.SCALE_FILTER_H_BLOCK0[261].val = 0x5b905b9 scaler.SCALE_FILTER_H_BLOCK1[130].val = 0x5b90590 scaler.SCALE_FILTER_H_BLOCK0[262].val = 0x5e205e2 scaler.SCALE_FILTER_H_BLOCK0[263].val = 0x6090609 scaler.SCALE_FILTER_H_BLOCK1[131].val = 0x60905e2 scaler.SCALE_FILTER_H_BLOCK0[264].val = 0x6300630 scaler.SCALE_FILTER_H_BLOCK0[265].val = 0x6560656 scaler.SCALE_FILTER_H_BLOCK1[132].val = 0x6560630 scaler.SCALE_FILTER_H_BLOCK0[266].val = 0x67a067a scaler.SCALE_FILTER_H_BLOCK0[267].val = 0x69e069e scaler.SCALE_FILTER_H_BLOCK1[133].val = 0x69e067a scaler.SCALE_FILTER_H_BLOCK0[268].val = 0x6c006c0 scaler.SCALE_FILTER_H_BLOCK0[269].val = 0x6e106e1 scaler.SCALE_FILTER_H_BLOCK1[134].val = 0x6e106c0 scaler.SCALE_FILTER_H_BLOCK0[270].val = 0x7000700 scaler.SCALE_FILTER_H_BLOCK0[271].val = 0x71e071e scaler.SCALE_FILTER_H_BLOCK1[135].val = 0x71e0700 scaler.SCALE_FILTER_H_BLOCK0[272].val = 0x2210221 scaler.SCALE_FILTER_H_BLOCK0[273].val = 0x24b024b scaler.SCALE_FILTER_H_BLOCK1[136].val = 0x24b0221 scaler.SCALE_FILTER_H_BLOCK0[274].val = 0x2760276 scaler.SCALE_FILTER_H_BLOCK0[275].val = 0x2a102a1 scaler.SCALE_FILTER_H_BLOCK1[137].val = 0x2a10276 scaler.SCALE_FILTER_H_BLOCK0[276].val = 0x2cc02cc scaler.SCALE_FILTER_H_BLOCK0[277].val = 0x2f802f8 scaler.SCALE_FILTER_H_BLOCK1[138].val = 0x2f802cc scaler.SCALE_FILTER_H_BLOCK0[278].val = 0x3240324 scaler.SCALE_FILTER_H_BLOCK0[279].val = 0x3510351 scaler.SCALE_FILTER_H_BLOCK1[139].val = 0x3510324 scaler.SCALE_FILTER_H_BLOCK0[280].val = 0x37e037e scaler.SCALE_FILTER_H_BLOCK0[281].val = 0x3ab03ab scaler.SCALE_FILTER_H_BLOCK1[140].val = 0x3ab037e scaler.SCALE_FILTER_H_BLOCK0[282].val = 0x3d803d8 scaler.SCALE_FILTER_H_BLOCK0[283].val = 0x4050405 scaler.SCALE_FILTER_H_BLOCK1[141].val = 0x40503d8 scaler.SCALE_FILTER_H_BLOCK0[284].val = 0x4320432 scaler.SCALE_FILTER_H_BLOCK0[285].val = 0x45f045f scaler.SCALE_FILTER_H_BLOCK1[142].val = 0x45f0432 scaler.SCALE_FILTER_H_BLOCK0[286].val = 0x48b048b scaler.SCALE_FILTER_H_BLOCK0[287].val = 0x4b804b8 scaler.SCALE_FILTER_H_BLOCK1[143].val = 0x4b8048b scaler.SCALE_FILTER_H_BLOCK0[288].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[289].val = 0x1a001a scaler.SCALE_FILTER_H_BLOCK1[144].val = 0x1a0000 scaler.SCALE_FILTER_H_BLOCK0[290].val = 0x350035 scaler.SCALE_FILTER_H_BLOCK0[291].val = 0x520052 scaler.SCALE_FILTER_H_BLOCK1[145].val = 0x520035 scaler.SCALE_FILTER_H_BLOCK0[292].val = 0x6f006f scaler.SCALE_FILTER_H_BLOCK0[293].val = 0x8e008e scaler.SCALE_FILTER_H_BLOCK1[146].val = 0x8e006f scaler.SCALE_FILTER_H_BLOCK0[294].val = 0xae00ae scaler.SCALE_FILTER_H_BLOCK0[295].val = 0xcf00cf scaler.SCALE_FILTER_H_BLOCK1[147].val = 0xcf00ae scaler.SCALE_FILTER_H_BLOCK0[296].val = 0xf100f1 scaler.SCALE_FILTER_H_BLOCK0[297].val = 0x1140114 scaler.SCALE_FILTER_H_BLOCK1[148].val = 0x11400f1 scaler.SCALE_FILTER_H_BLOCK0[298].val = 0x1380138 scaler.SCALE_FILTER_H_BLOCK0[299].val = 0x15d015d scaler.SCALE_FILTER_H_BLOCK1[149].val = 0x15d0138 scaler.SCALE_FILTER_H_BLOCK0[300].val = 0x1820182 scaler.SCALE_FILTER_H_BLOCK0[301].val = 0x1a901a9 scaler.SCALE_FILTER_H_BLOCK1[150].val = 0x1a90182 scaler.SCALE_FILTER_H_BLOCK0[302].val = 0x1d001d0 scaler.SCALE_FILTER_H_BLOCK0[303].val = 0x1f901f9 scaler.SCALE_FILTER_H_BLOCK1[151].val = 0x1f901d0 scaler.SCALE_FILTER_H_BLOCK0[304].val = 0xff02ff02 scaler.SCALE_FILTER_H_BLOCK0[305].val = 0xff0aff0a scaler.SCALE_FILTER_H_BLOCK1[152].val = 0xff0aff02 scaler.SCALE_FILTER_H_BLOCK0[306].val = 0xff12ff12 scaler.SCALE_FILTER_H_BLOCK0[307].val = 0xff1bff1b scaler.SCALE_FILTER_H_BLOCK1[153].val = 0xff1bff12 scaler.SCALE_FILTER_H_BLOCK0[308].val = 0xff26ff26 scaler.SCALE_FILTER_H_BLOCK0[309].val = 0xff31ff31 scaler.SCALE_FILTER_H_BLOCK1[154].val = 0xff31ff26 scaler.SCALE_FILTER_H_BLOCK0[310].val = 0xff3eff3e scaler.SCALE_FILTER_H_BLOCK0[311].val = 0xff4cff4c scaler.SCALE_FILTER_H_BLOCK1[155].val = 0xff4cff3e scaler.SCALE_FILTER_H_BLOCK0[312].val = 0xff5bff5b scaler.SCALE_FILTER_H_BLOCK0[313].val = 0xff6bff6b scaler.SCALE_FILTER_H_BLOCK1[156].val = 0xff6bff5b scaler.SCALE_FILTER_H_BLOCK0[314].val = 0xff7dff7d scaler.SCALE_FILTER_H_BLOCK0[315].val = 0xff90ff90 scaler.SCALE_FILTER_H_BLOCK1[157].val = 0xff90ff7d scaler.SCALE_FILTER_H_BLOCK0[316].val = 0xffa4ffa4 scaler.SCALE_FILTER_H_BLOCK0[317].val = 0xffb9ffb9 scaler.SCALE_FILTER_H_BLOCK1[158].val = 0xffb9ffa4 scaler.SCALE_FILTER_H_BLOCK0[318].val = 0xffcfffcf scaler.SCALE_FILTER_H_BLOCK0[319].val = 0xffe7ffe7 scaler.SCALE_FILTER_H_BLOCK1[159].val = 0xffe7ffcf scaler.SCALE_FILTER_H_BLOCK0[320].val = 0xff06ff06 scaler.SCALE_FILTER_H_BLOCK0[321].val = 0xff01ff01 scaler.SCALE_FILTER_H_BLOCK1[160].val = 0xff01ff06 scaler.SCALE_FILTER_H_BLOCK0[322].val = 0xfefcfefc scaler.SCALE_FILTER_H_BLOCK0[323].val = 0xfef8fef8 scaler.SCALE_FILTER_H_BLOCK1[161].val = 0xfef8fefc scaler.SCALE_FILTER_H_BLOCK0[324].val = 0xfef4fef4 scaler.SCALE_FILTER_H_BLOCK0[325].val = 0xfef1fef1 scaler.SCALE_FILTER_H_BLOCK1[162].val = 0xfef1fef4 scaler.SCALE_FILTER_H_BLOCK0[326].val = 0xfeeefeee scaler.SCALE_FILTER_H_BLOCK0[327].val = 0xfeecfeec scaler.SCALE_FILTER_H_BLOCK1[163].val = 0xfeecfeee scaler.SCALE_FILTER_H_BLOCK0[328].val = 0xfeebfeeb scaler.SCALE_FILTER_H_BLOCK0[329].val = 0xfeebfeeb scaler.SCALE_FILTER_H_BLOCK1[164].val = 0xfeebfeeb scaler.SCALE_FILTER_H_BLOCK0[330].val = 0xfeecfeec scaler.SCALE_FILTER_H_BLOCK0[331].val = 0xfeedfeed scaler.SCALE_FILTER_H_BLOCK1[165].val = 0xfeedfeec scaler.SCALE_FILTER_H_BLOCK0[332].val = 0xfeeffeef scaler.SCALE_FILTER_H_BLOCK0[333].val = 0xfef3fef3 scaler.SCALE_FILTER_H_BLOCK1[166].val = 0xfef3feef scaler.SCALE_FILTER_H_BLOCK0[334].val = 0xfef7fef7 scaler.SCALE_FILTER_H_BLOCK0[335].val = 0xfefcfefc scaler.SCALE_FILTER_H_BLOCK1[167].val = 0xfefcfef7 scaler.SCALE_FILTER_H_BLOCK0[336].val = 0xff87ff87 scaler.SCALE_FILTER_H_BLOCK0[337].val = 0xff7eff7e scaler.SCALE_FILTER_H_BLOCK1[168].val = 0xff7eff87 scaler.SCALE_FILTER_H_BLOCK0[338].val = 0xff75ff75 scaler.SCALE_FILTER_H_BLOCK0[339].val = 0xff6cff6c scaler.SCALE_FILTER_H_BLOCK1[169].val = 0xff6cff75 scaler.SCALE_FILTER_H_BLOCK0[340].val = 0xff63ff63 scaler.SCALE_FILTER_H_BLOCK0[341].val = 0xff5bff5b scaler.SCALE_FILTER_H_BLOCK1[170].val = 0xff5bff63 scaler.SCALE_FILTER_H_BLOCK0[342].val = 0xff52ff52 scaler.SCALE_FILTER_H_BLOCK0[343].val = 0xff49ff49 scaler.SCALE_FILTER_H_BLOCK1[171].val = 0xff49ff52 scaler.SCALE_FILTER_H_BLOCK0[344].val = 0xff41ff41 scaler.SCALE_FILTER_H_BLOCK0[345].val = 0xff38ff38 scaler.SCALE_FILTER_H_BLOCK1[172].val = 0xff38ff41 scaler.SCALE_FILTER_H_BLOCK0[346].val = 0xff30ff30 scaler.SCALE_FILTER_H_BLOCK0[347].val = 0xff28ff28 scaler.SCALE_FILTER_H_BLOCK1[173].val = 0xff28ff30 scaler.SCALE_FILTER_H_BLOCK0[348].val = 0xff21ff21 scaler.SCALE_FILTER_H_BLOCK0[349].val = 0xff1aff1a scaler.SCALE_FILTER_H_BLOCK1[174].val = 0xff1aff21 scaler.SCALE_FILTER_H_BLOCK0[350].val = 0xff13ff13 scaler.SCALE_FILTER_H_BLOCK0[351].val = 0xff0cff0c scaler.SCALE_FILTER_H_BLOCK1[175].val = 0xff0cff13 scaler.SCALE_FILTER_H_BLOCK0[352].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[353].val = 0xfffafffa scaler.SCALE_FILTER_H_BLOCK1[176].val = 0xfffa0000 scaler.SCALE_FILTER_H_BLOCK0[354].val = 0xfff4fff4 scaler.SCALE_FILTER_H_BLOCK0[355].val = 0xffeeffee scaler.SCALE_FILTER_H_BLOCK1[177].val = 0xffeefff4 scaler.SCALE_FILTER_H_BLOCK0[356].val = 0xffe7ffe7 scaler.SCALE_FILTER_H_BLOCK0[357].val = 0xffe0ffe0 scaler.SCALE_FILTER_H_BLOCK1[178].val = 0xffe0ffe7 scaler.SCALE_FILTER_H_BLOCK0[358].val = 0xffd9ffd9 scaler.SCALE_FILTER_H_BLOCK0[359].val = 0xffd2ffd2 scaler.SCALE_FILTER_H_BLOCK1[179].val = 0xffd2ffd9 scaler.SCALE_FILTER_H_BLOCK0[360].val = 0xffcaffca scaler.SCALE_FILTER_H_BLOCK0[361].val = 0xffc2ffc2 scaler.SCALE_FILTER_H_BLOCK1[180].val = 0xffc2ffca scaler.SCALE_FILTER_H_BLOCK0[362].val = 0xffbaffba scaler.SCALE_FILTER_H_BLOCK0[363].val = 0xffb2ffb2 scaler.SCALE_FILTER_H_BLOCK1[181].val = 0xffb2ffba scaler.SCALE_FILTER_H_BLOCK0[364].val = 0xffaaffaa scaler.SCALE_FILTER_H_BLOCK0[365].val = 0xffa1ffa1 scaler.SCALE_FILTER_H_BLOCK1[182].val = 0xffa1ffaa scaler.SCALE_FILTER_H_BLOCK0[366].val = 0xff99ff99 scaler.SCALE_FILTER_H_BLOCK0[367].val = 0xff90ff90 scaler.SCALE_FILTER_H_BLOCK1[183].val = 0xff90ff99 scaler.SCALE_FILTER_H_BLOCK0[368].val = 0x340034 scaler.SCALE_FILTER_H_BLOCK0[369].val = 0x330033 scaler.SCALE_FILTER_H_BLOCK1[184].val = 0x330034 scaler.SCALE_FILTER_H_BLOCK0[370].val = 0x320032 scaler.SCALE_FILTER_H_BLOCK0[371].val = 0x300030 scaler.SCALE_FILTER_H_BLOCK1[185].val = 0x300032 scaler.SCALE_FILTER_H_BLOCK0[372].val = 0x2e002e scaler.SCALE_FILTER_H_BLOCK0[373].val = 0x2c002c scaler.SCALE_FILTER_H_BLOCK1[186].val = 0x2c002e scaler.SCALE_FILTER_H_BLOCK0[374].val = 0x290029 scaler.SCALE_FILTER_H_BLOCK0[375].val = 0x260026 scaler.SCALE_FILTER_H_BLOCK1[187].val = 0x260029 scaler.SCALE_FILTER_H_BLOCK0[376].val = 0x230023 scaler.SCALE_FILTER_H_BLOCK0[377].val = 0x200020 scaler.SCALE_FILTER_H_BLOCK1[188].val = 0x200023 scaler.SCALE_FILTER_H_BLOCK0[378].val = 0x1c001c scaler.SCALE_FILTER_H_BLOCK0[379].val = 0x180018 scaler.SCALE_FILTER_H_BLOCK1[189].val = 0x18001c scaler.SCALE_FILTER_H_BLOCK0[380].val = 0x140014 scaler.SCALE_FILTER_H_BLOCK0[381].val = 0x100010 scaler.SCALE_FILTER_H_BLOCK1[190].val = 0x100014 scaler.SCALE_FILTER_H_BLOCK0[382].val = 0xb000b scaler.SCALE_FILTER_H_BLOCK0[383].val = 0x50005 scaler.SCALE_FILTER_H_BLOCK1[191].val = 0x5000b scaler.SCALE_FILTER_H_BLOCK0[384].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[385].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[192].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[386].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[387].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[193].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[388].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[389].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[194].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[390].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[391].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[195].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[392].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[393].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[196].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[394].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[395].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[197].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[396].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[397].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[198].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[398].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[399].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[199].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[400].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[401].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[200].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[402].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[403].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[201].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[404].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[405].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[202].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[406].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[407].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[203].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[408].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[409].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[204].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[410].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[411].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[205].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[412].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[413].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[206].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[414].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[415].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[207].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[416].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[417].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[208].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[418].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[419].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[209].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[420].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[421].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[210].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[422].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[423].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[211].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[424].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[425].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[212].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[426].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[427].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[213].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[428].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[429].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[214].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[430].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[431].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[215].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[432].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[433].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[216].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[434].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[435].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[217].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[436].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[437].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[218].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[438].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[439].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[219].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[440].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[441].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[220].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[442].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[443].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[221].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[444].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[445].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[222].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[446].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[447].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[223].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[448].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[449].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[224].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[450].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[451].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[225].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[452].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[453].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[226].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[454].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[455].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[227].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[456].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[457].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[228].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[458].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[459].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[229].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[460].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[461].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[230].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[462].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[463].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[231].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[464].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[465].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[232].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[466].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[467].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[233].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[468].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[469].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[234].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[470].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[471].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[235].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[472].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[473].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[236].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[474].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[475].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[237].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[476].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[477].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[238].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[478].val = 0x0 scaler.SCALE_FILTER_H_BLOCK0[479].val = 0x0 scaler.SCALE_FILTER_H_BLOCK1[239].val = 0x0 # pseudo linear scaling scaler.PSEUDO_LINEAR_SCALING = 0 # reshape p.write32(scaler_base + 0xe8, 0x0) # reset CM 3x p.write32(scaler_base + 0x3800, 0x0) p.write32(scaler_base + 0x3800, 0x0) p.write32(scaler_base + 0x3800, 0x0) # enable prescaler p.write32(scaler_base + 0x824, 0xc) # alpha override p.write32(scaler_base + 0x8c, 0xffff) # dither p.write32(scaler_base + 0xa00, 0x0) # commit convert p.write32(scaler_base + 0x13808, 0x0) p.write32(scaler_base + 0x1380c, 0x0) p.write32(scaler_base + 0x13800, 0x0) p.write32(scaler_base + 0x13804, 0x0) # convert map p.write32(scaler_base + 0x13810, 0x8) p.write32(scaler_base + 0x13814, 0x8) p.write32(scaler_base + 0x13818, 0x8) p.write32(scaler_base + 0x1381c, 0x8) p.write32(scaler_base + 0x13804, 0x0) p.write32(scaler_base + 0x13c04, 0x0) p.write32(scaler_base + 0x13c10, 0x8) p.write32(scaler_base + 0x13c14, 0x8) p.write32(scaler_base + 0x13c18, 0x8) p.write32(scaler_base + 0x13c1c, 0x8) # commit revert p.write32(scaler_base + 0x13c00, 0x1) # (don't) program histogram p.write32(scaler_base + 0x3000, 0x0) p.write32(scaler_base + 0x124, 0x0) # tag transform registers p.write32(scaler_base + 0x110, 0x1) # start p.write32(scaler_base + 0x98, 0xfffffffe) scaler.START = 1 start_time = time.time() while scaler.MSR_GLBL_IRQSTS.reg.DONE == 0: if time.time() - start_time > 5: print("TIMED OUT!!!") break print(f"IRQ status is now {scaler.MSR_GLBL_IRQSTS}") print(f"Debug status is now {scaler.MSR_CTRL_DBGSTS}") out_buf_new = iface.readmem(out_buf_phys, out_SZ) chexdump(out_buf_new) with Image.new(mode='RGBA', size=(out_W, out_H)) as im: for y in range(out_H): for x in range(out_W): block = out_buf_new[ y*out_STRIDE + x*out_BYTESPP: y*out_STRIDE + (x+1)*out_BYTESPP] r, g, b, a = block im.putpixel((x, y), (r, g, b, a)) im.save(output_image_fn)