Último episodio publicado: 11 de marzo de 2024


18 de mayo de 2020

«Los trucos de programación de la demoescena siguen siendo útiles en la era de los GHz y GB»: Entrevista a Elmar Krieger

Algunos de sus juegos son los mejores del ordenador de 8 bit de Amstrad




Hablamos con Elmar Krieger, uno de los programadores para Amstrad CPC más reconocidos de su tiempo, ya sea con su nombre real o como Elmsoft / EGS, cuyo sobrenombre sirvió para disfrutarlo también en la prolífica demoescena de principios de los 90. Juegos como los tardíos Zap't Balls, Prehistorik 2 o el impresionante Super Cauldron (estos dos de Titus), son sus títulos comerciales; repletos de técnicas de programación increíbles que aprovechaban su experiencia en la creación de las demos.
[ENGLISH VERSION FOLLOWS]

Fuente: CPCWiki

Antes de nada, nos gustaría darle las gracias por gastar con nosotros un poco de su escaso tiempo. Es un honor tener con nosotros a uno de los mejores programadores para el Amstrad CPC. Empecemos por el principio: ¿cuándo empezó su interés por la tecnología?

Muchas gracias por esas amables palabras, pero el verdadero honor es que aún haya entusiastas que emplean su precioso tiempo en mantener vivos los 64KB de memoria y por supuesto escribiendo y leyendo esta entrevista. Mi interés comenzó siendo niño con 10 años en 1984, cuando los ordenadores personales se volvieron asequibles y me di cuenta que había mejores cosas que el cutre cartucho de programación en código máquina, el número 9 de la Philips Videopac G7000.

Cartucho número 9 de Videopac

En cierto momento decides empezar a programar con tu Schneider CPC. ¿Qué te lleva a pasar de simplemente disfrutar de los juegos a querer empezar a programar para la máquina?

Uno de los principales motivos era el precio de los videojuegos, que costaban generalmente de dos a tres veces más que el precio de un videojuego actual (considerando el coste de la vida de entonces). Si querías jugar a algo nuevo más te valía empezar a programar, siendo la manera más fácil el teclear los listados de código de las revistas de informática y luego limpiando el código de tus errores. Ese es un gran problema de los niños de hoy día; con tanta oferta de juegos gratuitos, no tienen apenas incentivos para empezar a programar por si mismos.


[Nota de RetroManiac: Un videojuego como The Way of the Tiger en formato disco costaba 60 DM en 1986 en Alemania, unos 30 euros al cambio. Los precios en Austria debían rondar esa horquilla de los 40 a 60 DM típicos de Alemania.]

The Way of the Tiger marcado en 59.00 DM

¿Es la programación un arte que depende de la inspiración una vez tienes unas bases sólidas o puedes realmente entrenar para mejorar tu habilidad sin límites?

Es, desde luego, una combinación de ambos factores. Está la parte creativa de tener una idea y luego está la parte de desarrollo propiamente dicha y el trabajo de depuración para hacerla realidad.

Fuente: CPCWiki

¿Cuan complicado tenías el acceso a recursos sobre programación? Internet no era tan popular por entonces *risas*. ¿Había buenas publicaciones en Austria o dependías principalmente de las alemanas? ¿Cuáles eran tus favoritas?

Las revistas de informática eran muy populares en Austria. Simplemente importábamos las alemanas y había siempre más de las que podías permitirte. Así que era parte de la diversión el colarse en el kiosko y leer todo lo que pudieras antes de que te recordaran que «esto no es una biblioteca». Mi favorita era Compute Mit, publicada por Tronic, que usaba papel barato y estaba repleta de listados para teclear.


[Nota de Retromaniac: Compute Mit fue una revista cuyo título iba acompañado al principio de la coletilla «Commodore» y posteriormente «Commodore & Schneider», dedicada a la programación con ambas plataformas.]

Frogger, por Elmar Krieger

¿Aprendiste alguna vez trucos de programación o rutinas de esas publicaciones que fueran tan útiles que empezaste a usarlas a partir de entonces sin apenas cambios de importancia?

Por supuesto. Una vez jugué a Frogger en un recreativo durante las vacaciones de verano de 1986 en Croacia y, para poder seguir jugando en casa, hice una cutre versión para el CPC en BASIC. Esta versión solo funcionaba gracias a extensiones en código máquina que tomé de un listado de la Compute Mit para hacer scroll con coches y árboles.

Conversión a CPC de Space Taxi

Tras este Frogger hiciste Space Taxi, dónde ya se puede ver un poco de evolución en tu manera de hacer las cosas. El juego fue un gran éxito de Commodore 64 en Alemania así que, como en el caso de Frogger, fue también una manera de traer a nuestra plataforma algo que ya existía, pero aquí ya usas BASIC compilado, con Laser Basic si no estoy equivocado. ¿Qué te llevo a probar cosas diferentes del Locomotive BASIC? ¿Logró el uso de un compilador marcar la diferencia?

Un compañero de escuela jugaba a Space Taxi todo el día en su C64 y eso me daba envidia. El motivo por el que pasé a usar el Laser BASIC de Ocean fue simplemente por la gran cantidad de comandos que añadía para dibujar sprites y otras cosas necesarias para hacer juegos y que no estaban en el BASIC de Locomotive. Por cierto, no pude permitirme el compilador opcional, así que Space Taxi seguía siendo un juego normal en BASIC.

