Contenido
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.

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
- Sección TPT1: única sección de los archivos BTP que contiene todos los datos de la animación de cambio de texturas.
-
Modo de repetición: Entero de 8 bits que especifica como se repite la animación. Las opciones son:
- 0: Se reproduce la animación una sola vez y se mantiene el último cuadro de la animación cargado en el modelo.
- 1: Se reproduce la animación una sola vez y se mantiene el primer cuadro de la animación cargado en el modelo.
- 2: Se reproduce la animación infinitas veces hacia adelante.
- 3: Se reproduce la animación una vez hacia adelante y una vez hacia atrás.
- 4: Se reproduce la animación infinitas veces hacia adelante y hacia atrás.
-
Duración de la animación: Entero de 16 bits que indica la duración de la animación de cambio de texturas. Este número dice que tantos datos de la animación de cada material usar.
Fig. 3: Diagrama que muestra los datos de índices de texturas para distintos materiales, cómo son afectados por la duración de la animación y cómo estos datos se almacenan en la tabla de índices de texturas.
- Si faltan datos de animación, para un material: Se agarra el valor del último cuadro disponible y se mantiene hasta el final de la animación.
- Si sobran datos de animación para un material: Se agarran los datos hasta que se termine la animación (se ignoran los datos posteriores).
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 | ||||||||||
|
|||||||||||
Final: Datos de animación de cada material | |||||||||||
Inicio: Arreglo 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 | ||||||||||
|
|||||||||||
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
.