Torreoscura

De la mano de Bieno Marti, cuyas anteriores incursiones en el terreno de la aventura conversacional (Mansión Kali I y II, El Prisionero…) son sobradamente conocidas, nos llega Torreoscura. Ai igual que en anteriores ocasiones el juego ha sido desarrollado simultaneamente en Quill para Commodore 64 por el propio Bieno, para Amstrad CPC por Miguel Ángel Silva (MiguelSky) y para ZX Spectrum por vuestro humilde y seguro servidor. Y a diferencia de ellas, esta vez el port para Spectrum no se ha hecho usando la herramienta InPAWS (para producir un juego PAWS) sino que se ha re-escrito usando DAAD, lo que ha propiciado que además de Spectrum hayan salido versiones para PC MS-DOS (CGA), Amstrad PCW y MSX. Como todavía no nos parecía suficiente, una versión adicional para ORIC ha sido realizada gracias a Chema Enguita.

EZgNGnbXQAIPik2

La aventura, que tiene ese toque de ambientación a caballo entre el misterio y el gótico que encantará a los seguidores de las obras de Bieno, comienza con un protagonista que, siguiendo la invitación de un antiguo amigo cuyo contacto perdió hace tiempo, realiza una escapada de vacaciones a un pueblo recóndito. Nada más presentarse allí se encuentra con que su amigo no aparece por ninguna parte… y, por supuesto, empiezan a pasar cosas raras…

Rompiendo también con la tradición de las aventuras anteriores de Bieno, en esta ocasión las ocasionales pantallas gráficas hechas con bloques PETSCII han pasado a ser gráficos vectoriales realizados con el Illustrator, la herramienta de Gilsoft hecha expresamente para añadir gráficos a las aventuras realizadas con Quill (que a su vez sentaría el modelo para las herramientas gráficas de PAWS y DAAD). Como suelen remarcar todos los que han usado alguna vez alguna de las encarnaciones de este sistema de gráficos de la familia Gilsoft, su interfaz de usuario es más fea que pegar a mamá, pero en el fondo hacerse con ella no requiere más esfuerzo que ser consciente de que no estás dibujando a mano alzada como con cualquier programa de dibujo común, sino que estás introduciendo un listado rigurosamente secuencial de órdenes gráficas, lo que hace que todo tenga sentido (aunque no lo haga más bonito 😉 ). Hay que decir que el uso que ha hecho Bieno Marti de un sistema que, mayormente, se limita a una sucesión de líneas y rellenos con tramas, ha sido bastante ingenioso y sabiamente aprovechado.

Como curiosidad os enseñamos alguno de los primeros ensayos gráficos desechados. El primero es la primera aproximación al gráfico de la habitación del hostal. El segundo es la recepción del mismo hostal en una primera interpretación hecha por Igor Errazking, una maravillosa locura inspirada en la estética de las películas de expresionismo alemán en la que no se pudo continuar por falta de tiempo del colaborador.


Finalmente Bieno se encargó en exclusiva de la realización de los gráficos en C64, lo que llevó a una de las partes más laboriosas de todo el proceso de creación, que fue portar los susodichos gráficos a los otros sistemas. A diferencia de lo que sucedería posteriormente con DAAD, en Quill no hay (o no se llegó a lanzar) ninguna herramienta de conversión entre los gráficos de un sistema y otros, por lo que hubo que realizar un montón de cosas «a mano». Para Spectrum había que convertir los gráficos de Quill de C64 a gráficos de DAAD de Spectrum teniendo en cuenta que la pantalla de C64 tiene una resolución horizontal notablemente superior (64 bytes mayor, el equivalente a 8 caracteres). Entre la disyuntiva de intentar hacer una versión reescalada para ZX o cercenar parte de la imagen en cada gráfico lo último fue lo más viable y acertado. Algunas pantallas se prestaban bastanta bien a prescindir de las partes laterales, o a hacer un «corte» en alguna parte interior donde quedase hueco. Con ello en mente, el proceso consistió en tomar nota manualmente de cada órden gráfica de C64, pasar sus coordenadas a las equivalentes de la pantalla de Spectrum (con un oportuno script de Python) e introducir manualmente la órden con su código y sus nuevas coordenadas en el editor de gráficos de DAAD para Speccy. Nada difícil, aunque desde luego aburrido de narices. Todo fue cuestión de dedicarle sin prisa ni ansia un rato cada día poniendo una buena música de fondo y sin obsesionarse por acabar 🙂

