def MAT1(self, data): pos = 8 matCount = Struct.uint16(data[pos:pos+2], endian='>') pos += 4 for i in xrange(matCount): nameOff = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 name = data[nameOff:].split('\0', 1)[0] wii.chexdump(data[nameOff:nameOff+0x60]) texid = Struct.uint16(data[nameOff + 0x40:nameOff + 0x42], endian='>') wrap_s = Struct.uint8(data[nameOff + 0x42:nameOff + 0x43], endian='>') wrap_t = Struct.uint8(data[nameOff + 0x43:nameOff + 0x44], endian='>') texid2 = Struct.uint16(data[nameOff + 0x44:nameOff + 0x46], endian='>') colorA = [Struct.uint16(data[nameOff + 0x1c + x:nameOff + 0x20 + x], endian='>')/255.0 for x in range(0,8,2)] colorB = [Struct.uint16(data[nameOff + 0x22 + x:nameOff + 0x24 + x], endian='>')/255.0 for x in range(0,8,2)] flags = Struct.uint32(data[nameOff + 0x3c:nameOff + 0x40], endian='>') #numtex = 1 # Hardcoded for her pleasure #(flags>>8) & 0xf #guess numtex = bit_extract(flags, 28, 31) if numtex == 1: img = self.Textures[texid] tex = img[1].create_texture(Texture) #print 'Material 0x%02x (%s) maps to texture %s' % (i, name, img[0]) elif numtex == 2: img = self.Textures[texid] alpha = self.Textures[texid2] combo = self.ApplyMask(img[1],alpha[1]) tex = combo.create_texture(Texture) #print 'Material 0x%02x (%s) maps to texture %s and mask %s' % (i, name, img[0], alpha[0]) else: print "Bad num textures: %d"%numtex self.Materials.append((name, tex, (colorA,colorB)))
def MAT1(self, data): pos = 8 matCount = Struct.uint16(data[pos:pos + 2], endian='>') pos += 4 for i in xrange(matCount): nameOff = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 name = data[nameOff:].split('\0', 1)[0] wii.chexdump(data[nameOff:nameOff + 0x60]) texid = Struct.uint16(data[nameOff + 0x40:nameOff + 0x42], endian='>') wrap_s = Struct.uint8(data[nameOff + 0x42:nameOff + 0x43], endian='>') wrap_t = Struct.uint8(data[nameOff + 0x43:nameOff + 0x44], endian='>') texid2 = Struct.uint16(data[nameOff + 0x44:nameOff + 0x46], endian='>') colorA = [ Struct.uint16(data[nameOff + 0x1c + x:nameOff + 0x20 + x], endian='>') / 255.0 for x in range(0, 8, 2) ] colorB = [ Struct.uint16(data[nameOff + 0x22 + x:nameOff + 0x24 + x], endian='>') / 255.0 for x in range(0, 8, 2) ] flags = Struct.uint32(data[nameOff + 0x3c:nameOff + 0x40], endian='>') #numtex = 1 # Hardcoded for her pleasure #(flags>>8) & 0xf #guess numtex = bit_extract(flags, 28, 31) if numtex == 1: img = self.Textures[texid] tex = img[1].create_texture(Texture) #print 'Material 0x%02x (%s) maps to texture %s' % (i, name, img[0]) elif numtex == 2: img = self.Textures[texid] alpha = self.Textures[texid2] combo = self.ApplyMask(img[1], alpha[1]) tex = combo.create_texture(Texture) #print 'Material 0x%02x (%s) maps to texture %s and mask %s' % (i, name, img[0], alpha[0]) else: print "Bad num textures: %d" % numtex self.Materials.append((name, tex, (colorA, colorB)))
img = wx.Image("tmp.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap() w = img.GetWidth() h = img.GetHeight() dialog = imp("TPL (" + str(w) + ", " + str(h) + ")", img) dialog.ShowModal() dialog.Destroy() os.unlink("tmp.png") def RGBA8(self, (x, y), data): out = [0 for i in xrange(x * y)] inp = 0 for i in xrange(0, y, 4): for j in xrange(0, x, 4): for k in xrange(2): for l in xrange(i, i + 4, 1): for m in xrange(j, j + 4, 1): texel = Struct.uint8(data[inp:inp + 1], endian = '>') inp += 1 texel2 = Struct.uint8(data[inp:inp + 1], endian = '>') inp += 1 if (m >= x) or (l >= y): continue if k == 0: # ARARARAR a = (texel) & 0xff r = (texel2) & 0xff out[m + (l * x)] |= ((r << 0) | (a << 24)) else: # GBGBGBGB g = (texel) & 0xff b = (texel2) & 0xff out[m + (l * x)] |= ((g << 8) | (b << 16)) return ''.join(Struct.uint32(p) for p in out) def RGB5A3(self, (w, h), jar):
def Unpack(self, data): pos = 0 header = self.BREFT_Header() header.unpack(data[pos:pos + len(header)]) pos += len(header) print header assert header.magic == "REFT" assert header.version == 0xfeff0004 reft = self.BREFT_REFT() reft.unpack(data[pos:pos + len(reft)]) pos += len(reft) print reft assert reft.magic == "REFT" print "\n%08x\n" % pos reft_project = self.BREFT_REFT_Project() reft_project.unpack(data[pos:pos + len(reft_project)]) pos += len(reft_project) print reft_project string = nullterm(data[pos:pos + reft_project.str_length]) pos += reft_project.str_length print "String: %s\n" % string while pos % 2: unknown = Struct.uint8(data[pos:pos + 1]) pos += 1 print "Padding: %02x" % unknown print "\n%08x\n" % pos for x in xrange(0x30): pad = Struct.uint8(data[pos:pos + 1]) pos += 1 #print "Padding: %08x" % pad print "\n%08x\n" % pos temp = pos reft_string_header = self.BREFT_REFT_StringHeader() reft_string_header.unpack(data[pos:pos + len(reft_string_header)]) pos += len(reft_string_header) print reft_string_header print "\n%08x\n" % pos string_groups = [] for x in xrange(reft_string_header.string_cnt): str_length = Struct.uint16(data[pos:pos + 2], endian='>') pos += 2 print "String Length with null added: %04x" % str_length string = nullterm(data[pos:pos + str_length]) pos += str_length print "String: %s" % string string_section1 = self.BREFT_REFT_StringSection1() string_section1.unpack(data[pos:pos + len(string_section1)]) pos += len(string_section1) print string_section1 string_groups.append(string_section1) for x in xrange(reft_string_header.string_cnt): pos = temp + string_groups[x].offset print "\n%08x\n" % pos reft_section2 = self.BREFT_REFT_Section2() reft_section2.unpack(data[pos:pos + len(reft_section2)]) pos += len(reft_section2) print reft_section2 print "\n%08x\n" % pos #''' BEGIN TEST DATA unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos + 4], endian='>') pos += 4 print "Unknown: %08x" % unknown
def Unpack(self, data): pos = 0 header = self.BREFF_Header() header.unpack(data[pos:pos+len(header)]) pos += len(header) print(header) assert header.magic == "REFF" assert header.version == 0xfeff0004 reff = self.BREFF_REFF() reff.unpack(data[pos:pos+len(reff)]) pos += len(reff) print(reff) assert reff.magic == "REFF" reff_project = self.BREFF_REFF_Project() reff_project.unpack(data[pos:pos+len(reff_project)]) pos += len(reft_project) print(reff_project) string = nullterm(data[pos:pos+reff_project.str_length]) pos += reff_project.str_length print("String: %s\n" % string) while pos %2: unknown = Struct.uint8(data[pos:pos+1]) pos += 1 print("Padding: %02x" % unknown) print("\n%08x\n" % pos) temp = pos reff_string_header = self.BREFF_REFF_StringHeader() reff_string_header.unpack(data[pos:pos+len(reff_string_header)]) pos += len(reff_string_header) print(reff_string_header) print("\n%08x\n" % pos) string_groups = [] for x in range(reff_string_header.string_cnt): str_length = Struct.uint16(data[pos:pos+2], endian='>') pos += 2 print("String Length with null added: %04x" % str_length) string = nullterm(data[pos:pos+str_length]) pos += str_length print("String: %s" % string) string_section1 = self.BREFF_REFF_StringSection1() string_section1.unpack(data[pos:pos+len(string_section1)]) pos += len(string_section1) print(string_section1) string_groups.append(string_section1) print("\n%08x\n" % pos) while pos % 0x04: padding = Struct.uint8(data[pos:pos+1]) pos += 1 print("Padding: %02x" % padding) print("\n%08x\n" % pos) assert pos == string_groups[0].offset + temp for x in range(reff_string_header.string_cnt): pos = temp + string_groups[x].offset reff_section2 = self.BREFF_REFF_Section2() reff_section2.unpack(data[pos:pos+len(reff_section2)]) pos += len(reff_section2) print(reff_section2) print("\n%08x\n" % pos) ''' LARGE TEST DATA unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown01: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown02: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown03: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown04: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown05: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown06: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown07: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown08: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown09: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Size Outer Radius X: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Size Outer Radius Y: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Size Outer Radius Z: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Inner Radius: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown14: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown15: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown16: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "All Direction Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Y Axis Difuse Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Random Direction Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Normal Direction Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "PI DIVIDED BY 4 BITCHES: %.20f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Move to specific direction: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown23: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "PI BITCHES: %.20f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "PI DIVIDED BY 2 BITCHES: %.20f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown26: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown27: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown28: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown29: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown30: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown31: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown32: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Bytes: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown34: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown35: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown36: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Transform Scale X: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Transform Scale Y: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Transform Scale Z: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Center of Particle SRT Horizontal(x): %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Center of Particle SRT Verticle(y): %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown42: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown43: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown44: %.20f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown45: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown46: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown47: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown48: %08x" % unknown LARGE TEST DATA ''' ''' BEGIN TEST DATA
def Unpack(self, data): pos = 0 header = self.BREFT_Header() header.unpack(data[pos:pos+len(header)]) pos += len(header) print header assert header.magic == "REFT" assert header.version == 0xfeff0004 reft = self.BREFT_REFT() reft.unpack(data[pos:pos+len(reft)]) pos += len(reft) print reft assert reft.magic == "REFT" print "\n%08x\n" % pos reft_project = self.BREFT_REFT_Project() reft_project.unpack(data[pos:pos+len(reft_project)]) pos += len(reft_project) print reft_project string = nullterm(data[pos:pos+reft_project.str_length]) pos += reft_project.str_length print "String: %s\n" % string while pos %2: unknown = Struct.uint8(data[pos:pos+1]) pos += 1 print "Padding: %02x" % unknown print "\n%08x\n" % pos for x in xrange(0x30): pad = Struct.uint8(data[pos:pos+1]) pos += 1 #print "Padding: %08x" % pad print "\n%08x\n" % pos temp = pos reft_string_header = self.BREFT_REFT_StringHeader() reft_string_header.unpack(data[pos:pos+len(reft_string_header)]) pos += len(reft_string_header) print reft_string_header print "\n%08x\n" % pos string_groups = [] for x in xrange(reft_string_header.string_cnt): str_length = Struct.uint16(data[pos:pos+2], endian='>') pos += 2 print "String Length with null added: %04x" % str_length string = nullterm(data[pos:pos+str_length]) pos += str_length print "String: %s" % string string_section1 = self.BREFT_REFT_StringSection1() string_section1.unpack(data[pos:pos+len(string_section1)]) pos += len(string_section1) print string_section1 string_groups.append(string_section1) for x in xrange(reft_string_header.string_cnt): pos = temp + string_groups[x].offset print "\n%08x\n" % pos reft_section2 = self.BREFT_REFT_Section2() reft_section2.unpack(data[pos:pos+len(reft_section2)]) pos += len(reft_section2) print reft_section2 print "\n%08x\n" % pos #''' BEGIN TEST DATA unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown: %08x" % unknown
def Unpack(self, data): pos = 0 header = self.BREFF_Header() header.unpack(data[pos:pos+len(header)]) pos += len(header) print header assert header.magic == "REFF" assert header.version == 0xfeff0004 reff = self.BREFF_REFF() reff.unpack(data[pos:pos+len(reff)]) pos += len(reff) print reff assert reff.magic == "REFF" reff_project = self.BREFF_REFF_Project() reff_project.unpack(data[pos:pos+len(reff_project)]) pos += len(reft_project) print reff_project string = nullterm(data[pos:pos+reff_project.str_length]) pos += reff_project.str_length print "String: %s\n" % string while pos %2: unknown = Struct.uint8(data[pos:pos+1]) pos += 1 print "Padding: %02x" % unknown print "\n%08x\n" % pos temp = pos reff_string_header = self.BREFF_REFF_StringHeader() reff_string_header.unpack(data[pos:pos+len(reff_string_header)]) pos += len(reff_string_header) print reff_string_header print "\n%08x\n" % pos string_groups = [] for x in xrange(reff_string_header.string_cnt): str_length = Struct.uint16(data[pos:pos+2], endian='>') pos += 2 print "String Length with null added: %04x" % str_length string = nullterm(data[pos:pos+str_length]) pos += str_length print "String: %s" % string string_section1 = self.BREFF_REFF_StringSection1() string_section1.unpack(data[pos:pos+len(string_section1)]) pos += len(string_section1) print string_section1 string_groups.append(string_section1) print "\n%08x\n" % pos while pos % 0x04: padding = Struct.uint8(data[pos:pos+1]) pos += 1 print "Padding: %02x" % padding print "\n%08x\n" % pos assert pos == string_groups[0].offset + temp for x in xrange(reff_string_header.string_cnt): pos = temp + string_groups[x].offset reff_section2 = self.BREFF_REFF_Section2() reff_section2.unpack(data[pos:pos+len(reff_section2)]) pos += len(reff_section2) print reff_section2 print "\n%08x\n" % pos ''' LARGE TEST DATA unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown01: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown02: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown03: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown04: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown05: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown06: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown07: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown08: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown09: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Size Outer Radius X: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Size Outer Radius Y: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Size Outer Radius Z: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Inner Radius: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown14: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown15: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown16: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "All Direction Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Y Axis Difuse Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Random Direction Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Normal Direction Speed: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "PI DIVIDED BY 4 BITCHES: %.20f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Move to specific direction: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown23: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "PI BITCHES: %.20f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "PI DIVIDED BY 2 BITCHES: %.20f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown26: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown27: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown28: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown29: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown30: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown31: %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown32: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Bytes: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown34: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown35: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown36: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Transform Scale X: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Transform Scale Y: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Transform Scale Z: %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Center of Particle SRT Horizontal(x): %f" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Center of Particle SRT Verticle(y): %f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown42: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown43: %08x" % unknown unknown = Struct.float(data[pos:pos+4], endian='>') pos += 4 print "Unknown44: %.20f" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown45: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown46: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown47: %08x" % unknown unknown = Struct.uint32(data[pos:pos+4], endian='>') pos += 4 print "Unknown48: %08x" % unknown LARGE TEST DATA ''' ''' BEGIN TEST DATA