G. Rowdy by Desire [web]
G. Rowdy by Desire ------------------ A 32k Amiga OCS intro for the TRSAC 2022 intro or oldskool competition. Started out as one-screener, compo-filler two months ago. Yet again. Must REALLY stop doing this. Requirements ~~~~~~~~~~~~ MC68000, OCS, 512 KB Chip, 512 KB Fast. Credits ~~~~~~~ mA2E - music, text Optic - title logo, font, clean up of main gfx, text Platon - code, design, tetris gfx, main gfx, text Additional Credits ~~~~~~~~~~~~~~~~~~ Virgill - AmigaKlang Dan - AmigaKlang2Asm Leonard - LightSpeedPlayer a/b - original sine table code Blueberry - Shrinkler Tech Tech ~~~~~~~~~ This is my first production based on my new demo/intro framework. I hope I will find the time do a public release soon. As with Waffles of Math Construction, this intro makes heavy use of multitasking to play the music while still calculating the AmigaKlang samples. Cryptoburners did a Gouraud cube in 1994 in their production "Crash Test" before, but it was only 25 FPS, the rotation was jerky and the edges inaccurate. It used a 16 colors gradient, but the palette was not arranged in an optimal way. There is another fabulous unreleased Amiga Gouraud cube by Axis in 16 colors with dithering, but it runs in 25 Hz for most of the time. Tin's "The 50Hz Stare" cube on the Atari used 6 colors, but with a dithering pattern. The cube is much smaller, but it runs in 50Hz. Another Atari demo by No Extra ("So Fast Intro") showed an eight colours Gouraud cube with 2x2 pixels and much slower than 25Hz. But it didn't use dithering, so the visual banding inspired me to try out what I could achieve with the Amiga blitter. So here we are: Two times eight colours (could have also been one sixteen colours gradient, but then I couldn't have used my graphics) running at a constant 50Hz framerate with 1x1 pixels in a 176x176 area. The smiling lady is a 31 colors graphics, but anything except for the two gray and wine gradients are actually sprites to save DMA bandwidth. Even more, the display window is changed throughout the display to even more minimize the display DMA required. This is all necessary because the effect is mostly blitter bound. The blitter is busy clearing four planes, filling four planes and drawing a few lines (I had a version that would selectively clear and erase the lines with the cpu and blitter, but that was actually slower than the naive method). The blitter draws only the gradient lines and only has to draw exactly one line per bitplane because the palette is arranged in Gray code order. The CPU draws the outlines of the cube. The code for the interpolation is one of the most complicated pieces of code I've ever written and it uses a few tricks to get it running within one frame. The 3D calculations (not table based) and the inner line interpolation are done in background task ahead of time to level the different CPU requirements. Also, the blitter is allowed to spill into the next frame from time to time. The DMA view shows that there is not much idle time left. The blitter and the CPU are working in parallel most of the frame.
[ back to the prod ]