This is the specifications for the model file which is handled by the Game Extractor plugin Viewer_GTC_MD2_MDL3.

Endian Order:Little Endian
Compression:none
Encryption:None


This format is used by the following Games:
Drome Racers *.md2


This is the format specification information:
 
// HEADER
  4 - Header (MDL3)
  4 - Block Length

  4 - InertiaTensor X (float)
  4 - InertiaTensor Y (float)
  4 - InertiaTensor Z (float)
  4 - Bounding Radius (float)

  4 - AllowDistanceFade
  4 - IncludesBoundingBox
  if (IncludesBoundingBox){
    4 - AABBMin X (float)
    4 - AABBMin Y (float)
    4 - AABBMin Z (float)
    4 - AABBMax X (float)
    4 - AABBMax Y (float)
    4 - AABBMax Z (float)
    4 - AABBCenter X (float)
    4 - AABBCenter Y (float)
    4 - AABBCenter Z (float)
    4 - AABBYaw (float)
  }
  4 - UseUniqueMaterials
  4 - UseUniqueTextures
  4 - UseGenericGeometry
  4 - VertexBufferAccessFlags
  
  12*4 - Unknown

  4 - Texture Reference Count
  // for each Texture Reference
    256 - Filename (null terminated, filled with nulls and junk)
    4 - UsageType
    4 - BaseIndex

  4 - Material Count
  // for each Material
    4 - Ambient X (float)
    4 - Ambient Y (float)
    4 - Ambient Z (float)
    4 - Ambient W (float)
    4 - Diffuse X (float)
    4 - Diffuse Y (float)
    4 - Diffuse Z (float)
    4 - Diffuse W (float)
    4 - Specular X (float)
    4 - Specular Y (float)
    4 - Specular Z (float)
    4 - Specular W (float)
    4 - Emissive X (float)
    4 - Emissive Y (float)
    4 - Emissive Z (float)
    4 - Emissive W (float)
    4 - Shininess (float)
    4 - Transparency (float)
    4 - Transparency Type
    4 - Property Bits
    12 - Animation Name (null terminated, filled with nulls)
  
// GCG0 BLOCK
  4 - Header (GCG0)
  4 - Block Length
  X - Unknown
  
// P2G0 BLOCK
  4 - Header (P2G0)
  4 - Block Length
  X - Unknown
  
// GEO2 BLOCK
  4 - Header (GEO2)
  4 - Block Length
  4 - Number of LODs
  
  // for each LOD
    4 - Type
    4 - Max Edge Length (float)
    4 - Group Count
    4 - Positions Pointer
    4 - Render Groups Pointer
    if (PositionsPointer > 0){
      // for each GroupCount
        4 - X Point (float)
        4 - Y Point (float)
        4 - Z Point (float)
      }
    // Render Group
    // for each GroupCount
      4 - ID
      2 - Primitive Count
      2 - Vertex Count
      2 - Materials
      2 - Effects
      4 - pBumpData
      4 - pVertexBuffer
      4 - pIndexBuffer

      2 - EffectsMask
      2 - RendererReference
      2 - EffectCount
      1 - Custom
      1 - CoordsCount
                
      // for each BlendCount (4)
        4 - Effect
        2 - TextureIndex
        1 - CoordIndex
        1 - TilingInfo

      4 - PositionOffset
      4 - NormalOffset
      4 - ColorOffset
      4 - UVOffset
      4 - VertexSize
      4 - UVCount
      2 - VertexComponents
      2 - VertexCount2
      2 - ManagedBuffer
      2 - CurrentVertex
      4 - pSourceBuffer
      4 - pVertexOffset
      
      // for each VertexCount2
        X - VertexData (length = VertexSize)

      4 - PrimitiveBufferCount
      4 - PrimitiveType
      4 - IndexCount
      
      // for each IndexCount
        2 - Face Index


These are the accompanying notes and further information:
 
Ref: https://pastebin.com/ZwgbZBUQ (from DromeEd project - https://www.rockraidersunited.com/topic/8175-md2-blender-importexport-add-on-early-release/)


Game Extractor is able to read files of this type, as well as files from thousands of other games. To give it a try, download Game Extractor (Basic Version) for free, and see what it can do.

For further information on this format, refer to the source code on our GitHub repository.