Archive for marzo 2006

Acabando Zipi Y Zape (esta vez sí)

12 marzo, 2006

A petición de un buen puñado de amigos durante el pasado MadriSX y de más gente a través de foros de la red, retomo a Zipi Y Zape donde lo dejamos hace unos días para confirmar, esta vez sin lugar a dudas, si se puede realmente llegar hasta el final.

Una vez que habíamos conseguido el parche que durante tantos años se había llegado a dar por inconseguible, el protagonista debe volver a la localidad del bosque donde se veían unas extrañas pisadas y apartar las hojas del suelo. Automágicamente cae en el pasillo abandonado de una antigua mina, frente a una vagoneta cuyo freno puede quitar después de haberse subido en ella… BUeno, también puede hacerlo antes, pero entonces llega el autor y te mata… ¡No! no es retórico ni metafora, ¡llega el autor y te mata! 😀 Tras ello aparece en una cueva donde puede coger un remo y darle un bocadillo a un vagabundo a cambio de información sobre el parche (completamente inútil, puesto que ya no puedes volver a la zona donde está) y de una cuerda (cuyo uso, si lo hubiera, no he llegado a descubrir exactamente). Saliendo de la cueva hay una playa en la que puedes tirarte al agua y, tras ponerte las correspondientes gafas de buceo que había en la casa, sumergirte en las profundidades. Buceando todo hacia el norte hay un hermoso ejemplar de pulpo herido por un arpón. Si se lo quitas se hará amiguete tuyo y te sacará de un problema más tarde. Explorando bajo el agua hacia el sur hay lo que parecía ser un puzzle pero termina siendo un pequeño, ejem, cúmulo de despropósitos. Tras las grietas de unas rocas ves un extraño brillo, pero una manada de pirañas te impide acercarte. Hasta ahí normal. Para apartarlas de tu camino debes arrojar la linterna, eso sí, encendida, para que se vayan tras ella. Hasta ahí normal también…
El problema empieza con uno de los clásicos metodos para crear fuentes de luz «encendibles» y «apagables» en los parsers ochenteros, la duplicación del objeto. Así, el objeto linterna, en la memoria del Spectrum son en realidad dos objetos diferentes, una linterna apagada y otra encendida.
Si esto suponía una ventaja frente a la opción de tener un sólo objeto y, cuando la situación lo requiríera, consultar un marcador o flag (o lo que fuera) que indicase su estado (encendido o apagado) es digno de un tema de discusión para ello sólo. Ciertamente, alguna ventaja tenía que tener, ya que todos los parsers de la época incluían ese mecanismo por defecto (o al menos que yo recuerde el PAWS también lo hacía) aunque su verdadera utilidad (que yo nunca llegué a comprender del todo) es un misterio para otra historia…
Lo cierto es que por algún otro motivo en el que ya prefiero no adentrarme, la referencia interna al nombre de la linterna apagada era, efectivamente, «linterna», mientras que la de la encendida era «lint». Y si no ponías «tira lint» el programa se negaba en redondo a entederte XDD
Y suponiendo que, por casualidad, por traspiés al teclear, o por destripar el programa, dieses con la abreviatura adecuada, podías entrar por la grieta para ver que… allí sólo había un montón de algas…
En realidad estaba previsto que el texto anunciase expresamente la aparición de una oronda boya, pero por algún motivo en GAC parece ser que la descripción de la localidad se traga la última linea de texto impreso por una de sus condiciones de «baja prioridad» (ojo, estoy especulando a partir de los síntomas, vamos, que podría estar equivocándome de medio a medio). El caso es que la existencia de la boya pasa completamente inadvertida al jugador ya que el texto queda sobreimpreso por el de «Aquí no hay más que algas», pero en el afortunado caso de que te imagines que está allí delante de tus narices… puedes desinflarla para coger un gancho que hay en su interior.
Y nunca sabremos para qué… XDD. En principio, tampoco parece que se usen para nada en el resto del juego, así que nos quedaremos con la duda de si eran red herrings o esa fue una linea de argumento que se abandonó por lo que fuera y cuyos restos quedaron enterrados allí…
Pero la aventura, como la vida, continua, así que todo es cuestión de arreglar la barca pinchada de la playa con el parche, inflarla, empujarla para meterla al agua, tirarnos nosotros al agua, subirnos a ella (todo en ese orden) y… ¡a navegar!

