¡VAPF!


¡Vete al peo, Fede!

He vuelto a programar en BASIC como en los 80 (II)

Después de dar el pistoletazo de salida a mi plan trasladando el juego Dead End_ al Amstrad CPC, toca elegir la siguiente plataforma que voy a visitar. Tengo dos para elegir: Commodore 64 y MSX. Voy a continuar con esta última. En realidad me da más o menos igual una que otra, pero me quedo con el estándar japonés porque creo que es la que más se asemeja a las dos anteriores, Spectrum y Amstrad. Ya veremos al final de todo este proceso si mi intuición ha sido la correcta.

En este caso, MSX no es un único ordenador, sino un estándar. Hubo varios fabricantes que construyeron microordenadores siguiendo esa especificación y, como suele ocurrir, no son todos iguales al 100%. Aunque creo que programando en BASIC no deberíamos tener ningún problema, es posible que nos encontremos alguna sorpresa no muy grata en ese sentido. En principio, la plataforma será un MSX de primera generación, con 64 KB de memoria.

Toda la experiencia adquirida hasta el momento me va a ayudar, no tanto a dar este paso más rápido, sino a tener muy claro cuáles son los puntos que tengo que resolver. Eso sí, antes de empezar a programar nada, tengo que elegir un emulador que me permita trabajar lo más cómodamente posible. Esto es, en el que pueda guardar el estado actual, para continuar más adelante, y que me ofrezca la posibilidad de cargar/guardar el fichero con el programa desde fuera.

Por lo que he visto, la oferta de emuladores para macOS, aunque hay algunos más disponibles, se centra en dos de ellos: openMSX y CocoaMSX —que, a su vez, está basado en BlueMSX (solo para Windows). De todos ellos, el primero parece el más completo y, desde luego, es el que más actualizado está. No obstante, su configuración no es trivial, en tanto en cuanto hay que configurar el ordenador concreto que queremos emular. Tampoco he dedicado mucho tiempo a trastear; quería entrar rápido en harina, asi que me he decantado por el segundo, con el que más o menos me he apañado. Eso sí, he echado mucho de menos no poder usar el genial Retro Virtual Machine para estos menesteres.

Lo siguiente ha sido dar un repaso rápido al manual del MSX para ver por encima qué posibilidades tengo, principalmente en cuanto a modos gráficos, y también para ir familiarizándome con el juego de instrucciones BASIC.

Manuales de BASIC del MSX

En este punto ha sido donde he empleado más tiempo a la hora de sacar adelante este proyecto. Y me temo que lo seguirá siendo si me decido por continuar portando el juego a más ordenadores. Me refiero a comprender el funcionamiento de los modos gráficos del ordenador y su implementación. Una cosa aparentemente tan sencilla, como poder pintar un carácter con un color de tinta y otro de fondo, algo en lo que se basa el código del juego en sus versiones de Spectrum y Amstrad, no es factible en el MSX.

Voy a intentar explicarlo, centrándome en el funcionamiento del Spectrum, que es el que mejor conozco, y tratando de no perderme en los detalles. En un Spectrum, se almacena por un lado la información de los píxeles (tinta/fondo, es decir, encendido/apagado) y, por otro, la información de color. Para cada grupo de 8x8 píxeles, se establece un color de tinta y otro de fondo. El MSX funciona de manera similar a como lo hacen las consolas antiguas. Hay una tabla donde se almacenan bloques (o tiles), y otra tabla donde se almacenan los colores para esos bloques. La pantalla no se compone píxel a píxel, sino que se construye a partir de esos bloques, como si fueran piezas de Lego. Por tanto, no es posible elegir un bloque (una letra por ejemplo, pero podría ser cualquier gráfico de 8x8 que definamos) y sus colores por separado, sino que bloque y color son todo uno.

Para terminar de "complicar" el asunto, en el modo "Screen 1" de MSX, la tabla de colores solo tiene 32 posiciones, por lo que se asignan colores a cada 8 bloques correlativos. Esto me costó entenderlo; después de leer el manual, yo pensaba que los colores se aplicaban a 8 bloques correlativos de la pantalla, lo cual no tenía sentido. Así que tuve que pedír consejo a Jon Cortazar, alma mater de Relevo Videogames, experto en el desarrollo para MSX (además de otras plataformas) y, sobre todo, una gran persona, quien amablemente se molestó en explicarme de forma sencilla cómo funcionaba.

Como nota mental, para próximos proyectos, esta parte del código, la encargada de "pintar cosas en la pantalla", debería estar lo suficientemente aislada para que la transición entre diferentes plataformas sea lo más sencilla posible.

Una vez superado este escollo, me quedaban por repasar los siguientes puntos:

  • Cómo se edita un programa en BASIC. En particular, cómo se edita o elimina una línea.
  • Cómo se ejecuta y se interrumpe un programa BASIC.
  • Cómo se cargan y almacenan programas BASIC.
  • Cómo se gestionan los GDU (Gráficos Definidos por el Usuario).
  • Cómo se ubica el cursor en una posición determinada de la pantalla.

