Portando de Spectrum a CPC, #1

A las buenas. Voy a empezar una pequeña serie de tutoriales orientados a convertir juegos para ZX Spectrum 48K hechos en z88dk con splib2 a juegos para CPC 464 hechos con z88dk con CPCRSLIB. Esto incluye la gran mayoría de los juegos de los Mojon Twins y todos los lanzamientos que otras personas han hecho hasta la fecha empleando la Churrera.

¿De qué estamos hablando?

Si estás leyendo esto es probable que tengas nociones de programación. Las necesitas, necesitas conocer C. Si le das a los 8 bits y conoces C sabrás que z88dk es un paquete de compilador, ensamblador y linker que genera código para máquinas con un Z80, entre ellas el ZX Spectrum y el Amstrad CPC.

Allá por 2003, Alvin Albrecht lanzó splib2, una biblioteca de funciones orientada a escribir juegos. Esta biblioteca funciona siguiendo una filosofía muy parecida al hardware basado en tiles de fondo y sprites hardware, un enfoque seguido en casi todas las consolas de tercera y cuarta generación y muchos micros de 8 bits como el C64 o el MSX. En estos sistemas, el chip gráfico mantiene un fondo compuesto por tiles de 8×8 pixels y, sobre él, dibuja cierta cantidad de sprites que puede mover sin afectar al fondo. La biblioteca splib2 simula ese comportamiento por software y emplea una forma de actualización que permite no tener que ir sincronizados con la pantalla para evitar parpadeos, lo que la hace idónea para programar juegos en C, donde el control preciso sobre la temporización no es fácil.

Hace años, Artaburu añadió funcionalidad a su biblioteca de funciones CPCRSLIB para poder funcionar de un modo muy similiar a splib, empleando un buffer de tiles sobre el que componer los sprites y una actualización de la pantalla que funciona de forma muy similar. Este hecho hace que portar juegos de splib2 a CPCRSLIB sea una tarea relativamente sencilla (aunque, como veremos, laboriosa).

¿Qué necesitamos?

He hecho dos paquetes con los tiestos que necesitamos. En el primer paquete, he comprimido mi copia de z88dk 1.10 que contiene splib2, CPCRSLIB y CPCWYZLIB, que no es más que el player de WYZ adaptado para funcionar de forma integrada con CPCRSLIB. Sólo hay que descomprimir este paquete en C:\ y tendremos todo listo para compilar.

En el segundo paquete he recopilado las herramientas de conversión y manipulación de datos que necesitaremos para convertir e importar los gráficos y otras porciones para poder usarlos con nuestro juego en su versión de CPC.

Podéis descargarlos dándole [aquí] y [aquí].

Primeros pasos

Lo primero que hay que hacer es tener listos los tiestos. Y cuando digo tiestos, me refiero a gráficos y música. Esto no es un port directo. Aunque vayamos a aprovechar el 90% del código fuente, los gráficos y la música tendremos que hacerlos desde 0 para CPC. Necesitaremos componer un tileset y un spriteset equivalentes a los del juego original en modo 0 o modo 1 (o modo 2, el que se sienta aventurero), necesitaremos dibujar los marcos, pantalla de título y final, y también necesitaremos echar mano del tracker de Augusto Ruiz para componer música. Es un crimen no aprovechar el chip AY del CPC para tener música durante el juego.

Una vez tengamos todos los tiestos, habrá que emplear las diferentes utilidades para convertirlos a un formato usable desde el programa, como ya explicaremos.

¿Y luego?

Luego toca limpiar el código original, si vamos a portar un Churrera, por ejemplo. En los juegos de la Churrera el código es modular y todo está lleno de secciones que se añaden o no dependiendo del contenido de config.h. Esto hace el código bastante ilegible, así que es buena idea (aunque no es indispensable) “preprocesar” el código eliminando todas las partes que no apliequen y quedándonos sólo con el que nos interesa. Por ejemplo, si en config.h  hay un #define DEACTIVATE_KEYS, por ejemplo, y en el código del juego nos encontramos un #ifndef DEACTIVATE_KEYS … #endif, podemos cargarnos ese trozo de código.