El mar está diseñado como un laberinto mapeable en el que te puedes orientar fijandote en las leves diferencias de descripción de cada localidad… «Estás en el agua», «Estás en el mar», «…en el agua» o en el orden en que aparecen señaladas las salidas… Es igual, porque ni tiene salida ni hay que meterse en él, ya que la cuestión es realizar las acciones adecuadas en su primerísima pantalla (la que menciona la presencia de un islote). Y estás son sencillamente: bajarse de la barca y salir del agua. Apareces en una minúscula islilla en la que no tienes nada que hacer salvo entretenerte leyendo un mensaje escrito en la palmera y tirarte de nuevo al agua para que el pulpo te salve de un tiburon y te manda a otra isla llena de indígenas hostiles. Allí todo se reduce, siempre que no te falte ningún objeto necesario, a impresionarles con tus atributos «divinos» encendiendo el walki, el petardo, y tirándoles la bombona, tras lo cual, en un confuso maremagnum de mensajes atropellados por el efecto que describía antes y que hace que todo parezca no tener mucho sentido… llegas al mensaje de final de juego.
No me entusiasman los spoilers, pero me han pedido con tanta insistencia que presente pruebas palpables de que la aventura se puede terminar que incluyo los correspondientes pantallazos:

La misma pantalla con la fuente standard (y más legible) del Spectrum. Particularmente recomendaría a quien quiera rejugar la aventura vía emulador que se la cambie con las instrucciones POKE 23606, 0 y POKE 23607,60 y, ya de paso, aumentar cuanto se pueda la velocidad de ejecución para hacerlo todo un poco más llevadero ^_^’

No soy tampoco un entusiasta de los walkthroughs palabra por palabra en los conversacionales… es como pasarlos sin enterarte de lo que pasa, pero hay gente que no puede vivir sin ellos, así que ahí va la segunda parte de Zipi Y Zape al detalle, con agradecimiento para Bardol que ha puesto el principio hasta lo del clavo y el árbol (sigh…) en los foros del CAAD.

preparate
baja
s
ex puerta
coge clavo
abre puerta
entra
mira bajo mesa
coge petardo
n
empuja cama
ex caja
coge linterna
coge gafas
coge bombona
s
e
coge bocadillo
coge walkie
o
sal
e
n
n
n
o
o
n
coge liana
ata bici con liana
coge bomba
s
e
lanza clavo bajo árbol
coge parche
s
o
s
aparta hojas
sube vagoneta
quita freno
n
coge remo
e
da bocadillo a vagabundo
e
s
e
tirate al agua
ponte gafas
sumergete
n
n
o
n
quita arpon
s
e
s
s
s
s
enciende linterna
lanza lint — OJO, «LINT» !!!
entra grieta
desinfla boya
coge gancho
sal
n
n
emerge
sal
arregla barca
infla barca
empuja barca
tirate agua
sube barca
e
baja de la barca
sal del agua
tirate al agua
enciende walkie
enciende petardo
lanza bombona

Y ahora sí que sí, Zipi Y Zape acabado y terminado del todo… y, mirándolo por el lado bueno, en el proceso hemos aprendido un modo de destripar los juegos hechos con GAC (¡ojo al artículo enlazado!) y ¡Eh, lo bien que nos lo hemos pasado también cuenta!

Derribando el mito…Quién mató a la aventura conversacional?

1 marzo, 2006

