Hemos tenido el gusto de poder hablar con uno de los programadores mas internacionales que tenemos. Pedro Bermejo, o Lechuck como es conocido en la escena internacional se está labrando, con cada nuevo título, una colección para el modesto VIC-20 donde los límites los pone solo él. No solo se atreve a convertir arcades clásicos sino que apuesta con otras conversiones de títulos mas tardíos y bastante mas potentes en donde los conocimientos de la máquina y saber hasta donde puede llegar son necesarios. Con un VIC-20 en una mano y muchas ganas de todo en la otra, os traemos a Pedro Bermejo en una pequeña entrevista que esperamos que os guste.
- Nombre: Pedro Bermejo (Lechuck)
- País: España
- Primer sistema: VIC-20
- Historia: Desarrollador de juegos
–¿Qué edad tienes, cuándo viste tu primera computadora y cuál fue la primera?
–Tengo 59 años (soy de enero del 67). El primer recuerdo que tengo de un Micro (como los llamaban entonces) es del Sinclair ZX81 (recuerdo ver bastantes anuncios de ese modelo en periódicos y revistas) y, sin tener muy claro lo que era, pensaba que algo con tantos botones debía ser muy interesante. Al cabo de un tiempo, a mi padre le regalaron un VIC-20, que acabó directamente en mis manos, y ahí empezó mi interés por este mundo. Recuerdo perfectamente la tarde en que empecé a trastear con él. Estuve un buen rato leyendo el manual de instrucciones, eran los tiempos en que leíamos antes de enchufar, y cuando sintonicé la televisión y vi el mensaje de "3.583 BYTES FREE", me pareció magia. Aquel VIC-20 todavía lo conservo y curiosamente, es el único ordenador que he conservado de todos los que he tenido. Con tiempo y algo de dinero, he podido completarlo con (casi) todo lo que me faltaba.
–¿Cómo nació el interés por esto de las computadoras, la programación...?
–Pues tan pronto como empecé a leer el manual del VIC-20. Me pareció impresionante eso de teclear y que se viera en una televisión. Y según leía y probaba, más me gustaba (cambiar de colores, sonidos, programar...). En esa época ya me gustaban las máquinas de Arcade, y, hasta ese momento, no podía entender cómo, unos cuantos componentes electrónicos en una placa, podían permitir jugar de esa forma. Al empezar a escribir las primeras líneas en BASIC, entendí que así es cómo hacían aquellos juegos y mi objetivo fue aprender a programar para hacerme mis propias versiones de los juegos, para poder jugar sin gastar dinero.
–¿Qué tiene el VIC que te tiene enganchado con la programación?
–Imagino que inicialmente me enganchó porque fue el ordenador que cayó en mis manos, pero ahora, visto en la distancia, creo que tiene justo lo que hace falta para poder hacer juegos razonablemente vistosos: colores y sonido. No es que no se puedan hacer juegos excelentes en, por ejemplo, un ZX81, pero para mi objetivo de replicar juegos de los 80, el poder incluir colores y sonido, aunque con capacidades ‘limitadas’ me permite acercarme algo más a lo que intento imitar.
Y, algo más específico, que me atrae especialmente del VIC-20, es su flexibilidad para definir, dentro de los 5 kB de la memoria interna, qué parte se utilizará como memoria de pantalla, y donde buscará la definición de caracteres. No sé qué mecanismos proporcionan en este sentido otras plataformas pero en el VIC-20 es muy sencillo definir (y modificar accediendo a un solo registro del chip de video) dónde comienza la memoria de pantalla, así como definir, con ese mismo registro, dónde comienza la definición de caracteres. Esto permite, de forma muy rápida, alternar entre dos juegos (casi) completos de caracteres y dos áreas de memoria de pantalla, permitiendo generar una pantalla mientras hay otra visible que permanece inalterada y, una vez se ha terminado de generar, simplemente cambiar una por otra con una sola secuencia LDA nn / STA mmmm. Esto me ha resultado muy útil, por ejemplo, al desarrollar Pang, para permitir un movimiento (casi) sin parpadeos.
Esta misma flexibilidad permite, también, utilizar, para la memoria de pantalla, un área superior a las 2 páginas que usa de forma estándar, ofreciendo resoluciones superiores a los 22x23 caracteres tan característicos del VIC-20. Por ejemplo, en ‘Prince of Persia’ necesitaba disponer de 27 columnas (para poder utilizar 9 bloques de 3 caracteres de ancho cada uno) y 29 filas (9 bloques de 3 caracteres más una fila de techo y otra en la parte inferior con los marcadores de vida), por lo que para la memoria de pantalla utilizo algo más de 3 páginas, en lugar de las dos que usa el VIC por defecto.
–¿Programas o has programado para otros sistemas?
–A nivel profesional sí (lo que empezó como una afición se acabó convirtiendo en mi profesión), pero a nivel de hobby no. El VIC-20 tiene lo suficiente para ocupar mi tiempo libre. Cuando estuve familiarizado con el ensamblador del 6502, estuve leyendo algo sobre el del Z80, pero me pareció demasiado diferente y no me animé a intentar nada. La verdad es que admiro la capacidad de muchos aficionados a la retro-informática de manejarse con multitud de sistemas.
–¿Cómo aprendiste a programar?
–Las primeras nociones fueron con el BASIC del VIC-20, aunque no llamaría a aquello programar. De hecho, mis intentos por hacer algo mínimamente aparente fueron fallidos (intenté programar algo tipo Space Invaders pero me di cuenta que BASIC no era suficientemente rápido para lo que quería, y, aunque intenté aprender ensamblador con los cursos que venían en las revistas, nunca conseguí mucho más que las rutinas de borrado de pantalla que solían usar como ejemplo). En aquella época lo del acumulador, los registros índice, los modos de direccionamiento, etc. me sonaban a chino. Los primeros programas mínimamente serios que hice fueron ya en C, en mi primer trabajo.
Con el tiempo (y la experiencia) sí conseguí aprender ensamblador y por fin pude lograr lo que había intentado cuando me regalaron el VIC-20. Programar juegos que recordaran a los que veía en aquellos años en los salones de máquinas recreativas.
–¿Qué herramientas usas cuando programas?
–Los juegos que he programado para el VIC-20 los he hecho siempre con el CBM prg Studio. Me parece un entorno bastante cómodo de usar, y su autor sigue manteniéndolo y sacando nuevas versiones de vez en cuando. Sé que hay otras herramientas, pero una vez que me acostumbré a éste, no he visto la necesidad de cambiar. Aparte del entorno de programación, para la definición de caracteres y pantallas de presentación utilizo Excel. Resulta sencillo definir celdas con la misma relación de tamaño que los pixels del VIC-20 (en el VIC, los pixels no son cuadrados, son alrededor de un 40% más anchos que altos). Después, superponiendo una imagen con algo de transparencia, es fácil ir coloreando celdas. Y unas macros en VBasic me permiten convertir la imagen en la secuencia de BYTES que luego copio directamente en los ficheros en ensamblador. Así hice las pantallas de ‘Prince of Persia’ y la definición de todas las secuencias de movimientos. También he usado lo mismo para Pang, para la definición de los caracteres y para las diferentes pantallas intermedias.
–Es interesante la variedad de géneros que tocas. Son ports de algunos clásicos conocidos y otros no tanto. ¿Tienes en mente hacer algo 100% tuyo?
–Sí, excepto las 4 en raya, que no se podría llamar port, el resto son adaptaciones, tan fieles como he podido, de juegos ya existentes. Me divierte imitar en el VIC lo que otros han hecho para otros ordenadores y, sobre todo, conseguir lo que me habría gustado tener en mi VIC hace 45 años. La verdad es que no me he planteado hacer un juego propio. Me falta imaginación (de hecho, admiro la capacidad de autores de videojuegos que tienen una idea y son capaces de convertirla en un juego adictivo). Imagino que ahora esto ya no es tan común (sospecho que hacer un juego en la actualidad requiere de un equipo similar al que se necesita para rodar una película), pero en los 80, no eran raros los juegos ideados y programados por una sola persona. Me parece admirable, pero me temo que yo me tengo que contentar con imitar las ideas de otros.
–¿Es el VIC 20 una máquina denostada? ¿Cuáles son sus valores principales como usuario y programador?
–Si, es un ordenador que siempre fue infravalorado, probablemente por la poca capacidad de memoria de la versión estándar. Pero, ampliando la memoria (y, por suerte, eso hoy en día no es ningún problema), tiene capacidades similares a, por ejemplo, un Spectrum (con menor resolución, por supuesto). Imagino que al VIC-20 no le ayudó que salieran tantos juegos para la versión sin ampliación (supongo que en esa época las casas de software intentaban maximizar el mercado potencial, apuntando mucho a la versión sin ampliación y desarrollando con los 3.5 kB de la versión estándar, los juegos no eran muy espectaculares. Así que, de aquellos juegos, mucha gente debió quedarse con la impresión de que el ordenador no daba para más. Eso, y el hecho de que Commodore sacara poco más de un año después del lanzamiento del VIC-20, el C-64, terminó de condenarlo a ser visto como un ordenador poco capaz. Pero como he comentado, para mi tiene más que suficiente para disfrutar, programando, y jugando.
–Explícanos un poco el proceso de creación de un juego.
–Bueno, lo más importante es seleccionar bien el juego. Intento elegir alguno que conozca bien, lo que me permite tener más o menos claro donde estará la complejidad del desarrollo y si encajará bien en el VIC. Intento evitar juegos muy coloridos para no tener que pelearme con el ‘color clash’ (es curioso porque es un término que se asocia mucho con el Spectrum, pero el VIC-20 tiene la misma limitación). Después, hago un esquema de la pantalla principal de juego y defino algunos de los caracteres para decidir qué resolución necesitaré y a partir de ahí empiezo el desarrollo. El esquema del código es bastante estándar en todos los juegos. En general siempre uso un bucle principal que controla los movimientos en función de unos contadores de retardo, las rutinas que se encargan de hacer esos movimientos y de detectar colisiones y una rutina de interrupción, que decrementa los contadores, lee los controles (teclado/joystick) y reproduce los sonidos. Y luego, en función del juego, las rutinas específicas para cambiar pantallas, calcular puntuaciones, mostrar textos, etc.
–¿Qué juego te ha costado más y porqué?–A nivel de desarrollo, el más complejo ha sido Pang. Al comenzar pensaba que no tendría mucha dificultad. Mi idea inicial era hacer una versión de Cannonball (no lo conocía hasta que alguien habló de él en el foro de Retrowiki). Viendo el juego, pensaba que definir el movimiento de los globos sería sencillo (a priori, me parecía que sólo harían falta 4 rutinas de movimiento -1 por dirección, 1 pixel en cada movimiento- y, para acelerarlos según caían, pensaba ir reduciendo la duración de los contadores de retardo). Pero cuando empecé a probar me di cuenta de que el rendimiento no era suficiente (incluso sin ningún retardo, los globos se movían demasiado despacio si había que dibujar muchos). Así que tuve que hacer rutinas específicas para mover directamente 1, 2, 3 y 4 pixels en vertical (en horizontal siempre se mueven un pixel). Eso implicó hacer 16 rutinas diferentes (4 por cada una de las 4 direcciones de movimiento) y dos adicionales, solo en horizontal, para cuando el globo llegaba a la parte más alta).
Además, cuando tenía Cannonball más o menos terminado, decidí que me quedaba suficiente RAM para añadir barreras y escaleras, y terminar con algo más parecido a Pang. Y, aunque añadir las barreras fue sencillo, el cálculo de rebotes se complicó mucho (calcular el rebote en paredes y suelo era muy fácil, pero en barreras hay que controlar qué parte de la bola (con 4 tamaños de bola diferentes) toca qué parte de la barrera, para decidir en qué dirección saldrá rebotada. Eso implicó bastante desarrollo adicional. Y, por último, el tema de la música también me costó bastante. Me resulta muy complicado imitar las melodías de los juegos, así que, para el Pang, decidí usar la música de la versión del C-64. Me descargué el fichero .sid correspondiente de HVSC pensando que podría desensamblarlo y extraer los valores de las notas, pero después de varios intentos no conseguí nada. Por suerte, vi que el programa Sid2midi, además de generar la versión midi, permitía generar un fichero de texto con la secuencia de notas de cada voz. Así que seleccioné, de las 3 voces del SID, las 2 que quedaban mejor en cada melodía (necesitaba reservar una voz del VIC para efectos de sonido) y, con eso, conseguí una música que quedaba razonablemente bien. En total, el desarrollo de Pang me ha llevado algo más de un año (más de lo que tardé en terminar PoP).
–¿Tenías claro que podías hacer tu propia versión del PoP? Parece algo inalcanzable, ya no solo por la memoria sino por la resolución o la carencia de sprites del VIC-20.
–La verdad es que no me había planteado intentar desarrollar PoP hasta que vi la versión para Spectrum de Nicodim. Me pareció muy ingenioso como, casi sin colores, representaba las diferentes pantallas (y como, con una textura de blanco punteado, distinguía las losas del suelo y las losas de presión). Pensé que algo similar se podría hacer en el VIC, y dibujé en Excel la primera pantalla como el muñeco parado, para ver si conseguía una representación del personaje principal, con un tamaño adecuado en relación a la altura de las columnas, que resultara reconocible. Usando 27 columnas x 29 filas para la pantalla y 5x2 caracteres para la posición de parado me pareció que quedaba bien, así que calculé cuánta memoria necesitaría para hacer algo ‘parecido’ al juego original. Mi objetivo fue dejar 24 kB para la definición de todos los movimientos, lo que me permitiría definir en torno a 100 posiciones, con una media de 240 bytes por posición, más o menos la mitad de las posiciones del juego original, por lo que el movimiento es menos suave. El resto de la memoria quedaba para la definición de las pantallas de cada nivel (tenía claro que los niveles habría que cargarlos desde disco) y para la programación del juego.
–¿Estás trabajando ya en algo nuevo?
–Todavía no he empezado nada, aunque sí tengo ya pensadas algunas opciones para el próximo juego. De todas formas, en general, no suelo comentar en qué juego estoy trabajando porque nunca sé hasta dónde voy a llegar, y prefiero no crear falsas expectativas y que luego el resultado (si es que consigo algún resultado) sea decepcionante.
Conclusión
La colección de Lechuck ha ido creciendo año tras año y la complejidad de sus juegos son exponenciales a su aprendizaje, disfrutando y añadiendo complejidad en cada uno de sus lanzamientos. Si tenéis un VIC-20 o el VICE, no dejéis de probar sus juegos. Seguro que no os decepcionan y quizás os entre el gusanillo de darle una oportunidad al predecesor del c-64. Encended el VIC-20 y jugad a estas pequeñas maravillas patrias que Pedro Bermejo 'Lechuck' nos regala para que disfrutemos un buen rato mientras esperamos ya con ganas y para un futuro cercano ver con que nos sorprende esta vez.






0 Comentarios