Artikel
Interview Elmsoft
Elmar Krieger, in der Demoscene auch bekannt als Elmsoft / EGS, war ein berühmter, auf der Amstrad CPC-Plattform aktiver Programmierer. Von ihm stammen einige sehenswerte Demos (darunter die Chain Demo), bekannter ist er allerdings für die folgenden Spiele: Zap’t’Balls, Super Cauldron und natürlich Prehistorik 2. Auf mich als damaligen Teenager hatte besonders Prehistorik 2 großen Einfluss. Ich war ausgesprochen neugierig, mehr über seine CPC-Arbeit zu erfahren, habe ihn also für ein Interview angeschrieben — und er hat freundlicherweise zugesagt! :)
1. Hallo Elmar! Kannst du dich bitte kurz vorstellen? (Alter, Land, was du beruflich machst usw.)
Ich wurde 1974 in Österreich geboren und lebe in Wien. Meinen Lebensunterhalt verdiene ich mit dem Verkauf des Nachfolgers von Zap’t’Balls, einem Programm namens YASARA, in dem die Bälle echte Atome darstellen und sich realistischer bewegen (das nennt sich „Molekulardynamik-Simulation“), sodass Universitäten und Pharmafirmen es für ihre Forschung nutzen können.
2. Wann bist du dem Amstrad CPC zum ersten Mal begegnet? War es dein erster Computer? Hast du noch einen?
Mein erster Computer war 1984/85 ein TI-99/4A, aber der eigentliche Spaß begann 1986, als mein Vater einen CPC 664 mit Grünmonitor kaufte. Bei meinen Eltern lauern immer noch diverse CPCs herum, leider von Staub bedeckt.
3. Das macht mich neugierig. Du hast viele Amstrad-CPC-Demos gemacht (die berühmteste ist die Chain Demo). Deine Demogruppe hieß „Elmsoft Game Service“. Woher „ELMsoft“ kommt, lässt sich leicht erraten, aber warum das Wort „Game“ in EGS, wenn es um Demos ging? Hast du damals Demos gemacht, um von Spielefirmen wahrgenommen zu werden? Hat das funktioniert?


Wie alle Kinder wollte ich Videospiele spielen; meine ersten beiden CPC-Spiele waren Harrier Attack und Hunchback, jedes kostete so viel wie 100 Liter Benzin. In heutiger Währung sind das satte 150 EUR pro Videospiel. Ich hatte also das Glück, in einer Zeit aufzuwachsen, in der Videospiele knapp waren und Kinder noch gezwungen waren, selbst zu programmieren. Bei mir lief das bis 1987 auf mehrere völlig lausige BASIC-Spiele hinaus, teilweise mit Laser BASIC (Oceans BASIC-Erweiterung für Sprites und Scrolling).
Komischerweise habe ich gerade nach Space Taxi CPC gegoogelt und festgestellt, dass irgendein Masochist sogar ein *.dsk-Abbild hochgeladen hat (das war eine „Portierung“ eines gleichnamigen C64-Spiels). Daher kommt also der „Game Service“ ;-)
4. Du warst auf beiden Demopartys Euromeeting 1 & 2 dabei (1991, 1992). Du Glückspilz! :) Hast du Erinnerungen oder Anekdoten zu erzählen?

Das Euromeeting 1 war mein erster persönlicher Kontakt mit der internationalen CPC-Szene, und jeder Aspekt davon hat sich in all seiner Pracht für immer in mein Hirn gebrannt. Auch, weil ich das Schlafen völlig vergessen habe und am Ende weggetragen werden musste. Was die CPC-Programmierung angeht, ist meine beeindruckendste Erinnerung Overflows Demo S&KOH mit ihrem verblüffend verdrehten, senkrecht scrollenden Hintergrund und den Sprites darüber. Könntest du ihn bitte als Nächsten interviewen? ;-) Ich erinnere mich außerdem an eine Logon-Demo mit waagerechtem Mode-Splitting, bei der die linke und die rechte Bildschirmhälfte unterschiedliche Farbtiefen hatten.
5. Noch einmal zu den Euromeeting-Partys: Dort wurde eine Vorschau auf ein Shoot’em’up namens Cyborgs gezeigt. Das Spiel wurde nie fertig. Warum?
Weil ich die Vorschau an verschiedene Firmen geschickt, aber keinen Verlag gefunden habe. Das war 1990, als es dem CPC noch ganz gut ging, also beschloss ich, ein anderes Projekt zu versuchen.
6. Zap’t’Balls war dein erstes ernsthaftes Spiel. War es ein Erfolg, es als Shareware zu veröffentlichen? Was hast du daraus gelernt?