Como en el caso del Amstrad CPC, voy a elegir un modelo de ordenador con disco, en este caso un MSX2 Philips NMS-8250, ya que es lo más cómodo para trabajar. Ya veremos si luego no me llevo una sorpresa al probar el juego en un MSX "pelado". El emulador me permite crear una imagen de disco vacía, que puedo leer y escribir directamente desde macOS renombrando la extensión ".dsk" por ".img". Para Windows se puede usar el programa Disk Manager

Gracias a los consejos de Jon y al trasteo previo, ya tenía claro cómo debía hacer para poner los gráficos en pantalla, así que esta vez, en vez de copiar todo el listado desde cero, lo que hice fue partir de la versión de Spectrum, modificar las palabras clave que son diferentes y, en las partes que no me valían, usar la versión de Amstrad, también copiada. Toda la edición la hice en el PC, usando el emulador solo para probar y retocar alguna cosa. Más o menos se me dio bien, casi acerté a la primera con todo, menos con el dichoso bug del buffer, que me lo volví a comer (porque se me olvidó copiar la solución que ya tenía implementada en el listado de CPC).

Debido a cómo se gestiona la pantalla del MSX, eso sí, algunos detalles no están igual que en la versión de Spectrum. Por ejemplo, el gráfico que conforma la barra inferior que separa los marcadores está invertido. Y el fondo del mensaje que aparece cuando completamos un nivel no es azul, sino negro. Tampoco me molesté mucho en indagar en los comandos de sonido. Puse un "BEEP" sin más y a correr.

Por último, sólo faltaba generar los ficheros de cinta (.cas), disco (.dsk) y cartucho (.rom). Para este último he usado la utilidad MSX-BASIC ROM creator, de José Luis Tur. Enlazo a MSX Blog porque la web original donde se aloja el programa parece que no funciona he localizado la web oficial del programa.

Sobre todo el proceso de desarrollo tenéis más detalles técnicos en el repositorio del proyecto.

A posteriori lamento no haber dedicado más tiempo a aprender a manejar OpenMSX. No sé si es problema de mi ordenador; seguramente que sí, porque si no imagino que alguien más se habría quejado y, aunque el emulador hace bastante que no lo actualizan, imagino que tendrían una issue abierta. El caso es que el teclado no me funciona bien y, cuando estoy editando el listado en BASIC, el cursor se vuelve loco y se borran las líneas enteras. El caso es que, después de finalizar el desarrollo, Miguel me pasó unos ficheros de configuración que, copiados en la ubicación adecuada, permiten disponer de un buen abanico de ordenadores emulados. Y aunque me dio algún problema adicional, y su integración con macOS tampoco es la ideal, parece funcionar mucho mejor. Incluso tiene mapeadas las teclas del teclado del Mac, para no tener que saber/recordar dónde están ubicados los símbolos en el teclado del MSX.

La sensación que me queda os la podéis imaginar. La parte de gestión de vídeo del MSX es bastante diferente a la de los ordenadores de 8 bit que conocía hasta ahora y se me asemeja más a la de una videoconsola. También me queda la impresión, que es una obviedad, de que adaptando el código en vez de copiándolo directamente podría obtener mucho mejores resultados. Desde luego que esta versión no hace honor a lo que se puede conseguir con este ordenador pero, aun a riesgo de repetirme, en esta ocasión el objetivo era otro diferente.

Dead End_ (MSX)

Juegos: Demo eFootbal PES 2020 (PS4)

Otro año más llega el momento de probar la demo de Pro Evolution Soccer, que a partir de esta entrega ha sido renombrado como eFootball PES. Este año también ha sido lanzada en julio, con lo cual la he podido catar antes de irme de vacaciones. No obstante, el partido para el vídeo no lo jugué hasta después de volver. Y este breve comentario, como tres semanas después.

Como es habitual, el juego se siente diferente, ya que el equipo de desarrollo hace pequeños ajustes aquí y allí. Pero tampoco esperemos una gran revolución, por más que nos lo quieran vender. Si acaso el juego da la impresión de ser un poco más "alocado" o "aleatorio".

Visualmente creo que se les ha ido la mano con la saturación de los colores. Por lo demás, noto pocos cambios respecto a la edición del año pasado. Si acaso un lavado de cara a los menús, supongo que más animaciones y pequeños detalles, pero nada impactante, como vuelvo a repetir.

También han retocado las físicas. El balón parece ir un poco más suelto, y los cuerpo a cuerpo de los futbolistas toman más importancia. Podemos usar nuestro cuerpo para proteger el balón, así como cargar al contrario para intentar robar el esférico. La meteorología cambiante (la verdad es que no recuerdo si estaba en anteriores entregas) hace acto de presencia. Por ejemplo, uno de los partidos que he jugado empezó nevando y terminó lloviendo.

