Amiga screens: a primer
28 points by classichasclass
28 points by classichasclass
In order to show just how snappy this screen handling is, I've prepared a short movie clip. It's filmed off a flatscreen monitor connected to an Amiga 600, which is a 7 MHz (that's 0.007 GHz) machine based around essentially the same hardware as the original Amiga 1000 in 1985. Here it's playing some music while also running a text editor and the graphics program Deluxe Paint, and of course performing screen switching and dragging...
The video doesn't look like much by modern standards, but if you've ever tried to do CPU rendering of high res graphics, you probably have some idea of how insane it is to do this with 7 MHz. And, what, 1-6 MB of RAM? Framebuffers spoil us these days. I wasn't around in 1985 to see this sort of thing in person, but it must have been outright magical.
I was very impressed by the video! Too bad it's impossible to convey to anyone who didn't live through it just how impressive it is…
The A500 came with 512 kB RAM, expandable to between 9 and 138 MB (!) depending on upgrades.
I think the thing would be showing what 1985 IBM PCs were like alongside. I'm not sure when PCs overtook Amigas, but certainly in 1985 the Amiga was amazing compared to everything else.
I think the thing would be showing what 1985 IBM PCs were like alongside. I'm not sure when PCs overtook Amigas, but certainly in 1985 the Amiga was amazing compared to everything else.
Not until VGA, really, so PS/2 era? And even then, the PCs were very primitive in comparison. But commoditization has a force all its own.
Yeah, somewhere along that time. SVGA didn't come out much later either. AGA came out in 1992, but I think at that time the PCs were already speeding past the Amiga.
(In my opinion, although Windows 95 was much more advanced than Workbench and overtook the Amiga in productivity too, I really don't consider Windows 95 so distant from the Amigas. I only consider the Windows NT family (so XP in 2001), OS X, and Linux to be the big step forward in home computer systems that was really separate from the previous systems.)
Given enough time and clever programmers even the original PC could do impressive stuff, but I can't image anything available at the time was very impressive.
If you haven't seen the "8088 MPH" demo, it's a must watch : https://www.youtube.com/watch?v=yHXx3orN35Y
Yes, although this cuts both ways. "Dread" and "Grind" are Doom clones that work on vanilla A500s- when at the time those kinds of graphics were not thought to be possible at all.
I'm always amazed by the people who take old systems and figure how to do things that no one figured in decades.
It did seem like magic, yeah. I was so blown away by the Amiga, but we had a PC (and later a Mac), sadly.
Each bitplane is stored separately in memory, and in order to change the colour index of a pixel, a bit must be toggled in each plane. Thus, a one-bitplane screen gives two colour indices, two bitplanes gives four and so on, up to five bitplanes and 32 colours on the original Amiga hardware (or 8 bpl and 256 colours on AGA).
Storing the state of a single pixel across several places in memory sounds painful. I'd be interested to hear what programming against this was like in practice.
Yes, changing a single pixel was rather painful, but that was rarely done. The original Amiga had 8 hardware sprites (8 colors I think by default) that could be placed anywhere on screen. The limitation was 8 sprites per single scan line, so once a sprite was finished drawing, it could be reused elsewhere (lower) on the screen for another sprite. The Amiga also had blit hardware, which could, without CPU intervention (other than setting it up) blast multicolor graphics data to the bitplanes (with logical operations like AND, OR, XOR, etc). It also had a ton of DMA, so the CPU was spared copying memory around.
I had both an Amiga 500, and (nearly) exclusive use of an SGI at work, and I still found the Amiga more fun to program than the SGI.
Did the blitter abstract away the bitplanes, or did you have to repeat your operations for each bitplane?
Ah, you had to make me look it up 8-P [1]. At the hardware level, you do have to repeat the operations for each bitplane, but it's not that hard (the 68000 is there to script the hardware as it were). Once you set up the width, the height, the left and right masks (because you can shift the data up to 15 bits) and the operation (dest = src1 AND mask OR src2, that type of stuff), you then set up to three sources (say, the screen, a mask and the data) and one destination (the screen), do the blit and once it's done, update the appropriate sources and destination for the next bit plane.
You don't have to busy wait, the hardware can generate an interrupt when the blit is done. Or you can busy wait. Your choice.
There is, however, library calls you can do that will abstract that for you. You fill out a structure with the width, height, left and right masks and the data for each bitplane, and have the library code deal with the details for you.
[1] Fortunately, I have my Amiga Reference manuals (all three) right next to my desk.
RAM was too slow to update all pixels in real time. So being able to update one bit of 8 pixels at a time was useful, especially for tiled graphics.
For example, you could draw onto only one of the bitplanes to change most significant bit of the palette indices, shifting the colors to make effect similar to semi-transparency (actual semitransparency was too much of a luxury - no RGBA buffers, no horsepower for multiplication, float required user to buy an extension card! You could barely make a lookup table for precomputed palette).
You could dedicate 4 bits for background and 4 bits for foreground and scroll them independently by changing starting address of the bitplanes.
Planar graphics also made 5-bit and 6-bit (64-color) modes feasible, or at least equally painful as other depths.
But it was a painful bottleneck for graphics rendered pixel-by-pixel. For a while demoscene kept optimizing chunky2planar algorithms, but the overhead was one of the many nails in Amiga's coffin.