Con la intención de evitar que la conversión de los gráficos de C64 a Amstrad CPC fuera tan tediosa como en Spectrum, pensamos en buscar un modo de automatizar el proceso. Aparentemente sería más sencillo dado que el tamaño y resolución de sus respectivas pantallas es el mismo así que no habría que preocuparse por andar buscando areas «recortables» lo que haría la conversión algo más directa. Las facilidades terminaban ahí, claro, ya que aunque las pantallas tengan igual tamaño, el hardware gráfico deñ C64 y del CPC se parecen como un huevo a una castaña. Aunque el formato en que están internamente codificadas las órdenes gráficas en uno y otro tiene puntos en común, también tiene otros aspectos en que es sustancialmente distinto (ejes de coordenadas que van en distinta dirección, entramados cuyo manejo no tiene nada que ver en un caso y en otro…) así que finalmente hubo que:

-Hacer ingeniería inversa del formato de gráficos de C64.
-Hacer ingeniería inversas del de CPC.
-Crear un script de Python que convirtiese del uno al otro.

Como el destino tenía escrito en letras de fuego que nada relacionado con los gráficos en Torreoscura tenía que ser sencillo y directo pronto nos encontramos con un dilema adicional. Trabajábamos con las ultimísimas versiones conservadas tanto de Quill como de Illustrator para Amstrad CPC, pero por más que rebuscábamos en todas las opciones disponibles, no había ninguna aparente manera de conseguir en éste sacar los gráficos a pantalla partida como en el caso de C64. El único modo era a pantalla completa, es decir, en cada localidad sale el gráfico ocupando toda la pantalla hasta que pulsas una tecla, se borra, y ya entonces sale el texto con la descripción del lugar. Y sin embargo, como MiguelSky hizo notar rápidamente, hay evidencia histórica de una buena cantidad de aventuras hechas con Quill para CPC que sí tienen los gráficos a pantalla partida (una ventana gráfica en la parte superior de la pantalla para el dibujo y otra en la inferior para los textos), como, por poner tan sólo un ejemplo entre muchos, el Murder Off Miami de Delta 4 (una de mis obras clásicas favoritas por basarse en un antecedente de la FI de los años 30 del siglo pasado, pero esa sí que es otra historia…). En el Illustrator de C64 los gráficos a pantalla partida venían de serie en su última versión, en Spectrum se conseguían mediante utilidades hechas por terceros (The Patch), pero no había rastro del método utilizado en los juegos de CPC…

Así que tuvimos que crear el nuestro propio. Siguiendo la pista sugerida por MiguelSky tomamos nota de las llamadas a rutinas del sistema que manejan ventanas en CPC en el desemsamblado del intérprete de Quill e, investigando, localizar las que nos interesaba desviar a un hueco en la memoria libre donde pusimos llamadas a otras que a su vez dividían la pantalla del modo que queríamos para que la versión de CPC tuviese sus gráficos a pantalla partida igual que las demás. Una «ñapa» casera muy poco elegante pero que pasa totalmente desapercibida para el jugador, quien simplemente verá que en CPC los gráficos salen igual que en el resto de versiones sin preocuparse de los malabarismos que tuvimos que hacer para lograrlo.

Como no podía ser de otro modo, una vez que el trabajo ya estaba hecho se descubrió que, por existir, ya existía la herramienta que buscábamos. Las últimas ediciones de Illustrator para CPC incluían una utilidad llamada The Splitter de la que lo único que se conserva en este momento son unas fotos de las instrucciones y que, como su nombre sugería, servía para partir la pantalla de los juegos de Quill. Significativamente el programa está ausente en todas las versiones preservadas de Illustrator conocidas en la red hasta la fecha. En el momento de escribir estas líneas no se ha perdido la esperanza de que Tim Gilberts lo encuentre entre sus discos viejos para que, si hay suerte, los próximos en hacer una aventura en Quill para CPC no tengan que hacérsela ellos mismos como nosotros 🙂