Ich habe Zap’t’Balls hauptsächlich programmiert, weil das deutsche CPC-Magazin „Amstrad CPC International“ vorab zugesagt hatte, es auf die Coverdisk zu packen. Und ich fand, es macht viel mehr Spaß zu programmieren, wenn man weiß, dass das Ergebnis veröffentlicht wird. Wie viele Spiele von Democodern entstand Zap’t’Balls „andersherum“.
Zuerst kam einem eine interessante Programmiertechnik in den Sinn, und dann dachte man über ein Spiel nach, das sie benutzen könnte. Bei Zap’t’Balls war die Technik, viele riesige Bälle schnell mit 50 Bildern pro Sekunde zu zeichnen. Sie funktionierte nur mit Bällen, weil die runde Objekte sind (man konnte also nur einen donutförmigen Teil des Hintergrunds wiederherstellen, den Ball ein Stück bewegen und an der neuen Stelle neu zeichnen); und abgesehen vom Lichtreflex waren die Bälle nicht sehr farbig (man konnte also den Stapelzeiger in den Videospeicher legen und die Grafik dorthin „pushen“, im Flug entpackend, mit einem Assemblerprogramm je Ballgröße).




Das war 1991 fertig, und Anfang 1992 habe ich mit Zap’t’Balls — The Advanced Edition begonnen. 1992 war der CPC bereits im Niedergang, und Firmen veröffentlichten kaum noch reine CPC-Titel, nur noch Mehrplattform-Titel mit einer CPC-Fassung zwecks Marktabdeckung. Ich habe also keinen Verlag gesucht, sondern es mit Hilfe anderer CPC-Enthusiasten selbst verkauft (es war eigentlich keine Shareware). Trotzdem war es ein Glückstreffer, denn nach dem Euro Meeting 2 in Reims habe ich einen Umweg über Paris genommen und das Spiel Titus Software gezeigt, die mich engagierten, Super Cauldron und Prehistorik 2 auf den CPC umzusetzen.
7. Super Cauldron und Prehistorik 2, beide vom französischen Verlag Titus vertrieben, erschienen 1993. Kannst du bitte beschreiben, wie deine Abmachung mit Titus Software aussah und wie euer Verhältnis während der Entwicklung war? Waren sie kommerziell erfolgreich, hast du Zahlen zu verkauften Exemplaren usw.?
Die Abmachung war, CPC-Fassungen dieser beiden Spiele für eine feste Summe zu machen, keine weiteren Fragen ;-). Ich habe also keine Ahnung, wie viele Exemplare verkauft wurden, und 1993 war für einen echten kommerziellen Erfolg auf dem CPC wahrscheinlich schon zu spät. Wenn ich mich recht erinnere, waren das die letzten beiden Titus-Titel für den CPC.

8. Super Cauldron und Prehistorik 2 benutzen dieselbe Technik, um riesige Welten flüssig darzustellen. Kannst du bitte die beteiligten Werkzeuge, deinen damaligen Arbeitsablauf usw. beschreiben? Hast du plattformübergreifende Werkzeuge benutzt? Wurden die Grafiken (Sprites, Bilder …) aus der PC-Fassung übernommen?