Es un lugar común afirmar que la llegada de las máquinas de 16 bits por un lado y el apogéo de las aventuras gráficas por otro suspusieron el final de la aventura conversacional como modelo de juego popular y comercialmente viable entre últimos de los años 80 y primeros de los 90. Pero lo cierto es que, incluso durante sus supuestos años de esplendor, la ficción interactiva nunca fue un estilo del agrado del público mayoritario. Las instrucciones de muchos de los trabajos de la época incluían, a modo de broma socorrida, apelaciones a la virtud de la paciencia del jugador en forma de llamamientos a resistir la tentación de cargar el arcade más cercano, como si el propio juego, en el que uno se había gastado un dinero para pasarlo bien, estuviese curandose en salud a base de pedir disculpas por no ser divertido. Era normal que en los puestos de cintas copiadas de El Rastro en Madrid los vendedores pusieran rotulos bien grandes en las conversacionales anunciando su condición, casi a modo de advertencia del peligro, invitando al incauto a alejarse… y de hecho más de uno de ellos sufrió el abroncamiento de su clientela habitual al grito de «¿Cómo pudiste venderme esto a mí? ¡Yo te consideraba mi amigo…!» aunque la «víctima» hubiese adquirido el juego a precio de piratería, es decir, por alrededor de una décima parte de su valor de venta.

Aparte de factores, como se mencionó en alguna ocasión en los artículos de Andrés Samudio en la revista Micro Hobby, tales como la mentalidad española, más proclive que la inglesa a los juegos gráficamente vistosos y de acción compulsiva, no hay que dejar de tener en cuenta que en la España de esos años realmente no se tuvo una visión real de lo que la aventura conversacional podía dar de sí. Los referentes de «calidad» de la época, los clásicos de Infocom, apenas tuvieron difusión fuera de los círculos de los fans más especializados, y el grueso del material disponible en español no aguantaría la comparación frente a ellos, entre otros motivos, por tener como referente a una máquina, el ZX Spectrum, en la que éstos no querrían ni ejecutarse. Para colmo, muchas de las aventuras españolas se crearon con una herramienta, el Graphic Adventure Creator (GAC), ingeniosa y relevante en su momento, pero que fue rápidamente superada en versatilidad y prestaciones por otras diseñadas para ordenadores de las mismas limitaciones técnicas, como el Professional Adventure Writer (PAW).

Y aún así, al GAC le debemos unas cuantas «joyitas». Obras que adolecían de limitaciones draconianas de vocabulario y, consecuentemente, de libertad de acción para el jugador, pero que en manos de buenos profesionales del diseño de videojuegos lograron dejar momentos imborrables en la memoria de la afición… El Quijote, Arquímedes XXI, Los Pájaros de Bangkok… son justamente recordados como clásicos de la ficción interactiva española por haber suplido sus estrecheces con la atención que sus creadores supieron poner a factores indispensables en cualquier programa como la presentación o la jugabilidad.
Pero al eco del éxito que poco tiempo después cosecharían los trabajos de Aventuras AD realizados con el PAWS surgieron «réplicas» que, piadosamente, cabría denominar como «bajo par» y que, a base de conseguir quitar las ganas de jugar aventuras de texto incluso a los pocos que se sentían favorablemente predispuestos a ello lograron echar por tierra la labor de difusión del medio que entre las aventuras de calidad de AD y los artículos del Sr. Samudio en las revistas se había conseguido lenta y esforzadamente.

Ke Rulen Los Petas y Zipi Y Zape partían de la discutible decisión de sus empresas editoras de seguir usando el GAC como instrumento de creación cuando éste ya había quedado casi obsoleto frente a la mayor adaptabilidad del PAW al idioma español y su mayor capacidad para ofrecer un acabado profesional, algo dificil de entender (alguna razón habría, qué duda cabe, pero…) cuando ya desde ese momento era un producto asequible a los autores caseros que lo utilizaron masivamente, y con resultados apabullantemente mejores, en obras que, para lo bueno y para lo malo, ya sólo verían la luz comercial a través de la venta por correo entre aficionados.