Bastante menos complicado fue conseguir gráficos para la versión PCW, ya que estos no son más que un copia-pega de pantallazos de la versión de Commodore convertidos al formato de Degas PI1 usado habitualmente en Aventuras AD para pasarlos por la herramienta DG en su versión de MS-DOS. Como un paso intermedio del proceso era tener los gráficos para PC CGA, pues aprovechando que el Pisuerga pasa por Valladolid, también salió una bonita versión para PC MS-DOS 😀

La pantalla de carga es original de R. Internacional excepto en las versiones de Spectrum y MSX, en las que las utilidades habituales de conversión automática de formatos daban unos resultados bastante pobres, por lo que optamos por sustituir el motivo de «atardecer» original por un nuevo gráfico «nocturno», más apropiado para sus paletas de colores, creado desde cero.

La versión de C64 incluye sendas piezas musicales creadas por Barón Ashler (de Kabuto Factory), una para oir durante la carga del juego en cinta y otra que suena de fondo durante la aventura. En Spectrum se usó la melodía de carga durante las pantallas de presentación de cada una de las 2 partes del juego y la música de fondo durante el resto de la aventura, como en el original. Ensamblar la música con el juego de Quill en C64 fue obra de Karmic, mientras que para Speccy (sólo 128k, como es habitual) usamos el motor musical CHIPnSFX de CNGSoft, al que se llama desde el gestor de interrupciones interno del propio DAAD, una combinación que ha dado muy buenos resultados. Que las llamadas al motor musical se hagan desde el propio DAAD además ha facilitado enormemente que, en Spectrum, desde órdenes del juego la música se pueda parar o reanudar al gusto del usuario, evitando el terrible efecto de precedentes como la versión 128k de The Neverending Story, donde la misma melodía machacona se reproducía en un bucle interminable sin posibilidad de parar salvo quitando el audio del ordenador/emulador. Torreoscura no será ni mucho menos la primera aventura conversacional con música de fondo, pero sí la primera hecha con DAAD en incluirla en su versión Spectrum 🙂

Torreoscura he dejado además como efecto colateral la creación de una nueva herramienta para DAAD pensada para facilitar la creación de versiones de aventuras para MSX en cinta (hasta ahora, desde la recuperación del DAAD en 2014, sólo el formato disquette estaba cubierto en MSX). ¿Recordáis ese párrafo del manual del DAAD que dice textualmente «there is no simple way to save files to cassette on MSX»? Bien, ya lo hay, se llama DAAD2MSXCas y es un script de Python pensado para cubrir ese «there is no simple way» ensamblando una imagen de cinta de MSX (fichero .cas) a partir de los ficheros DDB y MDG correspondientes.
Debido al complejo mapa interno de memoria de los juegos de DAAD en MSX (usando 64 Kb como RAM) es bastante complicado preparar un cargador de cinta que use las rutinas de la ROM. DAAD2MSXCas usa una modificación del cargador personalizado de Aventuras AD (sacado de la versión MSX en cinta de Los Templos Sagrados) que se automodifica para adaptarse a la carga de los ficheros de la aventura que estés haciendo. Los pythoneros pueden encontarlo en:

https://pypi.org/project/daad2msxcas/

Y hasta aquí las aburridas batallitas técnicas del «cómo se hizo». Todos los implicados a un nivel u otro (no dejéis de ver la amplia sección de créditos) esperamos que el juego final os guste y os haga pasarlo bien. Podéis encontrarlo en cualquiera de las siguientes páginas web:

Zona FI

Commodore Plus

ESp Soft

2 respuestas to “Torreoscura”

  1. C64blog Says:

    ¿ No sale la rubia cañón de las anteriores aventuras?

  2. Omegreion Says:

    Es sencillo pasar los gráficos de 16 colores de c64 o spectrum a CGA en DOS?

Deja un comentario