Prehistorik 2 gehörte zur letzten kommerziellen Spieleserie für den Amstrad CPC (1993).
Die Z80A-CPU des CPC war viel zu langsam, um die Szene durch Kopieren im Videospeicher flüssig zu scrollen. Die offizielle Lösung war, die Hardware scrollen zu lassen, indem man einfach die Startadresse des Videospeichers ändert. Leider erlaubte das nur Schritte von 8 Pixeln in jede Richtung (bei der Mode-1-Auflösung von 320×200 Pixeln). Wollte man also wirklich flüssiges Scrolling (mit der Bildwiederholrate von 50 Bildern pro Sekunde), führte das zu irrsinnig schnellen Spielen; das erste war, glaube ich, Roland in the caves, und das berühmteste wohl Ghosts’n’Goblins. Mit den von der Demoszene entdeckten Kniffen war aber langsameres und damit spielerfreundlicheres Scrolling mit 4 Pixeln waagerecht und 1 Pixel senkrecht möglich, das ich für die beiden Spiele benutzt habe.
Das nächste zu lösende Problem waren die Sprites, und da unterschieden sich die beiden Spiele erheblich. Der CPC hatte keine Hardware-Sprites wie der C64, jedes bewegte Pixel musste also von der CPU „von Hand“ gezeichnet werden. Das heißt, der Zeichenvorgang (Hintergrund wiederherstellen und das Sprite an der neuen Stelle zeichnen) war im Prinzip auf dem Bildschirm sichtbar. Viele Spiele haben das mit Page Flipping versteckt (das ist auch heute noch die Methode der Wahl), aber dafür hätte man die Bildschirmgröße um 50 % verringern müssen, um innerhalb der 64-Kilobyte-Grenze zu bleiben, die Titus gesetzt hatte (sie wollten auch den CPC 464/664 ohne RAM-Erweiterung unterstützen, sogar Kassette).
Der Sprite-Kniff in Super Cauldron funktionierte also so:
- Verfolgen, welche Sprites sich überlappen, und sie in „Sprite-Bündeln“ sammeln.
- Abschätzen, wie viel Zeit nötig ist, um den gemeinsamen Hintergrund wiederherzustellen und jedes Bündel neu zu zeichnen.
- Die aktuelle Position des Elektronenstrahls im Monitor berücksichtigen und das Zeichnen der Bündel so einplanen, dass keine halbfertigen Sprites und damit keine Flackereffekte sichtbar werden.


Dieses Rezept funktionierte gut, aber nicht zu gut. Besonders wenn große oder viele Sprites sich überlappten, konnte das Zeichnen länger als 1/50 Sekunde dauern, und dann wurde gelegentlich ein Flackern sichtbar. Für Prehistorik 2, das zudem größere Sprites hatte, habe ich das Rezept also geändert und nur Schritt 1 behalten:
- Verfolgen, welche Sprites sich überlappen, und sie in „Sprite-Bündeln“ sammeln.
- Für jedes Sprite das Rechteck bestimmen, das die alte und die neue Sprite-Position umschließt.
- Die Hintergrundgrafik innerhalb dieses Rechtecks in einen Puffer außerhalb des Bildschirms zeichnen.
- Die Teile aller Sprites des Bündels, die das Rechteck schneiden, in diesen Puffer zeichnen.
- Den Puffer auf den Bildschirm kopieren.

Dieser Ansatz war langsamer als der erste, weil er eine zusätzliche Kopie erforderte, aber er war auch zu 100 % flackerfrei. Wenn der Elektronenstrahl den Kopiervorgang durchschnitt, war das Ergebnis lediglich ein „Tearing-Effekt“, der weit weniger auffällt als ein Flackern. Komischerweise spukt Tearing 20 Jahre später immer noch durch die Computergrafik ;-)
Was die Grafik angeht, stammte sie größtenteils aus der PC-Fassung: Titus lieferte VGA-Grafik mit 320*200 Pixeln Auflösung, ich habe sie auf dem PC mit Deluxe Paint für den CPC angepasst, alles auf 160*200 Pixel (Mode 0) gewandelt, auf eine 5,25-Zoll-Diskette kopiert und auf dem CPC wieder eingelesen. Für die Entwicklung habe ich zwei CPCs benutzt: einen mit dem Assembler Maxam zum Schreiben des Codes und einen zum Testen, mit angeschlossenem MultifaceII zum Debuggen. Dieser Aufbau erforderte pro Testlauf einen Diskettenwechsel von Hand. Aus heutiger Sicht ein ziemlicher Albtraum ;-)
9. Prehistorik 2 hat die Fähigkeiten des Amstrad Plus fortgeschritten genutzt. Was hieltest du damals von dieser Maschine? Was hältst du heute von ihr?
Ich dachte, was alle dachten: Der Amstrad Plus wäre 1986 eine fantastische Maschine gewesen, kam aber 1990 viel zu spät, als der Amiga 500 mit seiner 16-Bit-CPU schon drei Jahre alt war. Trotzdem hat es großen Spaß gemacht, die CPC+-Effekte in Prehistorik 2 einzubauen, etwa das Parallax-Scrolling mit Hardware-Sprites im Vordergrund und schnellem Farbwechsel im Hintergrund (gemacht mit einem kleinen Zeichenprogramm, das Z80-Code erzeugte, der die Hintergrundfarbe schnell änderte, um die Hintergrundgrafik zu erzeugen).
10. Irgendwo (vielleicht in der Demo Voyage 93?) wurde erwähnt, dass du den Amstrad CPC dann zugunsten von GameBoy-Spielen verlassen hast (beide Plattformen teilen sich den Z80-Prozessor). Kannst du uns von deinen GB-Aktivitäten erzählen, was öffentlich erschienen ist usw.? Hast du danach eine Laufbahn als beruflicher Videospielprogrammierer verfolgt?
Nachdem Prehistorik 2 für den CPC fertig war, habe ich das Spiel auch auf den Nintendo Gameboy portiert, dort Prehistorik Man genannt. Das war der ursprüngliche GameBoy, mit 160*144 Pixeln Auflösung und vier Graustufen. Und es hat mir großen Spaß gemacht, einige unserer Amstrad-CPC-Demokniffe auf den GameBoy zu übertragen, etwa bildschirmfüllende Scrolltexte mit Split-Rastern, siehe z. B. dieses Intro oder das erste Level. Überraschenderweise konnte ich die Software-Sprite-Algorithmen vom CPC wiederverwenden, denn obwohl der GameBoy Hardware-Sprites von 8*16 Pixeln hat, haben die ernste Grenzen (höchstens 10 pro Zeile, falsche Prioritäten). Komischerweise hat unser guter alter CPC dem GameBoy also größere Sprites ermöglicht ;-)


