import struct


def color(r, g, b) -> int:
    return (b << 10) | (g << 5) | r


def pack(palette) -> bytes:
    return struct.pack(f'{len(palette)}H', *palette)


obj_palette = [color(10, 10, 10), color(21, 21, 21), color(31, 0, 0)]
bg_palette = [0, color(1, 1, 1), color(0, 0, 18), color(0, 18, 25), color(18, 0, 0), color(18, 0, 18), color(25, 18, 0), color(18, 18, 25), color(18, 25, 25), color(18, 25, 31), color(25, 18, 18), color(25, 25, 18), color(31, 25, 18), color(25, 25, 25), color(25, 25, 31), color(25, 31, 25), color(25, 31, 31), color(31, 25, 25), color(31, 31, 25), color(31, 31, 31), 0x2015, color(31, 31, 31)]

obj_packed = pack(obj_palette)
bg_packed = pack(bg_palette)

with open('obj_palette.data', 'wb') as f:
    f.write(obj_packed)

with open('bg_palette.data', 'wb') as f:
    f.write(bg_packed)
