Example #1
0
class Vector(bt.Struct(
  bt.Field(bt.float32,'x'),
  bt.Field(bt.float32,'y'),
  bt.Field(bt.float32,'z'))): pass


class TextureCoordinate(bt.Struct(
Example #2
0
class TevStage(bt.Struct(
  bt.Field(bt.uint16,'unknown0'), # unknown0 in (0,0x200)
  bt.Field(bt.uint16,'texobj_index'),
  bt.Field(bt.Array(bt.float32,7),'unknown1'))): pass


class Material(bt.Struct(
Example #3
0
class DrawElement(bt.Struct(
  bt.Field(bt.uint16,'material_index'),
  bt.Field(bt.uint16,'shape_index'))): pass

#------------------------------------------------------------------------------

parser = argparse.ArgumentParser(description='Extract/Inject images into MDL files')
Example #4
0
class DrawElement(bt.Struct(
  bt.Field(bt.uint16,'material_index'),
  bt.Field(bt.uint16,'shape_index'))): pass

#------------------------------------------------------------------------------

parser = argparse.ArgumentParser(description='Convert Luigi\'s Mansion MDL files to Wavefront OBJ files')
Example #5
0
class Color(bt.Struct(
  bt.Field(bt.uint8,'r'),
  bt.Field(bt.uint8,'g'),
  bt.Field(bt.uint8,'b'),
  bt.Field(bt.uint8,'a'))): pass


class Matrix:
Example #6
0
class TextureHeader(bt.Struct(
  bt.Field(bt.uint8,'format'),
  bt.Padding(1,b'\x00'),
  bt.Field(bt.uint16,'width'),
  bt.Field(bt.uint16,'height'),
  bt.Padding(26,b'\x00'))): pass


class TexObj(bt.Struct(
Example #7
0
class ShapePacket(bt.Struct(
  bt.Field(bt.uint32,'data_offset'),
  bt.Field(bt.uint32,'data_size'),
  bt.Field(bt.uint16,'unknown0'), # unknown0 in (0,2)
  bt.Field(bt.uint16,'num_matrix_indices'),
  bt.Field(bt.Array(bt.uint16,10),'matrix_indices'))): pass


class DrawElement(bt.Struct(
Example #8
0
class TexObj(bt.Struct(
  bt.Field(bt.uint16,'texture_index'),
  bt.Padding(2),
  bt.Field(bt.uint8,'unknown1'), # unknown1 in (0,1,2)
  bt.Field(bt.uint8,'unknown2'), # unknown2 in (0,1,2)
  bt.Field(bt.uint8,'unknown3'), # unknown3 in (0,1,4)
  bt.Padding(1,b'\x00'))): pass


class TevStage(bt.Struct(
Example #9
0
class Shape(bt.Struct(
  bt.Field(bt.uint8,'unknown0'), # unknown0 in (0,1,3)
  bt.Field(bt.uint8,'unknown1'), # unknown1 == 0
  bt.Field(bt.uint8,'unknown2'),
  bt.Field(bt.uint8,'unknown3'), # unknown3 in (0,1)
  bt.Field(bt.uint16,'num_packets'),
  bt.Field(bt.uint16,'first_packet'))): pass


class ShapePacket(bt.Struct(
Example #10
0
class Node(bt.Struct(
  bt.Field(bt.uint16,'unknown0'),
  bt.Field(bt.uint16,'unknown1'), # unknown1 in (0,1)
  bt.Field(bt.uint16,'unknown2'),
  bt.Field(bt.uint16,'unknown3'), # unknown3 in (0,1)
  bt.Field(bt.uint16,'unknown4'),
  bt.Field(bt.uint16,'unknown5'),
  bt.Padding(4,b'\x00'))): pass


class TextureHeader(bt.Struct(
Example #11
0
class Material(bt.Struct(
  bt.Field(Color,'color'),
  bt.Field(bt.uint16,'unknown1'), # unknown1 in (0,1), number of colors?
  bt.Field(bt.uint8,'unknown2'), # unknown2 in (0,1,2,4)
  bt.Field(bt.uint8,'num_tev_stages'), # unknown3 in (0,1,2)
  bt.Field(bt.uint8,'unknown4'), # unknown4 in (0,1)
  bt.Padding(23,b'\x00'),
  bt.Field(bt.Array(TevStage,8),'tev_stages'))): pass


class Shape(bt.Struct(
Example #12
0
class Header(bt.Struct(
  bt.Field(bt.uint32,'magic'), # magic == 0x04B40000
  bt.Field(bt.uint16,'num_faces'),
  bt.Padding(2,b'\x00'),
  bt.Field(bt.uint16,'num_nodes'), # num_nodes == num_joints
  bt.Field(bt.uint16,'num_shape_packets'),
  bt.Field(bt.uint16,'num_weighted_matrices'),
  bt.Field(bt.uint16,'num_joints'),
  bt.Field(bt.uint16,'num_vertices'),
  bt.Field(bt.uint16,'num_normals'),
  bt.Field(bt.uint16,'num_colors'),
  bt.Field(bt.uint16,'num_texcoords'),
  bt.Padding(8,b'\x00'),
  bt.Field(bt.uint16,'num_textures'),
  bt.Padding(2,b'\x00'),
  bt.Field(bt.uint16,'num_texobjs'),
  bt.Field(bt.uint16,'num_draw_elements'), # num_draw_elements == num_shapes
  bt.Field(bt.uint16,'num_materials'),
  bt.Field(bt.uint16,'num_shapes'),
  bt.Padding(4,b'\x00'),
  bt.Field(bt.uint32,'node_offset'),
  bt.Field(bt.uint32,'shape_packet_offset'),
  bt.Field(bt.uint32,'matrix_offset'),
  bt.Field(bt.uint32,'weight_offset'),
  bt.Field(bt.uint32,'joint_index_offset'),
  bt.Field(bt.uint32,'num_weights_offset'),
  bt.Field(bt.uint32,'vertex_offset'),
  bt.Field(bt.uint32,'normal_offset'),
  bt.Field(bt.uint32,'color_offset'),
  bt.Field(bt.uint32,'texcoord_offset'),
  bt.Padding(8,b'\x00'),
  bt.Field(bt.uint32,'texture_location_offset'),
  bt.Padding(4,b'\x00'),
  bt.Field(bt.uint32,'material_offset'),
  bt.Field(bt.uint32,'texobj_offset'),
  bt.Field(bt.uint32,'shape_offset'),
  bt.Field(bt.uint32,'draw_element_offset'),
  bt.Padding(8,b'\x00'))): pass


class Vector(bt.Struct(
Example #13
0
class TextureCoordinate(bt.Struct(
  bt.Field(bt.float32,'s'),
  bt.Field(bt.float32,'t'))): pass


class Color(bt.Struct(