En esta demo tenemos la oportunidad de jugar partidos tanto contra la máquina como online con un pequeño conjunto de equipos (imagino que los que tienen contrato con Konami). Lo que me ha sorprendido —para mal— es que el "efecto Konami" se hace más presente que nunca. Que igual es que no sé jugar, pero en el último partido que he echado antes de escribir estas líneas ha sido escandaloso. Desde el primer momento se notaba que el rival me iba a pasar por encima; faltas no pitadas, goles de rebote, etc. Y ya lo terminé de constatar cuando me quedé con Messi solo a portería vacía, hice un tiro colocado y lo mandó fuera.

En cualquier caso, creo que este año puede ser el primero de muchos que no compre la edición anual. ¿La causa? Falta de tiempo. Ya el año pasado jugué menos de lo que pensaba, y este año pinta que todavía lo haré menos, con un buen puñado de juegos pendientes, con algunos interesantes pendientes de salir (Star Wars Fallen Order, Luigi's Mansion 3 y alguno más) y menos tiempo libre para esta afición. De momento, si me apetece jugar algún partido, tiraré de la entrega del año pasado o de esta demo. Y, total, seguro que acaban por sacar la versión free to play en algún momento, que para el uso que le doy me sirve más que de sobra.

No me enrollo más. Aquí tenéis el vídeo de este año:


He vuelto a programar en BASIC como en los 80

Las vacaciones son momentos en los que, afortunadamente, bajamos un poco el ritmo y tenemos tiempo —o al menos lo intentamos— hasta de aburrirnos. En esos ratos es bueno dejar volar la imaginación.

En uno de esos, recordaba que mi Miguel, amigo y compañero en Compiler Software, se había currado un juego en apenas un par de días para presentarlo al Concurso de BASIC 2020 de Bytemaniacos. Un juego sencillo y entretenido para una plataforma obsoleta, pero más viva que nunca gracias a la comunidad, como es el Sinclair ZX Spectrum.

En los años 80, en España había cuatro marcas/modelos de microordenadores de 8 bit que se repartían el mercado (no a partes iguales). A saber: Spectrum, Amstrad, MSX y Commodore 64. Como es bien sabido, yo en aquella época tuve el primero y puede jugar al segundo y tercero en casa de algunos amigos. Curiosamente, hasta la universidad no conocí a nadie que tuviera un Commodore 64.

Años más tarde, a primeros de este siglo, y en plena vorágine coleccionista, terminé por hacerme con los cuatro. Pero, si cierto es que los varios Spectrum que poseo tampoco los he usado demasiado, el resto apenas se han asomado por mi monitor CRT un puñado de veces. No sé, la verdad, cuando era pequeño las compañías sacaban versiones de sus juegos para casi todas las plataformas, y aquella curiosidad que tenía por saber cómo eran, ahora que tengo todas las facilidades se había desvanecido. Hasta ahora.

El objetivo era claro y sencillo: hacer un port del juego de Miguel para Amstrad CPC. Aprovechando que el juego está hecho en BASIC, y que el BASIC de los microordenadores de la época, aunque no es estándar, sí que se asemeja bastante de uno a otro, la idea es trasladar el programa "línea a línea", adaptando sólo lo imprescindible. Nada de añadir mejoras, optimizar el código o cambiar la manera de hacer las cosas.

Basic para niños. Con estos libros, regalo de mis padres, aprendí a programar
Basic para niños. Con estos libros, regalo de mis padres, aprendí a programar

¿Por qué el Amstrad CPC y no el MSX o el Commodore? La verdad es que me hubiera dado igual uno que otro, pero lo que me hizo decantarme por la máquina de Alan Sugar fue el emulador Retro Virtual Machine. Es un emulador que llevo usando un tiempo y cuya interfaz y funcionamiento me gustan bastante. Además comprobé que me ofrecía una posibilidad que iba a necesitar tarde o temprano, que no es otra que poder pasar ficheros de mi ordenador al Amstrad virtual, y viceversa.

Como comentaba, en su época solo tuve un Spectrum. Aunque un par de años después quise comprarme —mejor dicho, que me comprasen— un CPC 6128, finalmente fue un PC Compatible el que llegó a casa; en su momento no me hizo mucha gracia pero fue una decisión acertada. Pero sí que tengo el manual de instrucciones, y con eso es suficiente, ya que nos explica tanto las características de la máquina como la sintaxis de su dialecto de BASIC.

Cuando se programa para ordenadores antiguos, usando emuladores, lo normal es usar un editor de texto en tu ordenador y luego cargar el listado en el emulador de alguna forma más o menos automática. Para Spectrum contamos con la utilidad BAS2TAP, que convierte un listado BASIC en un fichero de cinta que se puede cargar en el emulador. Para Amstrad no encontré nada parecido. Pero, aunque lo hubiese encontrado, no tengo claro que lo hubiera usado; al no conocer la máquina, se necesita teclear en ella, con el manual a mano, y ver cómo se comporta ante las instrucciones que le das; es la manera más rápida de ir aprendiendo sobre la marcha.

Manual de usuario del Amstrad CPC 464
Manual de usuario del Amstrad CPC 464

La clave para sacar adelante un "proyecto" de este tipo es, lo primero, ponerse una meta corta y asequible. Dedicar todo, o gran parte del tiempo libre, a la consecución de ese proyecto. Y, por supuesto, robar alguna que otra hora de sueño. Pero no es lo único. En este caso, ayudó bastante el ir viendo progresos de forma rápida. También el ir compartiendo los avances con los compañeros de Compiler en nuestro grupo privado de Telegram, y que ellos te vayan animando y haciendo sugerencias y correcciones.

Me costó un par de semanas (a ratos) tener una primera versión completa. Durante ese tiempo aprendí algunas de las diferencias entre el Spectrum y el Amstrad, y tuve que darle vueltas a la cabeza para implementar alguna cosa de otra forma diferente. Aunque por mi trabajo me dedico a programar bastantes horas al día, para programar en BASIC tengo que "desaprender" muchos de los conceptos que he ido adquiriendo a lo largo de estos más de treinta años desde que escribí mi primera línea de código. Y no sólo eso sino que, recordemos, el objetivo es traducir el listado de la forma más directa posible, sin cambiar algoritmos ni optimizarlos.

Ya casi lo tenía, pero quedaba un último bug; el personaje hacía cosas raras al acercarse a los bordes superior o inferior del mapeado. Hablándolo con Miguel, me hizo ver dónde estaba el problema. En realidad su código y el mío funcionaban igual, pero por cómo yo había tenido que adaptar la parte donde se guardan los datos del mapeado, en su caso no afectaba y en el mío sí. Así que una vez arreglado todo, y ajustada la parte gráfica, llegaba el punto casi más arduo de lo que viene siendo hacer un juego: probar todo bien y pulir los detallitos.

Si tenéis curiosidad, en el repositorio donde está publicado el código fuente del proyecto, he añadido un documento técnico explicando los detalles más relevantes.

Y la decepción fue mayúscula al ir a probar el juego en un Amstrad CPC 464 (emulado). Y es que el menú no se pintaba bien, devolvía un error de sintaxis, al corregirlo el mapeado se pintaba también mal, el personaje se comportaba erráticamente... un desastre. Ni en las peores previsiones hubiera imaginado que algo así podría pasar.

Presa de la desesperación, lo comenté en el grupo de Telegram de desarrolladores retro donde, por suerte, me contestó Fran Gallego, toda una eminencia en el Amstrad, y comentándole cuáles eran los síntomas, y echando un ojo al código, supo orientarme sobre qué pasaba.

Algo me olía cuando, revisando con calma, me di cuenta de que en la pantalla del 464 indica que la versión de BASIC es la 1.0, mientras que el 6128 lleva la versión 1.1. Y es que, según me contó Fran, la versión 1.0 tiene un bug a la hora de imprimir caracteres en pantalla bajo según qué condiciones (no voy a entrar en detalles por no aburrir al personal). Yo creo que jamás en la vida habría imaginado que algo así podría ocurrir. Supongo que, revisando todo una y mil veces, y más por cabezonería que otra cosa, lo habría acabado sacando; no que hay un bug, sino que habría tenido que hacer los ajustes necesarios para que todo funcionase. Pero seguro que me habría costado días.

Afortunadamente, lo pude corregir en el mismo día y, tras algún percance más generando las versiones de disco y cinta, por fin pude publicar el juego en la página de Compiler y su código fuente en GitHub. Seguro que os podéis imaginar la satisfacción que da el llevar un proyecto a término, por pequeño y poco ambicioso que sea. Y también la sensación de escribir un programa que, al ejecutarlo, hace que unos muñequitos cobren vida en la pantalla. Esa sensación que experimenté hace más de treinta años por primera vez, en mi querido ZX Spectrum, y que me orientó a ser lo que soy profesionalmente hoy en día.

Dead End_ (Amstrad CPC)

Confío que éste no sea el único proyecto que saque adelante de todos los que imaginé este verano.

PS: Al final, entre unas cosas y otras, me ha llevado casi una semana redactar esta entrada. Para que veáis el ritmo que llevo.


Lecturas: Reina Roja

Un año después, comienza una nueva "maratón de lecturas veraniegas". Debido a mi rutina, el verano es el único momento en el que saco tiempo para leer. Algo que ha cambiado mucho desde que comencé este blog, cuando iba en transporte público al trabajo y devoraba libro tras libro.

El primero al que le he hincado el diente ha sido a "Reina Roja", de Juan Gómez-Jurado. Un libro que tengo desde el mismo día de su lanzamiento, el pasado 8 de noviembre, y que tenía ganas de leer. Y éste es, en resumen, el resultado:

No es más que el resultado de combinar mi ritmo rápido de lectura, tener poco tiempo durante el año para hacerlo y dar con un relato que puede que no sea el culmen de la literatura universal, pero que propone una trama y, sobre todo, una forma de contarla que te engancha y te impide hacer prácticamente otra cosa que no sea seguir devorando renglones hasta llegar al final.

Tampoco esperemos encontrar un giro espectacular en los acontecimientos, de esos que te dejan con el culo torcido porque, en líneas generales, una vez que se nos presenta el hilo conductor, más o menos podemos intuir cómo se va a desarrollar el asunto. Pero eso no quiere decir que no haya sorpresas, que las hay (al menos para mí). Seguramente seríamos capaces de resumir la historia en un par de párrafos. Pero lo interesante aquí es el viaje, el cómo se desarrollan los acontecimientos, los pequeños detalles, cómo vamos profundizando en la personalidad de los personajes, conociéndolos y, puede ser, empatizando con ellos.

Reina Roja
Reina Roja

Además, en mi caso, se añaden un par de puntos que otros lectores no encontrarán. Primero, el hecho de que la historia tenga Madrid como escenario añade un plus de cercanía, al conocer personalmente la mayoría de los lugares en los que transcurre la trama, y dejarme con ganas de conocer aquellos que no.

Por otro lado, el seguir al autor en Twitter, haber escuchado algunos de los podcasts en los que interviene, como Todopoderosos, y conocer un poco cómo piensa, su odio a los franceses, qué opina sobre ciertos temas, qué gustos tiene, su odio a los franceses, ayuda a que, cuando nos encontramos ciertos chascarrillos salpicando el texto, no podamos evitar esbozar una sonrisa de complicidad.

En resumen: el libro está bien, pero no es un Premio Nobel, no nos volvamos locos. Desde luego que se lo recomiendo a cualquiera que le guste un buen thriller. Creo que no quedará defraudado.

El año pasado me quedó pendiente "La leyenda del ladrón" para terminar (hasta el próximo octubre) con la bibliografía del autor. Y es posible que me ponga con él, si en vez de la variedad que proclamaba hace doce meses opto por una intención completista. La respuesta la encontraréis en próximas entradas de este blog.


Juegos: Red Dead Redemption II (PlayStation 4)

Red Dead Redemption II es todo un acontecimiento. Un título que llega con la vitola de "juego del año", firmado por Rockstar (cuyos productos me suelen gustar), acompañado por un gran despliegue de marketing y al que, durante las primeras semanas, la gran mayoría de mis contactos de PlayStation Network estaba jugando. Yo mismo he caído en la tentación de comprarlo demasiado anticipadamente, aun sin planes de ponerme con él —todavía andaba liado con el Zelda Breath Of The Wild— en un futuro cercano. Así que, aunque no he pagado su precio de lanzamiento (me costó 49,50€ frente a su PVP de 70€) lo podría haber adquirido más barato si lo hubiera hecho justo al empezar a jugar, ya que creo que ha llegado a estar por unos 35€.

Red Dead Redemption II (PS4)

Bien es cierto que también lo he comprado relativamente "pronto", ya que el juego fue lanzado el 26 de octubre de 2018, así que la etiqueta de barato o caro es relativa. Por comparar con otros juegos de la propia Rockstar, en su momento pagué 64,90€ por GTA IV (más otros 20 euritos de la expansión) y 52,45€ por GTA V. Por Red Dead Redemption pagué tan solo 12 euros, al comprarlo de segunda mano y jugarlo en 2015, bastantes años después de su lanzamiento —en mayo de 2010.

Es un juego largo, muy largo. No lleva contador de tiempo, así que ignoro el número exacto de horas que le he dedicado. Si echamos un vistazo en la web Howlongtobeat, la duración reportada es de 46 horas. Yo, entre pitos y flautas, he estado unos seis meses con él. Obviamente, no jugando todo el rato, pero se trata una cantidad de tiempo considerable. Como de costumbre, he completado la historia principal y algunas misiones secundarias, sin pretensión de llegar al 100%.

Visualmente es un juego impecable, lo cual lo hace más inmersivo

La parte online prácticamente no la he catado más que un rato, así que no tengo una opinión fundada. Supongo que podrá llegar a ser divertida pero, en mi caso, ni me apetece ni estoy en condiciones de dedicarle tiempo para disfrutarla.

En cualquier caso, lo primero que me gustaría precisar es que no me ha parecido estar ante un "juego de mundo abierto", como se suele calificar, sino un "juego de mundo muy, muy grande". El mapeado es inmenso, encontraremos un buen puñado de actividades que hacer, aparte de las misiones principales de la historia, las secundarias y las "tareas de coleccionismo". Pero eso no significa que estemos ante un sandbox que establezca unas reglas y que nos permita avanzar como queramos. Y eso es así por dos motivos principales: el peso de la narrativa (la historia que nos quieren contar) y la atención enfermiza por los detalles.

No solo encontraremos praderas y montañas nevadas. Las incipientes ciudades también tienen su protagonismo

Yo venía de jugar a The Legend Of Zelda: Breath Of The Wild y las primeras horas se me hicieron muy cuesta arriba; tanto que estuve a punto de abandonar el juego para una mejor ocasión. Y es que encontraremos bastantes misiones en las que se nos va indicando, paso a paso, lo que tenemos que hacer. De todas formas, creo que ya lo he comentado en alguna ocasión: no se me ocurre la manera de dar peso a la historia sin encorsetar el desarrollo del juego. En este caso debe de haber tantos miles de horas de diálogos, de animaciones, de detalles, que me da pena pensar que ni yo ni la mayoría de los jugadores vamos a disfrutar de ese trabajo artístico.

El control del personaje se hace un poco tosco. Se supone que lo han hecho así a propósito, pero viendo que es muy parecido al de juegos anteriores, al igual que toda la parte relacionada con los tiroteos, me da más por pensar que es una limitación del motor del juego o que no han querido innovar en esa parcela y han centrado la mayoría del esfuerzo en todo lo relacionado con la parte artística que, sí, es una maldita maravilla, tanto en el apartado gráfico como en el sonoro.

No quiero pensar la cantidad de horas empleadas en recrear este enorme escenario

Un mundo tan vasto también puede llegar a ser un inconveniente cuando queremos ir "al grano". En este juego tenemos varias maneras de hacer "viajes rápidos" de un punto a otro del mapeado, pero de forma bastante restringida. Podemos coger un medio de transporte, tren o diligencia, que nos permitirá movernos entre las diferentes estaciones o postas. También hay una opción de "teletransporte" que se desbloquea a partir de cierto momento pero que sólo está disponible desde nuestro campamento (o al menos no he visto manera de usarla de otra forma).

La diligencia nos puede servir, además de objeto de robo, para movernos cómodamente entre las diferentes localizaciones

Por último, podemos marcar un punto en el mapa, cabalgar y activar la "cámara cinematográfica". Si hacemos eso, nuestro personaje completará el recorrido de forma automática. Pero cuidado, porque si por el camino nos emboscan bandidos, nos veremos inmersos en un tiroteo sin darnos cuenta. Entiendo que el objetivo de todo esto es que exploremos todo el escenario, donde encontraremos multitud de misiones secundarias y de coleccionismo. Pero creo que, en cualquier caso, debería ser algo opcional, y deberíamos tener la opción de desplazarnos rápidamente, al menos a partir de cierto momento. Sé que me repito con esto, pero en ese sentido creo que la solución implementada por Zelda: Breath Of The Wild es mucho más ágil. Y no me impidió perder horas y horas explorando Hyrule, caminando o a caballo.

Molaría disponer del globo como medio de transporte, pero es solo una de las misiones del juego

El nivel argumental de las misiones es bastante variable. No voy a desgranar los detalles para no fastidiar sorpresas a quien no lo haya jugado. No faltan las "típicas del oeste" que nos podemos imaginar, como asaltos a diligencias, bancos, trenes, etc. El guión es bastante fan service; no esperemos ningún giro imprevisible. Además, se ve lastrado por el hecho de ser una precuela y, por tanto, conocer de antemano cómo va a acabar la historia. Es fácil echar cuentas y ver qué personajes de éste aparecían en el juego anterior y cuáles no.

¿Os imagináis cómo saldremos de ésta? Sí, lo de la derecha es un barranco con un río abajo

Pero no me puedo resistir a citar una que me ha parecido sumanente estúpida. Es una en la que tenemos que volar el puente de la vía del tren. Para finalizar la misión, nos hacen subir a la vía, coger la vagoneta y sacarla del puente para que termine empujándola el tren. ¿Tiene sentido?

Este puente está pidiendo a gritos una ración de dinamita

En resumen, Red Dead Redemption II me parece una obra de arte, aunque con las sucesivas actualizaciones me ha dado la impresión de que la calidad gráfica se ha resentido a costa de una mayor fluidez (quizás pensando en la experiencia online). La banda sonora es exquisita y aporta su punto de épica cuando toca. No voy a decir que no lo he disfrutado, que lo he hecho y mucho (aunque con altibajos). Pero quizás el listón estaba demasiado alto y me queda cierto regusto a decepción.

Sí, es tan escatológico como parece. No podía faltar la típica misión de "borrachos por el mundo"

El juego implementa un montón de localizaciones, personajes secundarios, misiones, mecánicas y coleccionables que, para alguien motivado y con tiempo, puede ser la gloria. El problema es que tampoco es necesario profundizar demasiado para completar la historia y, salvo que seas un auténtico forofo del western, no hay nada que te empuje a hacerlo.

Aquí el monumento a los padres de la patria en plena construcción

Veremos —algún año de estos—qué tal otros grandes lanzamientos del año 2018 que tengo ya comprados y pendientes de jugar, como Spiderman, God Of War, o Assassin's Creed Odyssey.

PS: Ya en la recta final del juego, y dejándome llevar por la "fiebre Rockstar" y por las rebajas de PlayStation, aproveché para comprar (nuevamente) el GTA V en versión digital para PlayStation 4. He de decir que jugué un ratillo online, porque a los suscriptores de Amazon Prime les regalaban —si no entendí mal— un apartamento en el nuevo casino de la ciudad, y conducir y hacer el gamba por las calles de Liberty City sigue siendo tan divertido como siempre, y mucho más (todo sea dicho) que los caballos de este Red Dead Redemption II.


Adiós, amigo

Perdona mi mala memoria. No logro recordar cuál fue el momento exacto en que nos conocimos. Sí sé que fue en segundo curso, ya que en primero estabas en otro grupo. Supongo que coincidiría contigo o con algún otro compañero de tu grupo de primero en la misma zona del aula y, como se suele decir, el roce hace el cariño. Tampoco era difícil llevarse bien contigo: siempre una buena cara, todo amabilidad y con ganas de pasarlo bien, sin rehuir nunca el trabajo y el esfuerzo.

Lo que está claro es que esa primera relación de compañerismo fue a más y se convirtió, con el paso de los años, en una gran amistad. Recorrimos las carreteras de Boadilla y del suroeste de Madrid a bordo de nuestros primeros coches, unos flamantes Peugeot 106 y Seat Ibiza. Disfrutamos de buenos momentos comiendo torteles en la cafetería de la Facultad, haciendo deporte, cocinando paellas el día señalado y, por supuesto, saliendo de fiesta por Madrid. También conocí a tus padres, tu hermano Carlos, tu hermana María y tu perro Gris. Incluso años más tarde me invitasteis Mayte y tú a vuestra boda. De aquella época conservo un buen puñado de buenos recuerdos y un portátil Toshiba que me regalaste y que atesoraré siempre con ternura.

Cuando llegamos al último curso, nuestros caminos comenzaron a separarse. Llegó el momento de que cada uno se labrase su futuro laboral y probase suerte como becario; tú entraste en Red Eléctrica, mientras que yo lo hice en Telefónica. Ya no pasábamos tanto tiempo juntos, pero nos esforzamos por sacar adelante el curso y, especialmente, las prácticas en las que estábamos involucrados como compañeros de equipo.

A partir de ahí, reconozco mi culpa en no haber seguido cultivando nuestra amistad. En aquella época tenía alguna compañía que no me convenía, y eso ponía las cosas difíciles. Aunque no lo quiero poner como excusa; la responsabilidad era mía, si bien no me puedo arrepentir de un camino que me ha traído a donde estoy ahora. Solo espero que tales errores me sirvan para aprender y no volver a cometerlos. Más adelante no supe, o no quise, encontrar un hueco para vernos. Lo que no puedo evitar es sentirme triste por no haber podido presentarte ni a mi mujer, Patricia, ni a mi hijo Óscar. Creo que te habría gustado saber que, por fin, había encontrado a la persona adecuada y que, juntos, hemos formado una familia, como hicisteis Mayte y tú hace ya más de quince años.

David y Fede
David y Fede

Entre tantos recuerdos más o menos nebulosos, creo que no olvidaré la última vez que te vi en persona. Pura casualidad. El año pasado, en mayo, en el DES, donde estaba visitando el expositor de unos antiguos compañeros de otra empresa. Más allá de eso no tenía ningún motivo ni laboral ni personal para estar allí. Os vi a lo lejos a ti y a Carlos. Pensé por un momento si acercarme o no. Por una vez me dejé llevar. Me excusé con las personas con las que estaba y fui, casi corriendo, a vuestro encuentro. Apenas unos abrazos, un breve intercambio y la promesa incumplida de vernos más adelante, con más tiempo. Me hizo una ilusión enorme.

La vida es injusta, como lo es esa maldita enfermedad que quizás no tenga cura porque comparte la misma esencia que nos hace ser lo que somos, al igual que la velocidad de la luz marca un límite físico que no se puede superar por más que nos empeñemos.

Adiós, David, amigo. No quiero creer que ya no estás aquí. El mundo es ahora un lugar un poco más oscuro.

Que la tierra te sea leve.


Ver la tele con Raspberry Pi, Kodi y TvHeadend

Desde que jubilé mi viejo mediacenter y lo sustituí por una Raspberry Pi 3 Model B, tenía por ahí un sintonizador TDT en formato USB muerto de risa. La verdad es que la tele la veo poco, así que no le había dado mayor importancia.

Pero hace un par de semanas, mirando otras cosas, leí que al NAS Synology se le puede conectar uno de estos sintonizadores para ver o grabar programas de televisión. Lamentablemente, al ir a probarlo, y luego consultar la documentación, parece ser que el modelo concreto que yo poseo no es compatible. Lo detecta pero no es capaz de sintonizar los canales.

Avermedia Volar X)

