Un programador documenta cómo construyó, íntegramente en Ruby puro y sin dependencias externas, un lector del formato BIGF de Codemasters, el contenedor que almacena los datos de inteligencia artificial del juego TOCA Race Driver (2003) y de otros tres títulos de la saga. El artículo, publicado en The Engineer's Notebook, defiende la idoneidad de Ruby para tareas de ingeniería inversa de archivos binarios, una tarea que suele asociarse a C, Python con struct o Kaitai.
La clave está en que las cadenas en Ruby son, en la práctica, búferes de bytes: File.binread carga el archivo en modo binario (ASCII-8BIT) y la sintaxis de indexación data[offset, length] permite navegar por los bytes sin cursor ni ceremonias de lectura/búsqueda. El verdadero motor del decodificador es String#unpack, una función implementada en C dentro del intérprete que, mediante directivas de una sola letra (V para u32 little-endian, e para float32 little-endian), extrae enteros y flotantes de los búferes. El artículo muestra ejemplos de cabecera, recorrido del directorio de entradas, decodificación de registros internos de 16 bytes y manejo de valores centinela (0x3f3f3f3f), así como la precaución necesaria con valores NaN y desnormalizados.
El autor subraya cinco ventajas concretas: ergonomía de las cadenas como búferes, potencia de unpack, ausencia total de dependencias, legibilidad del código como documentación del formato y velocidad de iteración gracias a irb. La pieza se realizó íntegramente con asistencia de una IA durante la fase de hipótesis y escritura de código, siempre con verificación contra los bytes reales. La conclusión: las herramientas binarias estándar de Ruby, combinadas con el REPL, lo convierten en una opción muy capaz para ingeniería inversa sin renunciar a la claridad del código.