Review en la revista Amstrad Action


Curiosamente, la revista Amstrad Action cubrió el juego... ¡en 1994! Parece ser que eras toda una estrella que había logrado el éxito y, de repente, todo lo relacionado contigo resultaba interesante para las masas. Incluso obtuvo un 84%. ¿Qué sentiste al ver el juego en una revista británica tantos años después de haberlo desarrollado? ¿Fue distribuido el juego en su día?

Oh, Dios mío, no tenía ni idea. Debían estar realmente desesperados. Yo no distribuí queriendo ese juego tan feo, solo de manera accidental.

Curiosamente, tras Space Taxi, hay años en los que produces poco o nada, según las webs sobre el CPC. Vuelves convertido en demoescener en 1989 con algunas demos como Magic Demo 2 y Space Demo 1. ¿Qué nos hemos perdido? Porque la diferencia en la calidad de las produciones es muy obvia, así que no estuviste quieto. Incluso hay una pista en Magic Demo 2 de que al menos había un trabajo anterior a este.

Creo que fue debido a dos razones principalmente. Primero, el salto de BASIC a lenguaje ensamblador (requerido para las demos) llevó cierto tiempo y esfuerzo; y segundo, el CPC se hizo más popular en Austria. Ahora podías encontrar de repente otros chicos de la escuela que también tenían un CPC, así que despegó el intercambio de discos con cosas molonas. Probablemente estuve durante ese tiempo simplemente sentado todo el día jugando como loco. Por suerte, la demoescena vino en mi rescate.

Space Demo 1, por Elmar Krieger


«Probablemente estuve durante ese tiempo simplemente sentado todo el día jugando como loco. Por suerte, la demoescena vino en mi rescate»

¿Cómo llego tu interés por la demoescena y el deseo de hacer demos en lugar de juegos? La distribución de los trabajos era muy diferente entonces. ¿Cómo distribuiste tus demos?

Las demos viajaban en los mismos discos que el resto de cosas molonas, pero se sentían más sexis que los juegos. Eran [las demos] la forma ideal de intentar algo nuevo rápidamente, conocer nuevos amigos en las demoparties, hablar durante toda la noche sobre nuevos trucos de programación y privarte del sueño así como de otras cosas prescindibles.

Magic Demo 2 (sí, ese mago nos suena)

La demoescena es, posiblemente, dónde aparecen las mejores ideas y trucos. ¿Cuán importante fue para tu carrera, tanto la pasada como la actual, ser parte de un movimiento donde lo que importa es la creatividad y exprimir al máximo el hardware?

Fue absolutamente esencial. No solo los trucos de programación de la demoescena, que demostraron ser útiles también para juegos (los trucos de video inventados por el grupo francés Logon System nunca serán olvidados), sino también la manera de pensar para hacer más eficientes recursos escasos. Esto sigue siendo útil en la era de los GHz y GB; lo necesito a diario.

Amiga Demo 4, por Elmar Krieger

Llegamos a 1990 y el CPC está empezando a desaparecer progresivamente; pero ahí estaba Elmar, con algunas demos asombrosas como Twinblast o Amiga Demo 4. ¿Qué herramientas usabas en esta época? ¿Qué puedes contarnos sobre este periodo creativo?

Me había acostumbrado por fin al MAXAM Asembler y podía manejar proyectos grandes, así que quise combinar tecnología de demos con videojuegos y empecé el juego Cyborgs - Blast through history.

Cyborgs, inacabado pero disponible en demo

Para aquellos lectores a los que no les suena este tema; Cyborgs era un proyecto de juego con scroll suave y mecánicas jugables interesantes, dónde controlábamos una nave espacial y teníamos que construir su camino a través de niveles, en el estilo de otros juegos como Builderland. ¿Cómo se te ocurrió este concepto?

Tras mucho programar, también quería intentar diseño de juegos y combinar acción con puzles. Tuve ayuda de un amigo alemán, quien redibujó mis feos gráficos iniciales, pero ya que el CPC estaba empezando a desaparecer, no pudimos encontrar nadie que quisiera publicarlo. También fue un error hacer el juego tan difícil que raramente pudieras pasar del nivel 3 para enfrentarte al jefe final (porque solo había tres niveles en esta demo del juego).

El trozo de Chain Demo hecho por Elmar

Tras ver que no había mucho mercado para juegos, produces una nueva demo, Chain Demo, donde una vez más podemos encontrar algunos trucos de programación interesantes, que serán muy útiles un año más tarde *guiño*. ¿Cómo llegaste a este concepto y que querías mostrar con esta demo?

Tras la demo de Logon Systems The Demo, los frikis del CPC de habla alemana queríamos venganza y planeamos Chain Demo. Yo contribuí con una parte, pero por desgracia nunca se llegó a montar una demo completa, así que diferentes partes empezaron a circular individualmente.

Para esta demo hice un programa de dibujo para los fondos, el cual genera código máquina que cambia el color del fondo varias veces por línea, consiguiendo una capa de fondo estática detrás de los gráficos principales del scroll. Esto era lo más parecido que podía acercarse el CPC a un scroll parallax con 50 frames por segundo, y después sería muy útil en Prehistorik II para CPC Plus.