Así que, ya que estaba, me pregunté si podría conectarlo a la Raspberry Pi y darle uso. Como de costumbre, hice una búsqueda en Google y me encontré con esta página donde se explica qué proceso seguir para darle uso. Se trata de un artículo de 2013, así que habrá que cruzar los dedos para ver si todo funciona correctamente.

Lo primero que hay que hacer es descargar el firmware. Por desgracia, y como suele ocurrir cuando accedemos a contenido con cierta antigüedad, el enlace ya no está disponible. Afortunadamente, basta con buscar el nombre del fichero "dvb-usb-af9015.fw" en Google para dar con él, en concreto en el repositorio de OpenELEC. Yo, por si acaso, me he hecho una copia que dejaré por aquí.

Una vez instalado, desconectamos y volvemos a conectar el sintonizador y comprobamos que, efectivamente, el sistema operativo ya lo reconoce.

El siguiente paso consiste en descargar y compilar el software que usaremos como servidor de streaming y grabadora de la señal de televisión. En este caso se trata de Tvheadend (que es el mismo que usaba en mi antiguo Zotac). En este caso me encontré más problemas. Para poder compilarlo necesitamos descargar algunas librerías, que iremos averiguando según avanza la compilación, y de las cuales no fui tomando nota. En cualquier caso, desde que se escribió el artículo la distribución XBian seguro que ha cambiado bastante, así que es normal que las instrucciones no encajen al pie de la letra. Además, el proceso de compilación en Raspberry Pi es bastante lento. Uniendo ambos factores, finalmente tomé la decisión —no sé por qué no lo hice así desde un primer momento— de instalarlo desde el gestor de paquetes, con el ya clásico "apt-get install xbian-package-tvheadend xbmc-pvr-tvheadend-hts".