Sämtliche Musik, die ich je auf dem Gameboy benutzt habe, war in Wirklichkeit echte CPC-Musik, denn ich habe einen Gameboy-Player für BSCs berühmten SoundTrakker gebaut.
Danach boomte bereits die 3D-Grafik, und ich habe an einer 3D-Engine für den GameBoy mit Texture-Mapping gearbeitet, die in einem Spiel namens StuntRaceFX zum Einsatz kommen sollte. Wegen der schwachen CPU des GameBoy war es völlig aussichtslos, das in Software zu machen, also habe ich es auf Hardware-Kniffe gestützt wie „Pixel Line Splitting“ (bei dem die Startadresse des Videospeichers und die Farben in jeder Pixelzeile geändert werden). Danke an denjenigen, der es hier hochgeladen hat (beginnt bei Minute 1:10). Übrigens: Die Fahrt am „FX“-Logo und den Bergen vorbei benutzte keine Hardware-Kniffe, sondern entpackte vorberechnete Grafik, die mein Freund Mark Piffer entwickelt hat. Sämtliche Musik, die ich je auf dem Gameboy benutzt habe, war in Wirklichkeit echte CPC-Musik, denn ich habe einen Gameboy-Player für BSCs berühmten SoundTrakker gebaut.
Leider hat es diese 3D-Engine nicht in eine GameBoy-Cartridge geschafft, und sie war mein letztes Unterhaltungsprojekt. Gleich danach habe ich etwas sehr „Lahmes“ getan und bin von Spielen zu Anwendungssoftware gewechselt. Seitdem arbeite ich an YASARA, das ich oben erwähnt habe. Aber — Glück gehabt — das erwies sich als genau dieselbe Assembler-Fummelherausforderung wie auf dem guten alten CPC (heute etwa mit MMX/SSE/AVX), ich habe also weiterhin hardwarenahen Spaß ;-)
11. Glaubst du, dass Raubkopien die Plattform getötet haben? Oder haben sie umgekehrt geholfen, die Beliebtheit des Amstrad CPC zu steigern?
Es war schlicht die Zeit, die versucht hat, den CPC zu töten, und die Raubkopien haben ihn gerettet. Alle meine Spiele wurden „gecrackt“, und das ist der einzige Grund, warum sie heute noch am Leben sind und sich in Emulatoren spielen lassen. Die meisten der originalen, kopiergeschützten Disketten sind vergammelt, genauso wie der Quellcode und die Werkzeuge.


12. Schaust du dir hin und wieder noch an, was in der Amstrad-CPC-Szene passiert? Was hältst du von ihrer Entwicklung?
Natürlich halte ich alle paar Monate Ausschau nach neuen CPC-Entwicklungen, vor allem nach Demos, und ich finde es erstaunlich, wie Enthusiasten wie du dieses Schiff über Wasser halten, das sonst vor 20 Jahren untergegangen wäre. VIELEN DANK!
Tausend Dank, Elmar, für dieses Interview und all die großartigen Dinge, die du für den CPC getan hast!!