Estructura BTP

Contenido

  1. Introducción
  2. Funcionamiento
  3. Definiciones
  4. Estructura
  5. Ejemplo

Introducción

El tipo de archivo BTP es un archivo que se puede conseguir en SMG. Este se encarga de guardar la información para una animación de cambio de texturas/imágenes. Básicamente, especifica como la imagen que se muestra sobre la superficie de un modelo en 3D va a cambiar por otra en función del tiempo (la unidad de tiempo es en cuadros). Un ejemplo de su uso es en el modelo de Mario para animar el parpadeo.


Image could not be loaded.

Vid. 1: mario.bdl con la animación iceflick.btp vista en j3dview


Funcionamiento

Los modelos 3D son visibles gracias a los materiales que estan aplicados en sus superficies y ellos son solo una forma de especificar como una superficie ha de ser vista desde un punto en el espacio. Los materiales estan compuestos por imágenes o texturas que ayudan a mostrar el efecto final deseado en la superficie. Estas texturas se mapean directamente sobre las superficies y son, en general, lo que uno espera ver en el modelo en 3D al ser mostrado en el juego.


Vid. 2: Imagen de Duolingo mapeada en un cubo de Blender.


Los modelos 3D de SMG guardan las texturas que los materiales usan en una especie de arreglo, por lo que las texturas tienen índices (números enteros) asociados a través de los cuales se les puede referenciar.


Fig. 1: Visualización de como se almacenan las texturas en un modelo 3D de SMG.


Lo que hace el archivo BTP es especificar el índice de la textura a mostrar en un material en cada cuadro de una animación. De otra forma, en cada cuadro de una animación BTP se va a mostrar una textura, especificada con un entero, sobre un material del modelo 3D.


Fig. 2: Visualización de una animación BTP.


Definiciones

Estructura

Encabezado


Nombre Tamaño Descripción
Magia 4 bytes J3D1 (Big Endian) o 1D3J (Little Endian).
Tipo 4 bytes btp1 (Big Endian) o 1ptb (Little Endian).
Tamaño del archivo 4 bytes En bytes.
Número de secciones 4 bytes Parece ser siempre 0x1.
Desconocido 1 16 bytes Parecen ser siempre 16 0xFF bytes.

Sección TPT1


Nombre Tamaño Descripción
Magia 4 bytes TPT1 (Big Endian) o 1TPT (Little Endian).
Tamaño de la sección 4 bytes En bytes.
Modo de repetición 1 byte 0x00, 0x01, 0x02, 0x03 o 0x04.
Desconocido 1 1 byte Parece ser siempre 0xFF.
Duración de la animación 2 bytes Especificada en cuadros.
Número de materiales 2 bytes Número de materiales en el archivo BTP para animar.
Tamaño del arreglo de índices de texturas 2 bytes Longitud del arreglo en donde se guardan los índices de las texturas para cada material.
Posición de los datos de animación de cada material 4 bytes Respecto al inicio de la sección. Parece ser siempre 0x20.
Posición del arreglo de índices de texturas 4 bytes Respecto al inicio de la sección. Este arreglo contiene los índices de las texturas que se mostrarán en cada material.
Posición del arreglo de índices de materiales 4 bytes Respecto al inicio de la sección. Este arreglo contiene la ubicación de cada material animado en el modelo 3D en forma de índices.
Posición de la tabla de nombres de los materiales 4 bytes Respecto al inicio de la sección. Esta tabla contiene los nombres de los materiales a animar.
Inicio: Datos de animación de cada material (8 * NĂºmero de materiales) bytes
Longitud[i] 2 bytes Tamaño del sub-arreglo de índices de texturas que le corresponde al i-ésimo material.
Índice[i] 2 bytes Posición del sub-arreglo de índices de texturas del i-ésimo material dentro del arreglo de índice de texturas.
Desconocido 2 4 bytes Parece ser siempre 0x00FFFFFF. No es afectado por el ordenamiento de los bytes (Endian).
Final: Datos de animación de cada material
Inicio: Arreglo de índices de texturas
  • (2 * La máxima suma de: Índice[i] + Longitud[i]) bytes
  • (2 * Tamaño del arreglo de índices de texturas) bytes
índice de textura[i] 2 bytes i-ésimo índice de textura en la tabla de índices de texturas.
Final: Arreglo de índices de texturas
Relleno 1 Máximo 3 bytes Alinea hasta el siguiente byte multiplo de 4.
Inicio: Arreglo de índices de materiales (2 * Número de materiales) bytes
índice de material[i] 2 bytes El índice, del i-ésimo material en el archivo BTP, en el modelo 3D.
Final: Arreglo de índices de materiales
Relleno 2 Máximo 3 bytes Alinea hasta el siguiente byte multiplo de 4.
Tabla de nombres de los materiales Variable Tabla que contiene los nombres de los materiales que se van a animar del modelo en 3D.
Relleno 3 Máximo 31 bytes Alinea hasta el siguiente byte multiplo de 32.

Ejemplo

Estructura coloreada de iceflick.btp en ImHex:



El archivo se encuentra en ObjectData/MarioAnime.arc.

Referencias