Revista Schneider CPC International

1992 fue un año interesante para ti. Empiezas a colaborar con la legendaria revista alemana Schneider CPC International (o como sea que se llamase a estas alturas *risas*) ¿Cómo surge esta colaboración?

Tienes toda la razón. 1992, el año de los exámenes finales en el instituto, fue realmente un momento de suerte. Tras el fracaso con Cyborgs, tenía preparada la idea para la rutina de sprites de Zap't'Balls, pero no quería escribir otra demo de un juego. Así que llamé a la legendaria revista alemana, alabé la posibilidad de tener un clon del Pang en el viejo CPC, y obtuve de respuesta: «si eso funciona lo pondremos en nuestro cover disk [nota: disco de regalo que venía con la revista] y te pagaremos 1000 DM» [nota: DM, deutsche mark, o marco alemán era la vieja moneda alemana, que al cambio son aproximadamente 500 EUR]. Así que pensé que eso era mucho mejor que los 0 EUR de mis proyectos anteriores, y lo empecé.

Versión de Zap'T'Balls incluida en la revista

«Así que pensé que eso era mucho mejor que los 0 EUR de mis proyectos anteriores, y lo empecé»

¿Qué retos encontraste en Zap'T'Balls? ¿Cómo los solventaste?

El principal reto en Zap'T'Balls era dibujar las incontables bolas a 50 frames por segundo. El CPC original no tiene sprites, así que tenías que copiar manualmente cada píxel en la memoria de vídeo. Al final escribí un programa para cada sprite que pone el puntero de la pila en la memoria de vídeo y entonces envía los valores del color del píxel, descomprimiendo gráficos al vuelo. Los píxeles de sprites y fondos se unen únicamente cuando se necesita (en Mode 0, cada byte contiene dos píxeles), y el fondo solo se restaura en el borde de las bolas. Posiblemente te has dado cuenta de que las bolas no eran tan coloridas (= buena compresión). 

Zap'T'Balls The Advanced Edition

Así pues, Zap'T'Balls vino con la revista Amstrad CPC International. ¿Cómo fue la recepción por parte de los fans del CPC? ¿Qué te llevó a extender el juego y publicarlo por ti mismo?

El primer Zap'T'Balls se hizo rápidamente, con un solo fondo y nada más que bolas para destruir, así que se sentía incompleto. Es difícil decir algo sobre la recepción, ya que entonces no teníamos e-mails, contadores de descargas, suscripciones, seguidores o retuits, y ciertamente mi teléfono no es que estuviera todo el día sonando con llamadas de jugadores pidiendo una secuela, pero ir a por la edición avanzada se sentía como algo divertido que hacer...

Asistentes al Euromeeting 2. Fuente: odiesoft.de

Zap'T'Balls te abrió las puertas de Titus Software. ¿Cómo acaba un austriaco trabajando para una empresa francesa en un mundo todavía no globalizado?

En julio de 1992, la demoescena se reunió en el Euromeeting 2 en Reims, Francia. Aproveché la oportunidad para visitar Paris y, afortunadamente llegué a Titus Software. Les gustó Zap'T'Balls lo bastante como para ofrecerme contratos para los próximos juegos. Eso implicó un montón de llamadas (por suerte tras cuatro años de francés en el instituto) y el envío de un montón de discos a través de DHL.

Pantalla de carga de Titus The Fox

Titus es conocida por ser una de las mejores casas de software para el CPC de todos los tiempos, habiendo producido algunos de los títulos más interesantes de la plataforma como Titus the Fox o Titan, pero tu llegada, al absoluto final de la vida comercial de la máquina, llevó la calidad de sus títulos a las más altas cotas de calidad. Estamos hablando de títulos como Prehistorik II o Super Cauldron. ¿Cómo fue trabajar para ellos?

Bueno, mmm..., por supuesto tenía el mejor de los apoyos. Titus tenía excelentes diseñadores de juegos y grafistas, quienes me enviaban su gráficos de PC a 320x200 píxeles de resolución, lo cual podía convertir fácilmente al Mode 0 del CPC con la mitad de resolución (160x200). La escena del CPC había descubierto los trucos de programación necesarios para hacer la ruptura de pantalla y el scroll por hardware (mantener una pantalla estática y scrollear el resto suavemente) y también tenía grandes músicos para añadir el ritmo (WEEE!, Kangaroo y BSC con su tracker de sonido). Así que yo solo tenía que unirlo todo.

Prehistorik II, versión Amstrad CPC

A estas alturas ya eras uno de los mejores especialistas en scroll en Amstrad, no solo del momento pero de la historia completa de la máquina. Curiosamente, tus rutinas no son posiblemente las más eficientes o las que hacen un mejor uso del CRTC, pero sí que logran el posiblemente mejor uso de las habilidades de la máquina para el scroll en juegos de verdad, no en demos. ¿Cual es tu secreto?