Ya está el código listo

Ahora es cuando hacemos la adaptación. Tenemos que identificar todos los manejes que se hagan dependiendo del hardware y cambiarlos. Por suerte, casi todo serán llamadas a splib2 o llamadas a funciones que toquen sonido con el beeper, con lo que sólo habrá que adaptarlo para que se emplée CPCRSLIB y CPCWYZLIB. Lo veremos paso a paso y explicaremos las diferentes cosas que vamos haciendo.

¿Ya hemos terminado?

No, lo último es montar la música y los efectos. Lo dejaremos para la parte final del tutorial.

Empecemos, entonces.

Antes tengo que prepararme algo de material. Lo suyo es que explique todo de forma empírica mientras voy realizando un port. Así será todo más interactivo y veremos las diferentes situaciones a las que nos tendremos que enfrentar.

En el próximo capítulo empezamos.

Dedicado a todos mis amigos Commodoreros

¡¡Chin-cha ra-biiii-ñaaaaaa!! Mua ja ja ja ja ja.

8 bits (estreno mundial)

Mi colega Alxinho, junto con algunos colegas que se suelen reunir en el foro http://retrobytes.creatuforo.com, y gracias a la productora Cervantes Films, han podido llevar a buen término un corto titulado “8 bits”, en el que nuestras maquinitas y juegos preferidos de los 80 juegan un papel muy importante.

La película, que está disponible para ser vista online a través del servicio “megavideo, también os la podéis descargar siguiendo este enlace: http://blip.tv/file/get/Layunta-8Bits123.mpg. Yo la vi poco después de su estreno (ya que tuve la suerte de estar conectado a esa hora) y me llevé una impresión muy grata. Menos en un par de escenas, el sonido está realmente bien, mucho mejor de lo que suele esperarse de una producción de estas características. Hay algunos planos realmente atractivos y en general el montaje tiene buen ritmo y la historia se sigue bastante bien. Y mención especial para Alxinho, que debería llevarse el Oscar Ajo al mejor actor de la retroescena.

Seguro que véis “caras” conocidas si os leéis el reparto:

Manuel Bueno (Manuelbueno) Aarón
Jordi Soteras (Jordi) Ken
Karina Cuelda Andrea
Carlos Herrero (Cht666cht) Tommy
Alejandro Layunta (Alxinho) Valentín

Desde aquí animamos a los chicos de Cervantes Films para que sigan haciéndonos pasar bien con sus películas. ¡Un saludo, colegas!

Versión (muy) preliminar de TR2 para PC

Hace tiempo que lo tengo, pero no me había acordado de ponerlo hasta ahora. Este paquetito de 5 Mb es relativamente fácil de encontrar por internet. Se trata de algún leak de un build de desarrollo, probablemente durante una etapa bastante temprana, de Tomb Raider 2 para PC.

Principalmente, vemos que los niveles están en el formato PHD, que seguramente será muy parecido a los niveles de Tomb Raider 1. En cuanto al motor, aún funciona sobre DirectX 5 (recordemos que TR2 funcionaba sobre DirectX 6), no tiene terminada la iluminación, no detecta aún colisiones con los objetos fijos que no forman parte del grid del nivel (por ejemplo, el marco de la entrada de la guarida de Bartoli), los niveles no están terminados, etcétera. Básicamente tenemos un motor que está a medio camino entre el de TR1 y el de TR2.

Parece que se trata de una prueba de engine para enseñar en algún sitio. Incluye tres niveles (con sus respectivos .DEM para mostrar a lara moverse sola en plan attract mode): VENICE1.PHD/DEM, que se corresponden con la fase “Bartoli’s Hideout” de TR2, si bien está sin terminar ni pulir, TITANIC1.PHD/DEM, que no fue incluida en el juego final pero que emplea las texturas y algunas habitaciones de “The Wreck of Maria Doria” y adláteres, y 3TIBET.TRD/DEM que incluye habitaciones de “Ice Palace”. Puedes comenzar cualquiera de los niveles simplemente cambiandoles el nombre y haciendo que se llamen VENICE1.PHD/DEM (guarda copia de seguridad antes, of course ;) ).