En cualquier caso, y con una herramienta igual de limitada, allá donde los clásicos españoles del GAC de mediados de los 80 ofrecían unos gráficos sencillos pero agradables a la vista, Ke Rulen Los Petas y Zipi y Zape mostraban unas pantallas chillonas que daban más la sensación de estar torpemente emborronadas. Dónde en unas había unos textos cómodos de leer, en las otras aparecían unas fuentes de letras prácticamente ininteligibles. Dónde antes habían unos puzzles inteligentes que desafiaban al ingenio del jugador ahora había unos insufribles atascos eternos basados en el temible «síndrome de la palabra exacta» que parecían estar ahí para poner a prueba la capacidad del usuario de resistir al aburrimiento. Ni el humor grueso de los Petas ni la cándida intención de Zipi y Zape de reproducir en la pantalla el tono de peripecia costumbrista de los tebeos de Escobar en los que se basaba podían contrarrestar sus más elementales carencias. Allá donde El Quijote o Carvalho provocan recuerdos agradables entre quienes las jugaron, estas últimas despiertan miradas furibundas por la triste sensación de dinero y, sobre todo, tiempo perdidos con ellas entre los que las compraron.

Nadie (nadie realista, es decir) esperaba que el juego de Zipi y Zape lograse realmente transplantar al ordenador la sensación que su autor lograba crear en el papel impreso de estar abriendote una ventana en el tiempo hacia su infancia, tanto en las páginas elaboradas en los años 70 (las que un servidor tiene como referencia de sus lecturas de niño) como las reediciones de material más cercano a la misma posguerra que las revistas y recopilaciones de Bruguera dejaban caer de cuando en cuando. Un mundo exótico donde montar en bicicleta era una aventura excepcional y las casas eran tan grandes que hasta tenían cuartos de los ratones. Y, desde luego, el ritmo de la ficción interactiva, marcado por el tiempo que se toma el jugador en teclear órdenes escritas e introducirlas a la máquina, no puede relacionarse con el que marca la distribución y los saltos en el tiempo y el espacio de las viñetas en una página…

Pero lo que los jugadores reclamábamos realmente era un juego que cumpliese unos mínimos, sin esperas interminables entre pantalla y pantalla marcadas por la desesperante sensación de no saber siquiera que acciones básicas utilizar para desenvolverte con algo de soltura en un entorno de juego cada vez más… hostil. Buena parte de sus atascos de palabra exacta fueron resueltos por casualidad más que otra cosa, como aquel del mismo principio del juego que, siguiendo la consigna de las instrucciones de usar una mentalidad de niño, te obligaba a teclear «jugar» para acceder a la primera pantalla… genial. Y ni la casualidad pudo evitar que el juego haya permanecido oficiosamente «sin resolver» desde su lanzamiento en 1988 hasta hoy en día, casi 20 años después, cuando no hay disponible ninguna solución completa en la red y se especulan teorías que van desde que las copias preservadas están corruptas a que el juego originalmente tenía un bug que impedía materialmente su finalización.

Aparentemente, para avanzar en la segunda carga de la aventura, había que conseguir un parche para arreglar una balsa hinchable pinchada con la que poder navegar hacía otras zonas del juego. Los textos sugieren que el padre de los gemelos, que está cortando leña laboriosamente en un bosque, posee dicho parche pero no quiere proporcionarselo al jugador. Hasta la fecha no se ha sabido públicamente de nadie que hubiese pasado de ese punto. A raiz de un brainstorming colectivo entre los contertulios habituales de los foros del CAAD, tratando de resolver entre todos el juego, se descubrió recientemente lo que parecía ser un dato revelador. Mientras que en las versiones de Spectrum y Amstrad, elaboradas con el GAC, no parecía haber manera humana de traspasar ese punto, en la versión de MSX, que tras ser destripada (encontrar una imagen preservada para emulador que funcionase ya fue de por sí una señora aventura) resultó estar desarrollada en lenguaje BASIC y ser, por tanto, fácil de analizar mirando un volcado a texto del fichero, el atasco se resolvía de una manera bastante simple y hasta burda… Bastaba con dejar uno de los objetos del inventario, concretamente un clavo, en el mismo sitio que el padre. Tras ello, éste se sentaría a descansar de sus labores de esforzado leñador, con tan mala suerte que lo haría justo encima del clavo. Al salir aullando de dolor se dejaría el ansiado parche que ya se podría coger tranquilamente. Así de simple.