Efectivamente, nunca fui un mago del CRTC como Overflow de Logon System, y aun así estoy muy feliz de haber logrado que estos juegos de plataformas con scroll funcionasen. Por supuesto que quería scroll por hardware suave con 50 frames por segundo tal y como se ve en las demos; cualquier otra cosa hubiera sido bastante patético. Pero, por otro lado, era imposible ejecutar el main loop de un juego de plataformas como Prehistorik II a 50 fps (como Zap'T'Balls).

Tan pronto como tenías dos grandes sprites de enemigos en pantalla y les atacabas con un hacha gigante, el tiempo requerido para redibujar estos sprites píxel a píxel hubiera forzado una caída de la tasa de frames a 12.5 o incluso 10 fps. Ahora bien, scroll por hardware significa afortunadamente que el CRTC te daba el scroll por la cara, tan solo cambiando la dirección de inicio de la memoria de vídeo que se muestra en pantalla. Aun así, cosas que se salían por la parte izquierda de la pantalla durante el scroll aparecían de vuelta por la derecha, así que tenían que ser sustituidas por nuevos gráficos por la CPU. Esta actualización del fondo tenía que ser hecha a 50 fps, así que acabé con dos loops del juego ejecutándose en paralelo, uno para el fondo y otro para los sprites.

El generador de interrupciones de 300Hz integrado en el CPC tenía entonces que interrumpir el bucle de sprites y ejecutar la actualización del fondo. Esto provocaba toda clase de problemas, pero al final funcionó. Y, por suerte, el scroll suave ocultó el hecho de que muchos de los sprites en pantalla se mueven realmente de manera brusca. 

Super Cauldron, versión Amstrad CPC

¿Y tus rutinas de imprimir sprites? ¿Qué las hacía tan eficientes?

Titus quería que sus juegos pudieran ejecutarse en el CPC 464 con 64KB [de memoria] y eso, junto a la enorme resolución en overscan hacía imposible hacer uso del page flipping (es decir, tener dos pantallas y actualizar una mientras muestras la otra). Por lo tanto, la rutina de sprites en Super Cauldron hace un seguimiento del haz de electrones del monitor y de las posiciones, tamaños y superposiciones de los sprites, y programaba la renovación del fondo y el dibujado de sprites de tal manera que no le pillara en medio del haz de electrones, evitando así el parpadeo sin usar doble buffer.

«Programaba la renovación del fondo y el dibujado de sprites de tal manera que no le pillara en medio del haz de electrones, evitando así el parpadeo sin usar doble buffer»

Fuente: Yasara.org

¿Cuán importante fue tu experiencia con el Amstrad CPC cuando iniciaste tu actual carrera? ¿Te ha ayudado de alguna manera a conseguir tu estatus, posición o trabajo actual?

Saber como hacer un uso eficiente de recursos y poder implementar proyectos en lenguaje ensamblador resultó ser muy valioso más adelante. Para soltar todo el poder que encierra una CPU actual, tienes que usar sus juegos de instrucciones SSE y AVX y eso se sigue logrando de una mejor manera usando lenguaje ensamblador, ya que los compiladores solo pueden manejar casos simples. A pesar de que me convertí en un patético perdedor pasando de hacer demos y juegos a desarrollar software de aplicaciones (un programa de simulación científica llamado YASARA) todavía es un poco como trabajar en Zap'T'Balls. Las bolas son ahora átomos, y en lugar de 32 necesito mostrar billones; en lugar de enviar datos a la memoria de vídeo implemento shaders en Vulkan, pero aún así es divertido.

Prehistorik Man, versión Game Boy

Sentimos mucho tomar tanto de tu tiempo pero nos gustaría acabar señalando que llevabas tanto el CPC en tu sangre que hasta llevaste un poco de él a la Game Boy, ¿no? *guiño*

Desde luego. La Game Boy tiene una CPU personalizada que es casi idéntica al Z80a de los CPCs, y cuando Prehistorik II para CPC estuvo listo, Titus sugirió continuarlo con una versión para Game Boy llamado Prehistorik Man. Fue divertido, ya que el mundo de la Game Boy apenas había tenido contacto con la demoescena del CPC, así que comencé por convertir algunas de mis invenciones, como por ejemplo la rutina de mensajes de scroll, que había visto por primera vez en Ḿegademo de BSC.

Convertir  el juego demostró ser problemático. Mientras que la Game Boy tiene sprites por hardware, son desafortunadamente pequeños (8*16 píxels cada uno), limitados a 10 sprites por línea (todos los demás son invisibles), y la prioridad está determinada por la posición horizontal (sprites a la izquierda se dibujan antes). Si ahora intentas construir sprites más grandes a partir de estos bloques de 8*16, estos sprites no se superponen corretamente, sino que se lían entre ellos y desaparecen parcialmente en esas lineas de píxeles donde se ha superado el límite de 10*8 = 80 píxels de sprites. Tras mucho trastear, mi truco para mostrar sprites grandes en Game Boy fue calcular qué sprite por hardware no se mostraría correctamente y reemplazarlos por sprites por software copiados directamente en la memoria de vídeo tal y como hacía en el CPC, usando código muy similar.