Pues eso, una curiosidad para los más frikis de la serie. Bájalo de aquí.

Mariano the dragon went to the room and found a spoon.

Pues sí, hoy mismo ha salido para CPC y ZX Spectrum un nuevo silver de CEZGS, Mariano the Dragon: Capers in Cityland, que se nos presenta como “FX Do It Yourself“. Tanto la versión de CPC como la de ZX Spectrum están concebidas como tutoriales sobre diseño de juegos usando dos lenguajes sobre dos plataformas diferentes.

Vete a descargarlo de CEZGS.

En este blog iré desgranando la versión de Speccy. Si soléis leer este blog, recordaréis los artículos que empecé a escribir sobre cómo montarse un juego de plataformas en BASIC compilado. La versión de ZX Spectrum de Mariano está construida usando las técnicas que había explicado y otras que me restaba por explicar. Preferí tener el juego en la calle antes de seguir explicando cosas, porque en conjunto todo se ve mucho mejor que a trozos discretos.

En el próximo artículo de programación empezaremos a ver cómo es la estructura básica del juego dividiéndolo en componentes discretos que iremos construyendo poco a poco. Los conceptos explicados serán aplicables a cualquier tipo de juego de puzzles hecho con cualquier lenguaje, así que quizá puedan serte interesantes aunque no quieras programar en BASIC y tener que aguantarte con movimientos de 8 en 8 píxels. Cómo construir las comprobaciones, cómo armar los triggers para las mismas, etcétera.

Muy pronto en tu blog :)

Paper TCYR #9

esmol.png

Ahora toca el número 9. Como quiero que mis lectores conserven su trabajo y su integridad, si le dáis aquí tenéis la versión de siempre con pixeles y si le dáis aquí tenéis una versión “work-safe” :)

Paper TCYR #8

esmol.png

Llegamos ya al número 8, mi preferido. Rima con bizcocho, con chocho, con tocho y con mocho, y además es un cero con el cinturón apretao para estar maquebo y petón. Y, además, contiene muchas cosas divertidas. Descargáoslo y decidme qué os parece, que es gratis :)

Paper TCYR #7

esmol.png

Una entrga más, tras el parón de semana santa (que a uno también le gusta comer torrijas - bueno, en realidad no me gustan las torrijas). No hay mucho que contar (porque he estao en mi país, Inopia Land, durante las vacaciones), pero algo es algo. Por cierto, se me acaban los pixel arts… Voy a tener que ponerme a hacer más… ¡OUCH!

Descárgalo de aquí.

LOKOsoft games

ls.gif

Inauguramos una nueva sección en el blog: LOKOsoft games (aquí), accesible desde la barra superior. En ella iré recopilando y ordenando todos mis viejos juegos a medida que vaya hablando de ellos en el blog. Ahora mismo podéis encontrar todos y cada uno de los juegos que han sido comentados aquí, junto con un par de pantallas y un enlace para la descarga, ordenados más o menos cronológicamente (por años seguro, pero entre ellos… ¡tendréis que confiar en mi memoria!).

Espero que os guste. La verdad es que es un subidón ver toooodos esos juegos ahí juntitos… ¡Y quedan un montón, sobre todo en PC! Huelga decir que la sección se irá actualizando a medida que vaya añadiendo juegos.

Pues eso, ¡a disfrutarla!

Paper TCYR #6

esmol.png

Yuju, yuju. Otro. Y este sin chicha. Bueno, sí, con chicha. Es que ha sido la RetroMadrid y tampoco hay otra cosa de la que hablar. Lo malo es que no fui. Gracias a Radastan y Manuel Sagra, que me han prestado involuntariamente sendas fotos para ilustrar este número. A vosotros os lo dedico, cracks :D

Dadle aquí.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.