Una vez instalado y arrancado, el software se maneja mediante una interfaz web en el puerto 9981. Sin embargo, al intentar acceder me pide usuario y contraseña. Tras buscar un rato en Internet cuáles son las credenciales por defecto que se asignan en la instalación, y no sacar nada en claro, se me ocurrió que quizás podría bastar con borrar el directorio "/home/xbian/.hts/tvheadend/accesscontrol". Poco ortodoxo pero ha funcionado. No obstante, tengo pendiente añadir un usuario y contraseña, para mayor seguridad.

Ya dentro de la interfaz web, basta con seleccionar la sintonizadora USB, escanear los canales (en mi caso no he conseguido que se sintonizen todos) y listo. Si activamos el plugin de Kodi, podemos acceder desde ahí a ver la televisión.

Por fin vuelvo a dar uso al sintonizador y, sobre todo, puedo acceder a los canales de televisión desde cualquier dispositivo que reproduzca streamings de vídeo y, además puedo grabar un canal mientras veo otro en la tele. Como digo, más por poder hacerlo que otra cosa, ya que no es la televisión uno de mis entretenimientos favoritos.


Series: Timeless

Había oído hablar de esta serie hace unos años debido a una polémica por supuesto plagio de la serie El Ministerio Del Tiempo. Serie que, por otra parte, nos encanta y de la que estamos deseando ver su cuarta temporada.