Para la música quise usar el excelente Soundtrakker de BSC, pero resulta que el chip de sonido de la Game Boy no permite cambiar libremente de volumen, lo cual es absolutamente imprescindible para hacer canciones en CPC. Tras mucho trastear, ví que se podía engañar al chip para que cambiase el volumen escribiendo un cierto valor multiples veces en un puerto determinado. Así es como canciones creadas con el soundtrakker de Kangaroo MusiQue partieron la pana en Game Boy. Por desgracia, Nintendo no conocía este truco y he oido que la música está rota en algunos sucesores de la Game Boy supuestamente retro-compatibles.

phX en acción

¿Estás al día con las nuevas creaciones para la máquina? ¿Cuál es tu nueva creación favorita?

De vez en cuando busco en Youtube las últimas creaciones molonas. De los últimos tres años, mis favoritas son phX por Condense para el CPC, CRTC3 para el CPC Plus, 3D meets the aging bits de Overflow, y por supuesto estoy deseando ver Vespertino del Batman Group.

Vespertino, el esperadísimo juego de carreras para CPC

«De los últimos tres años, mis favoritas son phX por Condense para el CPC, CRTC3 para el CPC Plus, 3D meets the aging bits de Overflow, y por supuesto estoy deseando ver Vespertino del Batman Group»

¿Qué opinas sobre iniciativas como el CPCRetroDev, el concurso de la Universidad de Alicante donde estudiantes y grupos de la escena compiten por grandes premios?

Es realmente una idea genial. La manera de pensar que necesitas para implementar algo realmente competitivo en viejo hardware de 8 bits es un activo muy valioso que te ayudará un montón también en hardware actual.

Logo de NASM. Fuente: Wikipedia


¿Oyes la llamada del ensamblador? ¿Volveremos a ver en algún momento una nueva creación de Elmar Krieger para el Amstrad CPC?

Escucho la llamada del NASM cada semana, pero me temo que la próxima producción para el CPC está programada para la próxima vida.

«Escucho la llamada del NASM cada semana, pero me temo que la próxima producción para el CPC está programada para la próxima vida»

Muchísimas gracias por todo, Elmar. ¿Hay algo que te gustaría añadir para los fans del CPC?

Cómo fan del CPC tienes mucha suerte; tienes suficiente tiempo libre para disfrutar de un hobby que mantiene tus conexiones cerebrales en forma. Es mucho mejor que ir a pescar. Pon tu CPC en el escritorio de tus hijos y dales un ejercicio que tengan que terminar antes de poder siquiera pedir una PlayStation 5 por navidad. Bueno, tal vez está prohibida la tortura infantil en algunos países, así que móntales mejor un emulador de CPC y un entorno de desarrollo con Locomotive BASIC. Y, si logras encontrar una manera de lograr scroll horizontal al píxel con un buffer de pantalla única, ¡serás nuestro héroe para siempre! 

[ENGLISH]


Elmar in 2001. Source: CPCWiki


First of all i would like to thank you for spending a little bit of your scarce time with us. It's a complete honor to have with us one of the best programmers for the Amstrad CPC. Let's start in the beginning: When did your interest for technology start?


Many thanks for the kind words, but the real honor is that there are still enthusiasts around who spend their precious time keeping the 64KB memory alive, and of course writing and reading this interview...


My interest started as a kid aged 10 in 1984, when home computers became affordable, and I figured that there must be more around the corner than the nasty machine code programming cartridge #9 of the Philips Videopac G7000.

Programing on a Videopac


So at a certain point you started programming with the Schneider CPC. What moved you to go from simply enjoying games to start programming for the machine?


One main reason was the price tag of video games, which were almost 2-3x as expensive as full-price titles today (considering the general cost of living back then). If you wanted to play something new, you better started programming, most easily by typing in source code from computer magazines and then debugging your mistakes. That's really a big problem for today's kids: with infinitely many games available for free, there is hardly any incentive to start coding themselves.

[Note from us] As an example, a game like "The Way of the Tiger" used to cost 60DM as Disc in 1986 in Germany. That's about 30 EUR. The prices in Austria were probably about that price tag back in the day.

The Way of the Tiger with a 59.00DM Price Tag


Is programming an art that relies on inspiration once you have solid grounds or can you really train your skills without limits?


It's certainly a combination of both. There is the creative part of coming up with an idea, and then the hard development and debugging work to bring it to life.

Compute Mit Magazine


How difficult was for you to access to resources about programming? The Internet wasn't so popular back then *laughs* Were there good publications made in Austria or did you rely mainly on german ones? Which ones were your favourites?


Computer magazines were really popular in Austria, we simply imported the German ones, and there were always more than you could afford. So it was part of the game to sneak into the newsagent and read as much as you could before being reminded that there was no free lunch. My favorite one was "Compute Mit" published by Tronic, which used cheap newsprint and was stuffed with listings to type.


Frogger by Elmar Krieger


Did you ever learn some programming trick or routines on those magazines so useful that you kept using them since then without major changes?


Sure, I once played the game 'Frogger' in an arcade during summer holidays 1986 in Croatia, and to continue playing at home, I made a totally crappy CPC port written in BASIC. This only worked thanks to machine code extensions borrowed from such a Compute Mit listing to scroll cars and tree trunks.

Space Taxi by Elmar Krieger


After Frogger came Space Taxi. You can see already a bit of evolution in your way of doing things. The game was a big C64 hit in Germany, so it was, like Frogger, a matter of bringing something that already existed to our system, but here you already used compiled BASIC, Laser Basic if i am not mistaken. What did move you to try things different than the good old Locomotive BASIC? Did it really made a difference using a compiler?