Pero esa maniobra, en las versiones hechas con GAC, no producía absolutamente ningún resultado. A partir de ahí se creó un consenso más o menos generalizado de que las versiones de Spectrum y Amstrad de Zipi y Zape son absolutamente inacabables por algún fallo indeterminado de programación. Sólo unas pocas voces, entre las que cabe contar la de Carlos sánchez, administrador de la web del CAAD, ejercieron una sensata disidencia afirmando que, si bien había una alta probabilidad de que ello fuera cierto, no se podría dar definitivamente por seguro al 100% hasta que no se localizase el supuesto fallo, para lo cual habría que tener acceso, de alguna manera, al código fuente de la aventura. Y ahí surgía el gran problema, pues, al contrario que con PAW, para el que hay al menos un programa que traduce ejecutables de Spectrum creados con dicha herramienta a su lenguaje fuente, no hay nada que permita analizar un ejecutable de GAC más allá de intentar rastrearlo en ensamblador puro… O eso pensábamos todos en ese momento.

Durante un tiempo un servidor, simplemente por ver si había algo de suerte y servía para algo, se dedicó a aprender los rudimentos básicos del GAC y crear pequeñas aventuras de prueba con él. La descabellada idea era investigar comparando snapshots de mis pruebas con los de juegos comerciales de GAC, como el propio Zipi y Zape, para ver si conseguía datos o pautas que permitiesen rastrear, siquiera a un nivel muy básico, sus códigos internos. Lo primero que descubrí fue que, mientras no había problemas con los ficheros de datos, los ejecutables generados por cuantas copias del GAC conseguí localizar colgaban inmisericordemente a todos mis emuladores de Spectrum por algún motivo que podría (o no) estar relacionado con que tienen una rutina de carga en código máquina particularmente farragosa y marciana… pero ese es otro misterio para otra historia…

En cualquier caso, pronto descubrí que por esa vía, y dados mis limitados conocimientos de ensamblador, podría tirarme literalmente años hasta dar con algo en claro… Toda esperanza parecía perdida…

¿Toda? ¡No!

En el número 78 de la revista inglesa Your Sinclair publicado en junio de 1992 la cinta de portada incluía, junto a las demos y juegos habituales, un conjunto de utilidades para el GAC entre las que se encontraba una llamada «extractor» cuyo nombre ya era de por si una posible luz al final del tunel. La teoría era que el programa cargaba una copia de un ejecutable «no protegido» generado por GAC y salvaba su base de datos, que podría luego cargarse desde el propio GAC. Evidentemente había problemas, la cinta de Zipi y Zape para Spectrum incluye unas cuantas toneladas de capas adicionales de protección anti-copia además del peculiar sistema de carga que añade el GAC de motu propio. Por si fuera poco, todos mis intentos de hacer funcionar el programa extractor con pequeños juegos sin proteger hechos por mi mismo para ver cómo funcionaba todo no daban por resultado más que ficheros que el GAC luego no reconocía como propios… mal asunto…

Pero comparando los resultados con unos y otros sí que salían a la luz datos relevantes, como, por ejemplo, que todos los juegos de GAC guardan su base datos a partir de una dirección fija de la memoria del Spectrum (para los interesados en los detalles técnicos, la 42271), y que lo que hacía el extractor era guardar a cinta todo lo que hubiera desde esa dirección hasta el final de la memoria física del Speccy (con un pequeño truco sucio manipulando los datos de la longitud en la cabecera del fichero para que luego el GAC se lo trague sin rechistar aunque no se supiera previamente la longitus original de la base de datos en cuestión…) Aún si ello fuera correcto, sacar algo en claro trabajando en un Spectrum real con cassettes hubiera sido un horror, pero las herramientas de debugging que nos proporcionan hoy en día los emuladores vienen cual caballería al rescate.

