Interview of Elmsoft / EGS (December 2013)
Elmar Krieger, also known as Elmsoft / EGS in the demoscene, was a famous programmer active on Amstrad CPC platform. He created some worth-watching demos (including Chain Demo), but he is better known for the following games: Zap't'Balls, Super Cauldron and of course Prehistorik 2. As a teenager at the time, Prehistorik 2 had notably big impacts on me. I was definitively curious to know more about his CPC work, so I contacted him for an interview and he kindly accepted ! :)
1. Hi Elmar ! Please can you briefly present yourself ? (age, country, what are you doing for a living, etc).I was born 1974 in Austria and am located in Vienna. For my living, I'm selling the successor of Zap't'Balls, a program called YASARA, where the balls represent real atoms and move more realistically (called 'molecular dynamics simulation'), so that universities and pharma companies can use it to help their research.
|
2. When did you meet the Amstrad CPC for the first time ? Was it your first computer ? Do you still have one ?My first computer was a TI-99/4A in 1984/85, but most of the fun started in 1986, when my father bought a CPC 664 with green screen. Various CPCs are still lurking around in my parent's house, unfortunately covered by dust.
|
3. I'm intrigued. You did many Amstrad CPC demos (the most famous one being Chain Demo). Your demo group was "Elmsoft Game Service". It easy to guess where "ELMsoft" comes from, but why mentioning "game" word in EGS for doing demo? Did you make demos at the time with the intent to be recognized by game companies ? Did it work ?
![]() Like all kids I wanted to play video games, my first two CPC games were Harrier Attack and Hunchback, each cost as much as 100 liters gasoline. In today's currency, that's a whopping 150 EUR per video game. So I was lucky to grow up in a time when video games were a scarce resource, and kids were still forced to program themselves. For me, this boiled down to several totally crappy BASIC games up to 1987, partly using Laser BASIC (this was Ocean's BASIC extension to do sprites and scrolling). Funnily, I just googled for Space Taxi CPC, and found that some masochist even uploaded a *.dsk image (this was a "port" of a C64 game with the same name). So that's where the 'Game Service' came from ;-)
|
4. You have been present to both Euromeeting 1 & 2 demo-parties (1991, 1992). You lucky boy ! :) Do you have some memories, fun facts... to share?
![Picture](/uploads/6/0/2/5/6025013/5932133.png?180)
Euromeeting 1 was my first personal contact with the international CPC scene, and every aspect in all its glory has been burnt into my brain forever. Also because I totally forgot to sleep, so I had to be carried away in the end. In terms of CPC programming, my most impressive memory is Overflow's S&KOH demo with its amazingly twisted vertically scrolling background and the sprites on top. Could you please interview him next? ;-). I also remember a Logon demo of horizontal mode splitting, where the left and right halfs of the screen had different color depths.
5. Still about Euromeeting parties, a preview of a shoot'em'up game, Cyborgs, was shown there. The game never got finished. Why ?
Because I sent the preview to various companies but didn't find a publisher. This was in 1990, when the CPC was still doing OK, so I decided to try a different project.
|
6. Zap't'Balls was your first serious game. Was is a success to publish it as a shareware? What did you learn from it ?
![]() I programmed Zap't'Balls mainly because the German CPC magazine 'Amstrad CPC International' agreed to put it on the cover disk in advance. And I figured it's much more fun to program if you know that the result will be published. Like many games from demo coders, Zap't'Balls was made 'the other way around'. One first came up with an interesting programming technique, and then thought about a game that could use it. For Zap't'Balls, the technique was to draw many huge balls quickly at 50 frames per second. It only worked with balls, since they are round objects (so one could restore just a donut-shaped portion of the background, move the ball a bit, and redraw at the new location), and except for the light reflection, the balls were not very colorful (so one could place the stack pointer in the video ram and 'push' the graphics there, uncompressing on the fly, with one Assembly program for each ball size).
|
![Picture](/uploads/6/0/2/5/6025013/4554299.png?200)
This was finished in 1991, and early 1992 I started with Zap't'Balls - The Advanced Edition. In 1992 the CPC was already in decline, and companies didn't really publish CPC-only titles anymore, just multi-platform titles with a CPC version for the sake of market coverage. So I didn't look for a publisher but instead sold it myself (wasn't actually shareware) with help from other CPC enthusiasts. Still it was a lucky shot, because after the Euro Meeting 2 in Reims, I took a detour to Paris and showed the game to Titus Software, who hired me to convert Super Cauldron and Prehistorik 2 to CPC.
7. Super Cauldron and Prehistorik 2, both distributed by French publisher Titus, were released in 1993. Could you please describe your deal with Titus Software, what was your relationship with them during development ? Were they commercial success, did you have numbers about sold copies, etc?The deal was to create CPC versions of these two games for a fixed sum of money, no questions asked ;-). So I have no ideas how many copies were sold, and 1993 was probably already too late to have a real commercial success on CPC. If I recall correctly these were the last two Titus titles for the CPC.
|
8. Both Super Cauldron and Prehistorik 2 use same technology to smoothly display huge worlds. Please can you describe the tools involved, your workflow at the time, etc. Did you use cross-platform tools? Were the assets (sprites, images..) adapted from PC version ?
![Picture](/uploads/6/0/2/5/6025013/8988297.gif?194)
The CPC's Z80A CPU was far too slow to smoothly scroll the scene by copying in the video-ram. The official solution was to let the hardware scroll by simply changing the start address of the video-ram. Unfortunately this only allowed steps of 8 pixels in each direction (at Mode 1 resolution of 320x200 pixels). So if you wanted really smooth scrolling (at the screen refresh rate of 50 frames per second), this lead to insanely fast games, the first one was Roland in the caves I think, and the most famous one probably Ghosts'n'Goblins. But by applying the tricks discovered by the demo scene, slower and thus more gamer friendly scrolling with 4 pixels horizontally and 1 pixel vertically was possible, which I used for the two games.
![Picture](/uploads/6/0/2/5/6025013/255678.png?169)
The next problem to solve were the sprites, and there the two games differed substantially. The CPC didn't have hardware sprites like the C64, so every moving pixel had to be drawn by the CPU 'manually'. This means that the drawing process (restoring the background and drawing the sprite at the new location) was in principle visible on screen. Many games used page flipping to hide this (which is still the method of choice today), but this would have required to reduce the screen size by 50% to stay within the 64 kilobyte memory limit which Titus set (they wanted to supported the CPC 464/664 without RAM extension too, even magnetic tape).
So the sprite trick in Super Cauldron worked as follows:
|
![Picture](/uploads/6/0/2/5/6025013/6238455.png?226)
This recipe worked well, but not too well. Especially when large or many sprites were overlapping, drawing could take longer than 1/50th of a second, and then an occasional flicker became visible. So for Prehistorik 2, which also had larger sprites, I changed the recipe, keeping only step 1:
- Keep track which sprites are overlapping, collect them in 'sprite bundles'.
- For each sprite, determine the rectangle that encloses the old and new sprite positions.
- Draw the background graphics within this rectangle to an off-screen buffer.
- Draw the parts of all sprites in the bundle that intersect with the rectangle into the off-screen buffer.
- Copy the off-screen buffer to the screen.
![Picture](/uploads/6/0/2/5/6025013/1468460.png?287)
This approach was slower than the first, because it required an additional copy, but it was also 100% flicker free. If the cathode ray cut through the copy operation, the result was a just a 'tearing effect', which is much less obvious than a flicker. Funnily, tearing is still haunting computer graphics today, 20 years later ;-)
Concerning the artwork, this mostly came from the PC version: Titus provided VGA graphics at 320*200 pixels resolution, I tuned it for the CPC with Deluxe Paint on the PC, and then converted everything to 160*200 pixels (Mode 0), copied it to a 5.25" disk and read it back in on the CPC. For development I used two CPCs: One running the Maxam assembler to write the code, and the other one to test it, with a MultifaceII attached to debug. This setup required one manual disk shuffle per test run. Quite a nightmare from today's point of view ;-)
Concerning the artwork, this mostly came from the PC version: Titus provided VGA graphics at 320*200 pixels resolution, I tuned it for the CPC with Deluxe Paint on the PC, and then converted everything to 160*200 pixels (Mode 0), copied it to a 5.25" disk and read it back in on the CPC. For development I used two CPCs: One running the Maxam assembler to write the code, and the other one to test it, with a MultifaceII attached to debug. This setup required one manual disk shuffle per test run. Quite a nightmare from today's point of view ;-)
9. Prehistorik 2 made advanced use of Amstrad Plus features. What did you think of this machine at the time ? What do you think about the machine now ?I thought what everyone thought: the Amstrad Plus would have been a fantastic machine in 1986, but was way too late in 1990, when the Amiga 500 with its 16bit CPU was already three years old. Still it was great fun to add the CPC+ effects to Prehistorik 2, like the parallax scrolling done with hardware sprites in the front and rapid color change in the back (done with a little drawing program that generated Z80 code that quickly changed the background color to create the background graphics).
|
10. It was mentioned somewhere (maybe Voyage 93 demo ?) you then left Amstrad CPC for GameBoy games (both platform sharing same Z80 processor). Can you tell us your GB activities, what was publicly released, etc. ? After those ones, did you pursue a career as a professional video game programmer ?After Prehistorik 2 for the CPC was finished, I also ported the game to the Nintendo Gameboy, named Prehistorik Man there. This was the original GameBoy, with 160*144 pixels resolution and four shades of gray. And I had great fun moving some of our Amstrad CPC demo tricks to the GameBoy, like fullscreen scrolling messages using split-rasters, see e.g. this intro or the first level. Surprisingly I could reuse the CPC software sprite algorithms, because even though the GameBoy has hardware sprites 8*16 pixels large, these have serious limitations (at most 10 per line, wrong priorities). So funnily, our good old CPC enabled the GameBoy to display larger sprites ;-)
|
All music I ever used on Gameboy was actually true CPC music, since I made a Gameboy player for BSC's famous SoundTrakker. After that, 3D graphics were already booming, and I worked on a 3D engine for the GameBoy with texture mapping, to be used in a game called StuntRaceFX. Due to the GameBoy's weak CPU, doing this in software was totally hopeless, so I based it on hardware tricks like 'pixel line splitting' (where the start address of the video-ram and the colors are changed in each pixel line). Thanks to whoever uploaded it here (starts at minute 1:10). BTW, the drive past the 'FX' logo and the mountains did not use hardware tricks, but was done by uncompressing precalculated graphics developed by my friend Mark Piffer. All music I ever used on Gameboy was actually true CPC music, since I made a Gameboy player for BSC's famous SoundTrakker.
|
Unfortunately this 3D engine did not make it into a GameBoy cartridge, and was my last entertainment project. Right afterwards, I did something very 'lame' and moved from games to application software. Since then I've been working on YASARA which I mentioned above. But - lucky me - that turned out to be exactly the same Assembly language fiddling challenge as on good old CPC (nowadays using e.g. MMX/SSE/AVX), so I'm still having low-level fun ;-)
11. Do you think piracy killed the platform ? Or on the reverse-side, helped to improve Amstrad CPC's popularity ?It was simply time that tried to kill the CPC, and piracy that rescued it. All my games were 'cracked', and that's the only reason why they are still alive today and can be played in emulators. Most of the original, copy-protected disks have rotten away, just like the source code and tools.
|
12. Do you still look at Amstrad CPC scene's actuality from times to times ? What do you think about its progress ?Of course I'm looking out for new CPC developments every few months, especially demos, and I think it's amazing how enthusiasts like you keep this ship afloat, which would otherwise have sunk 20 years ago. MANY THANKS!
|
Thanks a million Elmar for this interview and all the great things you did for the CPC !!