A schoolmate played Space Taxi all day on his C64, and that made me jealous. The reason for moving to Ocean’s Laser BASIC was simply the vast number of commands it added to draw sprites and do other things needed in games and missing in Locomotive BASIC. I couldn’t afford the optional compiler by the way, so Space Taxi was still a normal BASIC game.

Review on Amstrad Action


Funny enough: Amstrad Action did cover the game… In 1994! Looks like you were like a rock star who made the big breakthrough and then everything related to you is suddenly interesting for the masses. It even scored an 84%. What did you feel when you saw it on a British Magazine so many years after developing it? Was the game even distributed back in the day?


Oh my god, I didn’t know that. They must have really been totally desperate. I did not distribute this ugly game intentionally, only accidentally.


Curiously, after Space Taxi there are some years with low to zero production, according to the CPC Websites. You make a comeback converted in a demoscener in 1989 with demos like “Magic Demo 2” and “Space Demo 1”. What are we missing here? Because the difference in quality of the productions is quite obvious, so you probably weren't quiet. There's even a hint in “Magic Demo 2” that there were at least another work before this one…


I think there were two reasons: first the step from BASIC to assembly language (which was needed for the demos) took some time and efforts, and second the CPC became more popular in Austria. Now you could suddenly meet other kids who also had a CPC at school, and then the swapping of disks with hot stuff really took off. Probably I was just sitting there all day and playing games like crazy. Fortunately, the demo scene came to the rescue.


Space Demo 1, by Elmar Krieger


How came your interest for the demo Scene and the desire to do demos instead of games? Distribution of works was also quite different to nowadays. How did you distribute your demos?


Demos traveled on the same disks as the other hot stuff, but felt 'sexier' than games. They were the ideal way of trying something new quickly, meeting new friends at demo parties, talking all night about new tricks and getting rid of sleep and other dispensabilities.


Magic Demo 2. Yes, we know that guy.


The Demo Scene is probably where the best ideas and tricks comes. How important was for your career, not only back then but also for your actual one, to be part of movement where it mattered creativity and pushing the limits of the hardware?


That was absolutely essential. Not only the demo scene programming tricks, that really proved useful for games too (the wild video controller tricks invented by the French Logon System demo group will never be forgotten), but also the way of thinking to make efficient use of scarce resources. This is still very helpful today in the era of GHz and GB, I need it on a daily basis.


Amiga Demo 4, by Elmar Krieger


The year is 1990 and the CPC is starting to fade away. But there was Elmar, with some astonishing demos like Twinblast or the Amiga Demo 4. What tools were you using at this time? What can you tell us about this creative period?

I had finally gotten used to the MAXAM assembler and could handle somewhat larger projects. So I wanted to combine demo technology with video games andstarted the game 'Cyborgs - Blast through history'.
Cyborgs, sadly cancelled but never forgotten.


For our readers that are not familiar with the matter; Cyborgs was a project of a game with smooth scroll and interesting game mechanics, were you control a Space Ship and have to build its way through the levels in a way that remind us “Builder Land”. How did you came to the concept?


After a lot of programming, I also wanted to try game design and combine action with riddles. I got help from a friend in Germany who redrew my initially ugly graphics, but since the CPC was already fading away, we couldn’t find anyone to publish it. It was also a mistake to make the game so difficult that you could hardly ever get past level 3 to fight the big boss (because there were only three levels in this game demo).

Elmar Krieger's part of Chain Demo


After “finding” that there are not so much market for games you produce a new demo “Chain Demo” where once again we could find some interesting programming tricks that will come in hand one year latter *wink* How did you came to the concept and what did you want to show with this demo?


After Logon’s “The Demo”, the German-speaking CPC freaks wanted a revenge and planned “Chain Demo”. I contributed a part, but unfortunately no complete demo was ever assembled, so the various pieces circulated individually.


For this demo I made a drawing program for backgrounds, that generates machine code that changes the background color multiple times per line and thus creates a static background layer behind the scrolling main graphics. This was as close as the normal CPC could get to 'parallax scrolling' with 50 frames per second, and it later became useful in Prehistorik II for CPC+.

Schneider CPC International Magazine


1992 is an interesting year. You start collaborating with the legendary german magazine Schneider CPC International (or whatever name it had at this point *laughs*). How did it started?


You are totally right, 1992 - the year with the final exams at high school - was really a lucky shot. After the failure with Cyborgs, I had the idea for the Zap't'Balls sprite routine ready, but didn't want to write yet another game demo. So I called the legendary German magazine, praised the possibility of a Pang clone for the old CPC, and got the answer: "If that works, we'll put it on our cover disk and pay 1000 DM". 'DM' was the old German currency, which translates to ~500 EUR. So I figured that was much better than the 0 EUR for the previous projects, and started.

Zap'T'Balls, version included with the magazine's cover disc


What challenges did you find in Zap'T'Balls? How did you solve them?


