Michael Kargas portfolio

Professional Work
Demoscene Productions
Personal Experiments
Retro Coding

A step beyond (CPC demo)
There was a time when I decided to start learning assembly beyond my time in a retro 8bit platform in 2000 (it was a dream of mine in the very past but it was harder to find an assembler or someone to teach you before the internet era). Which better way than starting in your favorite 8bit of your childhood memories! And this was the first attempt after 3 years of learning and trying stuff, my first 8bit demo and kinda insane for a beginner. At the moment I was dissapointed by most CPC demo being single parts with hardware scrollers and no more modern effects and trackmo style design like in the Amiga or recent C64 demos. The demo consisted of mainly using variation of software plasma effects and the classic fire effect at different resolutions, accompanied with transitions synced to the music and even little support for the additional pallete of Amstrad CPC plus (which I don't own but tried through Winape32 emulator).

Links: download, youtube
X-kore (CPC demo)
My second CPC demo was done in a hurry, mainly because I was chasing deadlines. It could have had a much better design but at least it featured some of the best software rendering routines I have coded in CPC. A very fast bitmap stretcher on X-coordinate used in bitmaps or pseudo-X rotating texture cubes and also a final screen with a quite fast polar effect (for the pixel size and the limited CPU). Still my best effects on CPC so far.

Links: download, youtube
Chunky Chan (CPC demo)
After a long time of absence from CPC democoding I decided to make a come back with a different concept. The idea was, how to speed up the developing process on 8bits that are already too much of a struggle to work? One concept was to create a rendering standard, where from a simple linear buffer (also called chunky, an Amiga concept) one could render 4*4 dithered tiles in the CPC format of the screen. So, effectively I simulated 256 gradients to somewhat blocky but bigger screen area and when I wrote new effects I only had to think of how to fill the linear virtual framebuffer which was a much easier job than classic CPC modes pixel per pixel rendering. So, I could concentrate on coding the effects faster even if they wouldn't always be as optimized for the screen format as possible. Now, the second concept for speedeveloping (my own term :) was to actually try to code in C on the CPC. Coding in anything less than pure assembly in 8bits was considered prohibitive in the past but seen that some other CPC demos had recently broken this rule I decided to give it a try. PhrozenC was released at the time specifically for CPC and this was the compiler where I developed this demo. Of course, I still had to write the most critical part in Z80 assembly, but the combination of C and assembly made it possible to have a better organization on non critical parts of the demo and made the scripting process a bliss (even the funny idea I had of rewinding the demo at the end of the scroller). After that, I became more fond of combining C and assembly in oldschool platforms whenever applicable.

Links: download, youtube
Wolfenstrad (CPC demo)
Playing with C compilers on CPC made the developing process easier and pushed me to try more complex concept like the coding of a 3d engine on 8bits. The concept was that I would write stuff in C so that I have a working prototype and then slowly rewrite parts in assembly to improve performance. One of my curiosities was whether the CPC could render something like a wolfenstein 3d maze game. The highlight was the very fast wall column renderer written directly in pure assembly as different unrolled codes for each different wall column stretch size, taking in advantage the changing of the videoram address bits during a move to the lines below. So, all I had was the fast wall renderer which needed however to know what size to render for each columns, something that was more of a mathematical geometric problem using raycasting and the part that needs improvement (still written in C). So, technically the engine is still not fit for a realtime game, but exploring various techniques I could avoid the reading of pure animation distance data per frame (except from the part in the greetings) with some alternative techniques with fewer generated data, allowing at least rotation of the camera around a fixed point. This is revealed in the second run of the demo (it loops too) where one can control in realtime the camera rotation (but not the position). Another highlight of the demo is the use of clever techniques (displacement of texture coordinates per column) to seemingly run effects or scrolltext on the walls without much CPU struggle. Also, the demo is the first time I am using some more advanced memory switching modes and my own interrupt code on the CPC. I am very proud of this work.

Links: download, youtube
Bloids (CPC 1k intro)
It was time then to try some small size coding on such a limited platform and I came up with this for the first time. A much faster 2d metaball renderer from my Chunky Chan demo is displayed here with clever unrolled code that had to be generated by another piece of code (because the 1k limitation prohibits of providing this code already unrolled). Around 50 metaballs are rendered in 3VBLs (17.5fps) iirc.

Links: download, youtube
Springles (CPC 1k intro)
A second attempt to code a 1k intro on CPC with the same codebase from Bloids, removed the scanlines to have a somewhat less blocky resolution, used the 2d blob engine (and improved the speed a bit) in a more interesting way, to render exploding particles (16bit fixed point arithmetic), an effect not seen before on the CPC. In a second part the particles are flying like in a springler.

Links: download, youtube
Clouds with Virgins in the Skies (CPC 4k intro)
My latest CPC work is this 4k intro released at the ReSet 2012 demoparty in France. Various effects here, a small 8*8 font I had pixeled years ago and the classic chunky framework from Chunky Chan and Bloids. My attempt was to somehow generate animated cloud-like structures using recursive frequency based image synthesis (adding sines of double the frequency and half the amplitude, yeah kinda like plasma but with more precise steps) and then I added some parts like a rotozoomer and a ceiling mapper with this cloud texture. An added bonus is the glow on those two effects, done by precalculating succesive texture where a faint blurred version of the original texture is added onto itself. Finally, this intro includes a music too, which was possible because of using the data cruncher exomizer to finally pack this intro under the 4k limit.

Links: download, youtube
Livetro (C64 demo)
During 2004 I had visited the Breakpoint party and was considering seriously to try coding on a second platform, the C64 because I realized that it's scene is bigger and cooler than the CPC. I talk with some sceners from the Anubis demogroup at the demoparty and decided to join them and a first demo was planned. The decision was to code something simple just to pass the message that Anubis finally found a new coder and more stuff are coming. So, the demo had no modern effect as in my CPC attempts, yet it was a good initiation to the C64 graphics hardware. Hardware sprite, multicolor and char modes, pixel perfect scrolling, split screen, line interrupts, etc. The first part was a game inspired screen and the second featured a sine scroller with fonts shifted inside char memory (also known as DYCP in the C64 literature).

Links: download, youtube
Optytro 3 (C64 4k intro)
Not much was done since for the C64 platform except from this recent 4k intro. And still, most of the code was old stuff. I admire the scripted CPC reboot mock up screen I did back then on a C64 char screen. The second part is just a parody of some older PC intro I had released with tiles of my face scrolling around.

Links: download, youtube
Dreamcast boot screen (C64)
This is something that was intended for the start of a C64 demo that was never finished. I decided to upload a preview on youtube since I doubted I could find the time for another big C64 demo any time soon. It's a carefully scripted mock up of a Dreamcast booting screen.

Links: youtube
Spectro (ZX Spectrum)
And finally, while I was in UK for my MSc, I got my hands on a ZX Spectrum 48k (and also a +2 and a +3). Since the Speccy has the same CPU as the CPC and only one graphics mode with somehow but not entirely similar screen addressing configuration, I decided to make my first debut to the Speccy scene. It's the simpliest and most ugliest thing I have ever written but it did the job to get me started.

Links: download, youtube