def splitfour(the_string):
    """ takes a block of sprites output by gb-export.lua from aseprite.
    divides it into four line-by-line and returns them as separate sprite maps.
    if you arranged your sprites horizontally, this divides them up."""
    out = ["", "", "", ""]
    for l in the_string.split("\n"):
        sub = list(l.strip()[3:].split(","))
        length = len(sub)
        out[0] += "db " + ", ".join(sub[0:length//4]) + "\n"
        out[1] += "db " + ", ".join(sub[length//4 : length//2]) + "\n"
        out[2] += "db " + ", ".join(sub[length//2 : 3*length//4]) + "\n"
        out[3] += "db " + ", ".join(sub[3*length//4 : length]) + "\n"
    for d in out:
        print(d)
    return out

def splitn(n, the_string):
    """ takes a block of sprites output by gb-export.lua from aseprite.
    divides it into n line-by-line and returns them as separate sprite maps.

    if you arranged your sprites horizontally, this divides them up."""
    out = ["" for _ in range(n)]
    for l in the_string.split("\n"):
        sub = list(l.strip()[3:].split(", "))
        length = len(sub)
        for i in range(n):
            out[i] += "db " + ", ".join(sub[(i*length)//n:((i+1)*length)//n]) + "\n"
    for d in out:
        print(d)
    return out

def transpose_gb_tiles(the_string):
    out = [[] for _ in range(max(map(lambda l: len(l.split(", ")), the_string.split("\n"))))]

    for l in the_string.split("\n"):
        sub = list(l.strip()[3:].split(", "))
        for i, byte in enumerate(sub):
            out[i].append(byte)

    for d in out:
        print("db " + ", ".join(d))

    return out