Dado que estaba en Netflix, decidimos darle una oportunidad, sobre todo por la curiosidad de saber cuándo habría de plagio. El primero episodio, ambientado en la tragedia del Hindenburg, es un espectáculo audiovisual muy digno. Si bien es cierto que, en cuanto a guión y elenco, no resiste la comparación con la serie española.

Timeless (imagen de Espinof)

Pero desde el momento en que dejas a un lado los prejuicios y la comparación entre ambas series, si te gustan los viajes en el tiempo, la acción, la ambientación histórica, y no eres muy exigente, es una serie bastante disfrutable. Es cierto que hay algunos aspectos en que se ve que Timeless se inspira en El Ministerio, pero el argumento de fondo y el planteamiento de cada capítulo difiere bastante. De hecho, yo la compararía más en cuanto a su desarrollo y planteamiento de capítulos con clásicos como El Equipo A. Sobre todo a partir de la segunda temporada, donde la trama da un giro casi de 180° y se instala en una dinámica que, a priori, habría permitido a los guionistas haberla alargado todas las temporadas que hubieran querido.

Y es que, a diferencia de lo que ocurre en El Ministerio, en Timeless las reglas del viaje temporal no se sostienen demasiado, ni los protagonistas se muestran demasiado preocupados por no alterar la historia. Te das cuenta desde el primer momento que no es así. Y eso hace que el argumento se vaya encaminando hacia un lío del que está claro que no se van a poder salir airoso.

La serie fue cancelada tras su segunda temporada pero, afortunadamente, la productora permitió la emisión de un último capítulo doble a modo de conclusión. Como estaba claro, el final no es del todo satisfactorio. Pero, bueno, al menos deja una explicación de lo ocurrido sin intentar justificar ni arreglar el terrorismo histórico cometido durante su desarrollo.