Este artículo es la segunda parte de una serie que detalla cómo el autor ha recreado los niveles de Crazy Taxi en 3D y los ha puesto a disposición en la web. La primera parte se centró en la decodificación del archivo .all del juego, un formato de archivo que contiene miles de recursos del juego. Esta segunda parte profundiza en la ingeniería inversa del formato .shp, que el autor sospechaba que contenía información relacionada con los modelos 3D del juego.
La investigación comenzó con la sospecha de que .shp podría estar relacionado con la palabra “shape” (forma en inglés). Esta hipótesis se vio reforzada por varios factores: el nombre del primer archivo .shp encontrado (cube0.shp), la presencia de archivos .shp dentro de archivos .all con nombres que sugieren polígonos (polDC0.all, polDC1.all), y los nombres de otros archivos .shp que parecen nombres de modelos del juego (CZ_train_B.shp, course_4_129.shp).
Para comprender mejor el formato .shp, el autor utiliza un archivo .obj (Wavefront .obj file) como referencia. Los archivos .obj son un formato de archivo de texto simple para almacenar geometría 3D, aunque no son muy eficientes en términos de tamaño. El autor explica los componentes clave de un archivo .obj: vértices (posiciones), normales de vértice (dirección de la superficie) y elementos de cara (triángulos que componen la superficie). Estos elementos permiten renderizar y aplicar iluminación a los modelos 3D.
El artículo luego analiza el archivo cube0.shp, el archivo .shp que se sospechaba contenía la geometría de un cubo. El autor describe cómo examinar el archivo en un editor hexadecimal, buscando patrones y secciones de datos. Se identifican varias secciones, incluyendo un posible encabezado, arrays de datos de diferentes tipos (enteros, flotantes), y cadenas de texto que hacen referencia a otros archivos del juego. El autor introduce una notación abreviada para los tipos de datos (u8, s16, f32, etc.) para facilitar la discusión.
En resumen, el artículo describe el proceso de ingeniería inversa de un formato de archivo desconocido, utilizando pistas, referencias a formatos conocidos y un análisis cuidadoso de los datos binarios para comprender su estructura y contenido. El objetivo final es poder extraer y reutilizar los modelos 3D del juego Crazy Taxi.
