El título lo dice todo. La segunda parte del videojuego, Elvira: The Jaws of Cerberus, contaba con traducción al castellano, pero éste, el primer Elvira, no. Y además en aquel momento, allá por el 2005, ni siquiera la scene de traducción indie se había decidido a meterle mano. Como primer RPG con el que disfruté de verdad, no podía dejar pasar la oportunidad para marcarme un nuevo reto y sacar provecho y desarrollar de forma simultánea algunas de mis muchas facetas.

El trabajo que me llevó fue duro al principio. Sobre todo porque quería hacerlo bien. Previamente había hecho algún pinito con editores hexadecimales y desensambladores para pequeños arreglos puntuales. Pero para este proyecto tuve que sacar el armamento pesado de ingeniería inversa y dedicarme a tiempo completo en cuerpo y alma a ello, tanto, que conseguí terminarlo en poco más de un mes.

Busqué el texto en los archivos con un editor hexadecimal. No todo él se encontraba en un único archivo binario a partir del cual se cargara dinámicamente durante el juego. También el ejecutable incorporaba cadenas de texto estáticas, es decir, hardcoded. De hecho contenía todas las cadenas correspondientes a los cuadros de diálogo emergentes del videojuego, como los de la pausa o los de salvar y cargar la partida.

Pero quedaba muy mal traducir sólo los diálogos de los personajes y los cuadros de diálogo emergentes, dejando en inglés el resto de la interfaz gráfica de usuario y el poco texto que aparecía en ciertas imágenes del juego. Como ya he dicho, quería hacerlo bien, y considero que la coherencia es imprescindible en un trabajo de mínima calidad. Para descubrir qué codificación tenían los archivos .VGA (obviamente eran los de las imágenes) es donde entró en juego el maravilloso desensamblador (IDA Pro). Desensamblando completamente el ejecutable me llevé una sorpresa que me hizo entender muchos detalles de la programación de antaño. Culpa de los programadores, culpa del compilador, el caso es que había un caos importante en la organización, estructura y secuencia del código ensamblador, con numeroso código redundante o llamadas a procedimientos que no venían a cuento. Esto hizo que me llevara más tiempo de lo debido dar con el algoritmo de descompresión de las imágenes, el cual al final resulto tener cierta similitud con el RLE.

El siguiente paso, lógicamente, fue la programación, Turbo C++ en mano, de las dos herramientas imprescindibles para llevar a cabo toda la traducción. Primeramente una herramienta que extrajera los textos del archivo binario en un archivo de texto plano y que introdujera de nuevo en el binario la traducción realizada, modificando en consecuencia la cabecera  de éste debido a la mayor o menor longitud de las cadenas de texto una vez traducidas al castellano. Y segundo, una herramienta que descomprimiera las imágenes, las guardara en formato crudo para poder editarlas con un programa de dibujo, y las comprimiera de nuevo con el mismo algoritmo empleado por Elvira. Por otro lado, las pocas cadenas de texto contenidas en el ejecutable tuve que traducirlas directamente con el editor hexadecimal y siempre buscando la mismas longitudes de cadena que las originales, pues de lo contrario, las posiciones relativas de textos y código cambiarían y el ejecutable no cargaría. La alternativa de recompilar suponía un arduo trabajo que no compensaba para unas pocas cadenas y no daba garantías de que todo funcionara correctamente después. Esto se traduce en que, aunque se comprenda perfectamente, probablemente habrá palabras puntuales que no sean las más adecuadas y naturales para la frase (por ejemplo, “y entra” en lugar de “e introduce” en la siguiente captura).

Del mismo modo también consideré contraproducente investigar más en profundidad para localizar dónde se encontraba la fuente de texto para editarla y añadirle los caracteres propios del castellano, las tildes y la eñe. Pero sí pensé, si llegaba a buen puerto con lo que hasta el momento me había propuesto, hacerlo en un futuro; pues de lo contrario sabía que siempre me quedaría una sensación de haber hecho el trabajo a medias. Cosa que no es así con la traducción del texto del ejecutable para la versión EGA del juego, también incluida. Salvo contadas personas que específicamente prefieran jugarlo en 16 colores por algún tipo de nostalgia especial para ellos, es evidente que la inmensa mayoría preferirán jugarlo en VGA, a 256 colores. Por tanto, salvo que exista petición expresa de alguien sobre la traducción del ejecutable EGA, no tengo pensado en principio llevarla a cabo en ningún momento. Además, se puede disfrutar igualmente del juego en EGA y en castellano, con la única salvedad de que los cuadros de diálogo emergentes y algún detalle más estarán en inglés.

A excepción del desensamblado y copia del resultado final, de lo cual guardaba frecuentemente copias de seguridad, casi todo el material creado y empleado para esta traducción lo guardaba en el disco duro del PC en el que trabajaba. Un Pentium 166 con el sistema operativo MS-DOS instalado para no depender de emuladores que pudieran falsear el correcto funcionamiento de lo que iba haciendo. Desgraciadamente, debido a un estúpido descuido mío, un día tuve la mala suerte de ver como este disco duro de repente no se encendía, con la correspondiente pérdida que ello supuso. No obstante, mi experiencia me indica que se trata de la controladora lo que falla, y aunque se trata de un disco antiguo (Fujitsu M1624TAU), tengo localizados varios vendedores de segunda mano que disponen de él o de la misma controladora que éste utiliza (CA20318-B21X). La pega es que, aun siendo tan antiguo y de segunda mano, su precio no es barato. Pero sí tengo claro que algún día trataré de recuperarlo o en su defecto, de volver a crear las herramientas mencionadas para quitarme esa espinita que supone lo que quedó pendiente. Además, mis recuerdos, mi experiencia y conocimientos ampliados desde entonces lo hará mucho más fácil.

Mientras tanto, los que dispongáis del juego podréis disfrutarlo en castellano con sólo solicitarme un parche que creé para tal efecto.