Una de las primeras aventuras de texto que aparecieron en exclusiva para el C64, con el sello de los chicos de Alligata Software, fue este Aztec Tomb, una ficci贸n interactiva en donde deberemos llevar a nuestro explorador por la selva amaz贸nica hasta la entrada de la Tumba Azteca, nuestro objetivo final. Curiosamente fue la 煤nica aventura escrita por el prol铆fico Antony Crowther aunque su librer铆a de software para el C64 fue muy amplia y variada, con juegos de todos los estilos imaginables.
Las instrucciones del juego, las que lo acompa帽an en la parte trasera de la cinta, son lo mas escuetas posibles: nos indican nuestro cometido, el de encontrar la tumba azteca, nos muestran las palabras b谩sicas del vocabulario a usar y nos proponen nuestra imaginaci贸n para el resto. M谩s aventurero imposible.
El juego original se ha traducido a lo largo de estos a帽os al alem谩n, italiano y h煤ngaro y tambi茅n se hizo una versi贸n para el Plus4. Para la traducci贸n al castellano todo el peso del trabajo ha ido a cargo de nuestro compa帽ero Jeff Minter quien primero estudi贸 las diferentes versiones que hay del mismo para llevar a cabo el proyecto.
Aqu铆 nos deja este imperdible "making of":
El juego ten铆a la caracter铆stica de haber sido programado en BASIC, con un parser propio, adem谩s de contar con gr谩ficos realizados con los caracteres predefinidos de Commodore. Podr铆a entenderse en un principio que la aventura se ejecutar铆a con cierta lentitud, pero para mi sorpresa, con la cantidad de lineas que tiene el juego, se comporta bastante bien, sin tener sensaci贸n de haber sido escrita en BASIC, a no ser por los gr谩ficos.
Nunca se public贸 una versi贸n en castellano, as铆 que Bieno, en un momento de nostalgia al haber sido su primera aventura conversacional, tom贸 la decisi贸n de que ya iba siendo hora de poder disfrutar este t铆tulo en castellano.
La traducci贸n se ha realizado a partir de las tres versiones (ingles, italiano y alem谩n), cogiendo cachitos de una y de otra y aqu铆 ten茅is el paso a paso de como la hice:
Herramientas:
- Para realizar estos cambios en el listado, me ayud茅 de la herramienta C64Studio, que permite editar listados en BASIC importados desde disco de manera muy sencilla.
- Para emular el C64 en el PC, WinVICE.
- El volcado de memoria a disco fue con el Action Replay 7.5
- Para crear el Master en cinta fue el Tape Master Pro v3
- La edici贸n de la pantalla de carga fue con el GangEd2
- Mover el SID (descargado de HVSC) con SIDReloc y conversion a DAT con el SIDPlay para Win.
- El DirMaster para editar los discos .D64 donde fue moviendo archivos con los que trabajaba.
Pasos:
1.- Desprotecci贸n del programa.
El programa ven铆a con protecci贸n en los listados, evitando que se pudiera leer adecuadamente mandando siempre el cursor al principio de la linea cada ciertas lineas:
- Causa: un HOME (ir inicio pantalla) en ciertas lineas de REM, que provocaba que el cursor saltara arriba pisando continuamente el listado.
- Soluci贸n: borrar todas las lineas de REM que molestan.
Adem谩s tenia un checksum de los datas, que si realizabas alg煤n cambio, el programa se borraba:
- Causa: si tocabas algo y el checksum de los datas era direfente a un valor que ten铆a, hac铆a un NEW.
- Soluci贸n: borrar esa linea, no aportaba nada al programa.
Y para rematar la faena, el listado de las versiones alemanas e inglesas, estaba separado en 2 partes en BASIC en la memoria (el c贸digo principal y las pantallas), se jugaba con los punteros de inicio del programa de BASIC para acceder a un listado o al otro dependiendo si ten铆a que pintar una pantalla nueva o no.
- Causa: el puntero del inicio del BASIC se manejaba con el POKE 44,64, yendo a una direcci贸n o a otra. El motor del juego se encontraba en la posici贸n $1000 de inicio del BASIC, mientras que las pantallas estaban situadas en la posici贸n $4000 de memoria y se volv铆a al lugar de la memoria mediante POKE 44,16 ($1000) a POKE 44,64 ($4000).
- Soluci贸n: coger el listado en italiano, que ten铆a todo en un unico listado (la v铆a f谩cil) y queda finalmente el listado desprotegido para realizar los cambios de traducci贸n.
2.- Traducci贸n de pantallas, objetos y localizaciones.
Se realiza una primera traducci贸n a ciegas desde el italiano. Palabra por palabra literalmente. Esto provoca que algunos objetos, situaciones o respuestas no tengan sentido. Asi que a para darle un poco de sentido, cruzo tambi茅n traducciones del ingles. Esta parte fue la f谩cil.
3.- Traducci贸n del "parser" (analizador sint谩ctico y sint茅tico).
Aqu铆 nos encontramos un batiburrillo de letras en dos cadenas bastante largas.
En el que nos encontramos objetos que podemos recolecta ("TA"), objetos o localizaciones que interactuan con un verbo ("OL"), localizaciones del juego ("LO") y 贸rdenes en forma de verbos ("CM"). Este batiburrillo de letras hab铆a que ir dividiendolo en partes para identificarlos y luego traducirlos. Algunas variables se me divid铆an en las tres primeras letras de una palabra y los comandos en las cuatro primeras letras. Aqu铆 s铆 que fue un poco l铆o, porque con 3 letras no pod铆a hacer traducciones literales.
- "DOO" s茅 que es "DOOR" porque en los DATAs iniciales ve铆a esa palabra.
- "BRI" s茅 que es "BRIDGE" por lo mismo.La traducci贸n de estas dos palabra son PUERTA y PUENTE, pero sus tres primeras letras es "PUE" y el parser no funcionaba adecuadamente. As铆 que en este caso sustitu铆 PUENTE por PONTEJA, que es un puente de peque帽o tama帽o. Y "PON" solo se emplea para esta palabra.
As铆 suced铆a con todas las traducciones, vigilando que las tres o cuatro letras iniciales no coincidieran.
Eso son "casi" todas las palabras. Pero no todas ten铆an f谩cil traducci贸n debido a que eran comandos incorporados al parser pero no eran los principales cargados en los DATAs ni en las descripciones. As铆 que tuve que cruzar las traducciones del ingl茅s, alem谩n e italiano para buscar alg煤n sentido a palabras de 3 o 4 letras de las que solo conoc铆a eso, el inicio. Mediante ensayo y error acab茅 encontrado casi todos los comandos. Y muchos de ellos no son necesarios para completar la aventura, pero ahi est谩n como... "JOD"... o "MEA"... bueno, os dejo que lo descubr谩is.
4.- Ajuste de longitud de traducciones.
Si una palabra es demasiado larga, provoca al imprimirla en pantalla un fallo de formato. Se desplaza la pantalla, se cortan lineas, se estropea el dibujo... por lo que procedo a otro ajuste de traducciones para no superar los anchos de linea. O ajusto la traducci贸n o el tabulado.
5.- Pantalla de t铆tulo inicial.
La versi贸n en ingles, ten铆a un mensaje muy escueto de "-espera-" y comenzaba la aventura. La versi贸n en alem谩n, pon铆a "QUO VADIS" (como se llamaba ah铆 este juego) de una manera muy sencilla y espartana. Pero adem谩s, la versi贸n que encontr茅 en alem谩n, directamente saltaba a la primera pantalla del juego (ten铆a un bucle FOR en cero cuando deber铆a de hacer una pausa de unos segundos presentando el nombre del juego). En cambio, la versi贸n en italiano ten铆a pantalla de inicio en ASCII, es la que conserv茅 para la versi贸n en castellano. Adem谩s, esta 煤ltima versi贸n ten铆a los cr茅ditos "ocultos" en unos DATAs (otro truco por si cambias los cr茅ditos, el juego no funciona al no coincidir el checksum y resetearte el juego). Elimin茅 esa linea de protecci贸n y cambio los DATAs mediante una calculadora TEXT to ASCII.
Incorporo una pantalla de introducci贸n del juego, que no ven铆a en ninguna versi贸n, en la que se explican los objetivos del juego e incluyo una peque帽a pantalla de ayuda donde se listan los verbos m谩s empleados en el juego y de esta manera, el juego tiene un inicio un poco mas result贸n.
6.- Justificado de textos y gr谩ficos en pantalla.
Resulta que la versi贸n alemana es diferente a la versi贸n inglesa en la presentaci贸n de la pantalla de juego. La original, los gr谩ficos est谩n justificados a la izquierda, con textos a la derecha, mientras que la alemana est谩n los gr谩ficos justificados al centro con los textos bajo la l铆nea de comandos. Realizo los cambios en el programa para que el aspecto visual del juego sea como el alem谩n, con gr谩ficos en el centro y textos debajo, tal como estamos acostumbrados con las aventuras gr谩ficas. Tambi茅n reparo alg煤n grafico que no me gustaba.
7.- Rutina de salvado del progreso.
La rutina original cargaba y salvaba en cinta con un texto sin justificar al centro. La versi贸n en alem谩n empleaba la grabaci贸n en disco con un texto justificado al centro. Opt茅 por una 煤nica versi贸n del juego que permitiera grabar o cargar de disco o cinta, con lo que es posible emplear ambos medios para cargar y guardar los progresos.
Curiosamente, en la versi贸n en italiano no me funcion贸 nunca su rutina de grabaci贸n. Ten铆a distintos nombres para grabaci贸n y carga, por lo que no funcionaba adecuadamente.8.- Incorporaci贸n de m煤sica in-game.
El juego original no dispon铆a de m煤sica in-game, as铆 que para dar un poco de ambientaci贸n, Bieno me suguiri贸 el poner una m煤sica para acompa帽ar la aventura. Al ser programa en BASIC, no dispone de las instrucciones necesarias para reproducir un archivo SID, por lo que incorpor茅 un player en c贸digo m谩quina en una posici贸n libre de memoria. Aparte del player, hab铆a que cargar el SID, por lo que fue colocado en una posici贸n libre de memoria del Commodore no accesible por el BASIC, en la $C000.
El player lo coloqu茅 por debajo del programa BASIC, en la posici贸n $02A7, donde dispongo de 89 bytes libres. El player del SID, en verdad est谩 embebido en el propio SID. 脷nicamente lo que hace el programa situado en $02A7 es modificar el vector de la interrupci贸n del raster en $0314 y $315, que llaman a $EA31, metiendo nuestra llamada al SID por medio, que se encuentra en $02A7 (bueno, un par de bytes mas adelante). De esta manera, cuando se produce la interrupci贸n llama al SID para reproducirlo y devuelve el control al BASIC para continuar ejecutando el juego.
Para preparar todo el bloque, realic茅 un cargador inicial al juego para que me cargue en memoria el Player mediante interrupciones, el SID que voy a emplear y luego el juego. Una vez est谩n todos los bloques en memoria, a trav茅s del cartucho Action Replay 7.5, realizo una captura de memoria para exportarlo a un 煤nico archivo PRG para poder montar el juego en cinta y disco.
9.- Incorporaci贸n de nuevas descripciones y textos de ayuda.
El juego, en su concepto inicial, era terriblemente dif铆cil avanzar puesto que no dispon铆a de suficientes pistas en las descripciones para ir progresando. Hab铆a situaciones en las que dar el paso correcto era una proeza puesto que carec铆a de ayudas de ning煤n tipo. Para dar ciertas facilidades al jugador, incorpor茅 unas cuantas lineas al c贸digo para que, mediante el EXAMINAR y MIRAR, nos desvelara el siguiente paso a realizar. Originalmente, el juego te dec铆a "EXAMINA y PIENSA". Y ah铆 se quedaba tan "pichi".
Un par de ejemplos:
¿A qui茅n se le iba a ocurrir trepar al tejado de la casa, si no aparece ninguna indicaci贸n por ning煤n lado de que se puede "TREPAR (CLIMB)" o que existe el "TEJADO" de la casa? Pues si uno est谩 en la calle, fuera de la casa y "MIRA" o "EXAMINA" la casa, el programa te devuelve un mensaje que se puede "TREPAR" a la "CASA" para subir al tejado.
O la "CAPA", ¿qui茅n en su sano juicio va a "PONER" o "VESTIR" una "CAPA" cuando es una acci贸n que no te la esperas? Que por cierto... esta acci贸n hay que realizarla en el "SOTANO" para que se produzca otro evento, porque el juego original podr铆a avisarte con "SE CAE ALGO AL SUELO" y te pod铆as pasar horas dando vueltas por la casa buscando un objeto que est谩 en el "SOTANO" y solo es visible si vuelves a "EXAMINAR" o "MIRAR" el "SOTANO"
En fin... detalles para hacer mas amigable la aventura y que se pueda acabar sin tener mucha experiencia en aventuras conversacionales.
10.- Creaci贸n del MASTER para cinta.
Con el juego ya creado en PRG con la m煤sica in-game (ver Paso 8), nos disponemos a realizar el MASTER en cinta con la pantalla y m煤sica de carga como aquellos juegos comerciales que esperabamos a que cargaran mientras com铆amos un bocata de Nocilla. Para el Master de cinta, utilic茅 un programa que te lo da todo mascado. Lo unico que hay que hacer es tener preparada la pantalla de carga en formato KOALA, una m煤sica en formato SID. No me extiendo en este proceso mucho con la creaci贸n del cargador ya que existe mucha literatura al respecto, y solo mencionar茅 algunos pasos realizados:
- Con el TAPE MASTER PRO 3 edit茅 un texto de carga que se muestra en pantalla y el texto del scroll horizontal. Tambi茅n seleccion茅 las rayas de carga tirando a verde acordes a la pantalla de carga.
- Incorpor茅 una pantalla de carga preparada por Josepzin y Bieno en formato KOALA.
- A帽ad铆 el SID de carga, localizado en la posici贸n $1000. Pero en SID directamente no vale y hay que convertirlo en DAT mediante el SIDPlay, export谩ndolo a .DAT. Se mete todo en un 煤nico disco mediante el DirMaster... (bueno, lo de preparar los archivos en el disco casi es lo primero que hay que hacer antes de meterse con el TAPE MASTER). Y con un bot贸n, te crea el archivo que lanza la creaci贸n del MASTER para cinta. Lo mezcla todo junto... te lo graba a cinta.. (como estaba con el WinVICE, pues a .TAP).
- ¡Y tach谩n! el juego dispone de un cargador con pantalla de presentaci贸n y m煤sica de carga.
Con todo esto, ya tenemos el programa funcionando con la m煤sica in-game!!!
As铆 fue la aventurilla de traducir un juego conversacional en BASIC.¡¡¡A disfrutarlo!!!
![]() |
EL juego sali贸 en el disquette del fancine de Explora Commodore del 2024 |
Cr茅ditos:
- Programa Original Aztec Tomb de Antony Crowther / Alligata Software (1983)
- Traducci贸n al castellano por Minter
- M煤sica Tape Loader por The Dark Realm (1995)
- M煤sica in-game por Wizax (1988)
- Car谩tula de la cinta por Josepzin
- Pantalla de carga de Minter & Bieno
- Brebajes usados: Mahou & Kombucha La Valiente
Descarga:
- Pod茅is descargaros el juego desde nuestro Itchio en ESTE enlace.
4 Comentarios
Seguro que ese Minter lo program贸 para Astra! :P
ResponderEliminarVaya currazo la traducci贸n de este t铆tulo, gracias por compartir el proceso.
ResponderEliminarIncre铆ble, el otro d铆a le铆 el reportaje de la 8陋 edici贸n de la Explora Commodore y justo encima de una de las mesas veo este juego, lo busque por internet, m谩s tarde me leo el art铆culo publicado en esta web sobre el mismo, y ahora aqu铆 me lo encuentro en espa帽ol. Esta claro que si hay una 9陋 edici贸n espero ir all铆. Muchas gracias. Un saludo desde La Coru帽a.
ResponderEliminarTengo buenos recuerdos de Aztec Tomb porque me vino en una cinta de turbos. Nunca pude terminarlo, como bien explic谩is tiene cosas que no son intuitivas. Hay una segunda parte muy dif铆cil de encontrar (Aztec Tomb Revisited) que no se parece en nada :)
ResponderEliminar