El plan era copiar a pelo la sección mencionada de memoria de un snapshot de la segunda parte de Zipi y Zape y, usando la función de «cargar binarios» de ZXSpin hacer algo así como «copypastearlo» en la memoria de un snapshot del GAC en ejecución, sólo por ver qué pasaba y tal… Sonaba demasiado «bruto» para que funcionase, pero… tras un momento de suspense inicial en el que la pantalla no daba señales de vida, al entrar en cualquiera de las opciones de los menús de GAC, y recibiendo multitud de alertas por estar bordeando los límites de la memoria, comenzé a ver, tras haberlo dejado como la proverbial causa perdida, los mensajes del código fuente de Zipi y Zape.

¡Cuesta abajo!
Ahora sólo hay que empezar a rastrear la sección de mensajes desde su correspondiente menú para ver si, efectivamente, había o no un mensaje similar al de lo que sucedía en MSX. OK, el mensaje número 41 reza así:

Lo siguiente es buscar un texto que coincida con el de la localidad conflictiva. En la sección de «Room Descriptions» rápidamente lo encuentro en la posición 15:

Tras ello resulta fácil pensar que mirando el la sección de condiciones locales (en GAC quiere decir que están asociadas a una localidad concreta) del sitio 15 encontraré pistas potencialmente sustanciosas. Lo primero que sale es esto:

…que quiere decir que si en la habitacion 15 el jugador teclea el verbo 12 con el objeto 16, el adverbio 1, y el nombre 83 llevando encima el objeto 16 y estando sin activar cierto mnarcador (el 98)… entonces desaparezca el objeto 16, se active el marcador 98, salga el mensaje 41 y aparezca el objeto 8…
Como cabía aventurar, el objeto 16 era el clavo…

¿Y el 83? a veeer…

…Uuuuuh, esto podría acabar dejando el legendario «entra en molino cuidaosamente» del Quijote a la altura del betún. Y el adverbio…

Me retracto, esto VA a dejar lo de «entra en molino cuidadosamente» a la altura del betún XDDDD Temblando por lo que pueda salir, me dirijo a ver cual era el verbo…

…Im-pre-sio-nan-te!!!! Paso a caragar el Zipi y Zape a comprobarlo…

…Eeeeefectivamente, pongo ahora un pantallazo cambiando con los pokes adecuados la fuente del texto por la original del spectrum para que se lea un poquito bien (con la del juego no se entiende nada XDD)

Así que ya lo sabemos… Señoras y señores, la manera de salir del bloqueo era ni más ni menos que «lanzar clavo bajo arbol», y es que el genial programador, por supuesto, sabe pefectamente que los clavos no se «clavan», ni se «ponen» en los sitios, no señor, ¡se lanzan! Pero, por supuesto, no se lanzan a cualquier parte, estaría bueno, se lanzan debajo de los árboles, porque, como todo el mundo sabe, si lo lanzases a cualquier otro sitio ¿cómo ibas a esperar que tu padre se sentase encima? XDDDDDDDDDDDD ¡Ahora está claro! Si alguna vez te sientes atorado en la vida y no sabes qué decisión tomar… ¡¡¡practica el «lanzamiento de clavo»!!!

Hay, por supuesto, lecciones que sacar de todo esto. Una podría ser que, quizá, la aventura gráfica no mató a la aventura conversacional, como era el lugar común sobre lo que pasó entre últimos de los 80 y primeros de los 90. Quizá la aventura conversacional mató a la aventura conversacional…
Y otra lección sería, claro, que ya hay otro mito de inacababilidad derribado… o no. Quiero decir, ahora sabemos cómo pasar de ese atasco, pero por cansancio no he comprobado que se pueda llegar desde ahí hasta el final, así que nada nos dice que por el camino pudiera haber otra situación igual de… igual de… igual de…

¡…no encuentro la palabra exacta! 😉