The main challenge in Zap’T’Balls was to draw the countless balls with 50 frames per second. The original CPC does not have sprites, so you have to copy every pixel manually into the video RAM. I ended up writing one program for each sprite that places the stack pointer in the video ram and then pushes the pixel color values, decompressing graphics on the fly. Sprite and background pixels are only merged where really needed (in CPC mode 0, every byte contains two pixels), and the background is only restored at the ball outlines. You probably noted that the balls were not that colorful (=good compression).

Zap'T'Balls, The Advanced Edition


So, Zap'T'Balls came with the Amstrad CPC International Magazine. How was the reception by the CPC Freaks? What moved you to extend it and publish the extended edition yourself?


The first Zap'T'Balls was done quickly, with just a single background image and nothing but balls to zap, so it felt incomplete. It's hard to say anything about the reception (we didn't have emails, download counters, subscriptions, followers, retweets..), and certainly my phone wasn't ringing all day with gamers calling for a sequel, but going for “The Advanced Edition" felt like the right fun to do...

Euromeeting 2 participants. Source: odiesoft.de


Zap'T'Balls opened the doors of Titus Software to you. How does an austrian end working for a french company in a still not globalized world?


In July 1992, the demo scene met at the “Euromeeting 2” in Reims/France. I used this opportunity to visit Paris and luckily arrived at Titus Software. They liked Zap’T’Balls enough to offer me contracts for the next games. That meant a lot of phone calls (fortunately after four years of French lessons in high school), and a lot of floppy disks sent around with DHL.


Loading screen for Titus The Fox


Titus is known as one of the best Amstrad CPC software companies of all time, having produced some of the most interesting games like Titus the Fox or Titan, but your arrival, at the very end of the commercial life of the machine, brought the quality of their games to the next level. We are talking about Prehistorik II and Super Cauldron. How was working for them?


Well, hm, well, of course I was standing on the strongest shoulders. Titus had excellent game designers and graphists who sent me their PC graphics at 320x200 pixels resolution, which I could easily convert to CPC's mode 0 with half the resolution (160x200). The CPC demo scene had discovered the tricks required for screen splitting and hardware scrolling (to keep a static status display and scroll the rest smoothly), and also had great musicians to add the rhythm (WEEE!, Kangaroo MusiQue and BSC with his Sound Tracker). So I just had to stir it all up ;-)



Prehistorik II for Amstrad CPC


At this moment, you are one of the best specialist in Amstrad scrolling not only of that moment, but of the complete story of the machine. Funny enough, your routines are probably not the most efficients or the ones that makes the best use of the CRTC, but they make probably the best use of the scrolling capabilities of the machine in real games, not in demos. What was your secret?


Indeed, I was never a CRTC magician like Overflow from Logon System, still I am happy that I got these scrolling platformers to work. I absolutely wanted smooth hardware scrolling with 50 frames per second as known from demos, everything else would have been "lame". But on the other hand, for a platform game like Prehistorik II, it was just not possible to run the game loop at 50 fps (like Zap'T'Balls).

As soon as you had two large enemy sprites on screen and attacked them with a giant axe, the time required to redraw these sprites pixel by pixel would force the frame rate down to 12.5 or even 10 fps. Now "hardware scrolling" fortunately meant that the CRTC gave you scrolling for free by just changing the start address of the video RAM shown on screen. Still, things that scrolled out on the left side came back in on the right, and thus had to be replaced with new graphics by the CPU. This update of the background had to be done with 50 fps, so I ended up with two game loops running in parallel, one for the background and one for the sprites.

The CPC's built-in 300Hz timer was then responsible to interrupt the sprite loop and execute the background update. This caused all kinds of problems, but worked eventually. And luckily, the smooth scrolling hid the fact that lots of sprites on screen could move rather jerkily.

Super Cauldron for Amstrad CPC


How about your printing sprites routines? What made them so efficient?


Titus wanted the games to run on the CPC 464 with 64KB, and together with the large overscan resolution this made it impossible to use page flipping (i.e. having two screens and updating one while showing the other). The sprite routine in Super Cauldron therefore kept track of the position of the electron beam in the monitor, and of sprite positions, sizes and overlaps, and scheduled the background restoration and sprite drawing such that it was not caught in the middle by the electron beam, thus avoiding flicker without double buffering.

Source: Yasara.org


How important was your experience with the Amstrad CPC when you pursued your carrier? Did it help you anyhow to achieve your actual status/work/position?


Knowing how to make efficient use of resources, and implementing projects in assembly language proved very valuable later on. To unleash the power of today’s CPUs, you have to use their SSE and AVX vector instruction sets, and that’s still best done using assembly language, compilers can only handle simple cases. Even though I became a “lame loser” by moving from demos and games to application software (a scientific simulation program called YASARA) it still feels like working on Zap’T’Balls. The balls are now atoms, and instead of 32, I need to display billions, and instead of pushing into the video RAM I implement Vulkan shaders, but it’s still fun.

Prehistorik Man for Game Boy


We are sorry for taking so much of your time but we would like to finish pointing out that you had the CPC so deep in your blood that you even brought a piece of it to the game boy, didn't you? *wink*


Indeed, the GameBoy has a custom CPU that is almost identical to the CPC's Z80A, and when Prehistorik II for the CPC was finished, Titus suggested to continue with a GameBoy conversion called 'Prehistorik Man'. This was fun, since the GameBoy world hadn't really had contact with the CPC demoscene before, so I started by converting some of the inventions, for example the split-raster scrolling messages on top, which I first saw in BSC's Megademo.


