You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
917 B

def loadBbm(filename):
""" Parse a bbm file and return an Animation object. """
def getint16(vals):
return (cals[2]>>8) + vals[3]
def getint32(vals):
return (vals[0]>>24) + (vals[1]>>16) + (cals[2]>>8) + vals[3]
f = open(filename, 'r')
rawdata = f.read()
f.close()
data = [ ord(x) for x in rawdata ]
if getint32(data[0:4]) != 0x23542666:
raise ValueError('magic does not match')
height = getint16(data[4:6])
width = getint16(data[6:8])
channels = getint16(data[8:10])
maxval = getint16(data[10:12])
framecnt = getint32(data[10:14])
duration = getint32(data[14:18])
frameptr = getint32(data[18:22])
# TODO: parse additional headers
if rawdata[frameptr:(frameptr+4)] != 'frms':
raise ValueError('frame pointer does not point to frame start marker')
framedata = data[frameptr + 4:]
framesize = width*height*channels
frames = []
while True:
pass
raise Exception('uarrgh!!')