Converting the game itself proved rather problematic. While the GameBoy has real hardware sprites, they are unfortunately rather small (8*16 pixels each), limited to 10 sprites per pixel line (all others are invisible), and the priority is determined by the horizontal position (sprites on the left are drawn first). If you now build larger sprites from these 8*16 blocks, these sprites don't overlap correctly but pass through each other, and partly disappear in those pixel lines where the limit of 10*8 = 80 sprite pixels is exceeded. After a lot of fiddling, my trick for big GameBoy sprites was to calculate which hardware sprites would not be rendered correctly, and replace those with software sprites copied into the video RAM just as known from the CPC, using even very similar code.


For the game music, I wanted to use BSC's excellent CPC Soundtrakker, but it turned out that the GameBoy's soundchip didn't allow to freely change the volume, which was absolutely essential for CPC songs. After a lot of fiddling, I found that the chip could be tricked into a volume change by writing a certain value multiple times to a certain port. That's how Kangaroo MusiQue's CPC Soundtrakker songs rocked the GameBoy. Unfortunately Nintendo didn't know about this trick, I heard that the music is broken on some supposedly backwards compatible GameBoy successors....

phX by Condense in action


Are you up to date with the new creations for the machine? What's your favourite new creation?


Every once in a while I search YouTube for the latest hot developments. During the past three years, my favorites were phX by Condense for CPC, CRTC3 for CPC+, Overflow's "3D meets the aging bits", and of course I'm looking forward to Vespertino by the Batman Group.

The long awaited Vespertino for Amstrad CPC. Yes, CPC.


What do you think about initiatives like the CPCRetroDev, the contest hosted by the University of Alicante where both students and scene groups compete for great prizes?


That's really a great idea, the way of thinking you need to implement something competitive on old 8-bit hardware is a really valuable asset that will help you a lot also on today's hardware.

nasm logo. Source: Wikipedia.


Do you hear the call of the assembler? Will we see someday in the future a new Elmar Krieger production for the Amstrad CPC?


I hear the call of NASM every week, but I fear the next CPC production is scheduled for the next life.


Many thanks for your time Elmar. Is there anything that you would like to add for the CPC Fans?


As a CPC fan, you are really lucky: you have enough spare time to enjoy a hobby that keeps your brain-wiring fresh, it's definitely better than fishing. Place your CPC on the desk of your kids and give them an exercise to finish before they can hope to get a Playstation 5 for Christmas. Well, maybe child torture is forbidden in some countries, so better take a CPC emulator and a development environment with Locomotive Basic syntax highlighting. And if you find a way to do 1-pixel horizontal hardware scrolling with a single screen buffer, you will be our eternal hero!

Por/by: Chema

4 comentarios:

  1. ¡Magnífica entrevista! Merecería un premio de Casio Mongolia por lo menos ¡Plas, plas, plas, plas!

    ResponderEliminar
  2. ¡Muy buena entrevista, si señor!

    Me parece muy interesante cómo la abundancia actual de juegos y tecnología no incita a conocer mejor la tecnología y experimentar con ella, que es donde esta el verdadero disfrute.

    ¡Muchas gracias!

    ResponderEliminar
  3. Mais, vous savez, moi je ne crois pas qu’il y ait de bonne ou de mauvaise situation. Moi, si je devais résumer mes années sur amstrad aujourd’hui avec vous, je dirais que c’est d’abord des rencontres, des gens qui m’ont tendu la main, peut-être à un moment où je ne pouvais pas, où j’étais seul chez moi. Et c’est assez curieux de se dire que les hasards, les rencontres forgent une destinée… Parce que quand on a le goût de la chose, quand on a le goût de la chose bien faite, le beau geste, parfois on ne trouve pas l’interlocuteur en face, je dirais, le miroir qui vous aide à avancer. Alors ce n’est pas mon cas, comme je le disais là, puisque moi au contraire, j’ai pu ; et je dis merci à la vie, je lui dis merci, je chante la vie, je danse la vie… Je ne suis qu’amour ! Et finalement, quand beaucoup de gens aujourd’hui me disent : « Mais comment fais-tu pour avoir cette humanité ? » Eh bien je leur réponds très simplement, je leur dis que c’est ce goût de l’amour, ce goût donc qui m’a poussé aujourd’hui à entreprendre une construction mécanique, mais demain, qui sait, peut-être simplement à me mettre au service de la communauté cpc, à faire le don, le don de soi…

    ResponderEliminar
  4. La entrevista es una clase magistral. Me apunto la idea de cómo evitar el doble búfer para mi próximo juego en ensamblador. Es una lástima que solo se puedan encontrar algunas de esas técnicas "secretas" de programación del Amstrad, con suerte, buceando durante meses o años en subforos de varios idiomas.

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.

¿Es el Spectrum Next la evolución que esperabas del <i>Speccy</i>? Tim Gilberts nos muestra en exclusiva la esperada máquina

Los pasados 27 y 28 de octubre tuvo lugar la Play Expo Blackpool 2018 , un encuentro retro en la ciudad costera británica cerca de Mán...