We’ve talked about the benefits of becoming an Autopian member before: it helps to support good, independent media in these difficult times, I’ll draw you a car for your birthday, you’ll get some great swag and merch, and you’ll be privy to special content, events, and warm hugs from Autopian staffers (consent permitting).
For those Autopian Velour and RCL members who renewed, I want to give a rundown of a new perk, one that replaces the hand-drawn car drawing on your birthday: a unique, custom-generated robot image made with hand-drawn graphics by me and rendered on a real 1982-vintage Apple ][+ computer.
If you’ll indulge me, I’d like to explain why I’m doing this and why I think it’s cool – and force you to understand a bit about the strange world of 1970s computer graphics.
First, I should explain why we’re doing this thing that, upon first glance, seems painfully close to all that NFT bullshit that was urinating in the soup of human culture not that long ago. The goal wasn’t anything like that. The goal was to give myself a bit of a break! You see, I love doing car drawings for members, but when we promised that, we didn’t think through what that would mean as things scaled up, and for renewing members. Would I need to draw cars for every member’s birthday, every year? I’m already so behind on drawings! I needed to figure out some way to get renewing members something unique, hand-made, and cool without, you know, pushing myself too far. Because I, uh, shouldn’t.
So, some way to automate these member drawings would be good! But I don’t want to use some AI image generator like Midjourney or whatever – that feels wrong, and part of what we want to offer our members is something personal, something that actually comes from me, because I appreciate every member, dammit. Some cold, unfeeling AI can’t do that!
That’s when I realized I could leverage my other, non-car obsession – archaic computers – into helping me out, for a change. I could automate the process of art-making by hand-making a lot of graphical pieces, and then writing a program in BASIC to randomly put those parts together to make something unique and fun! That way, members get a unique bit of art – or at least something art-adjacent – that I hand-made, while at the same time could be automatically generated in quantity.
Okay, But Why Robots?
In the interests of full disclosure, I have to tell you that David has issues with this part of the project. David, quite reasonably, notes that this is a car website, and we should be delivering car images to our members, not robots! David was a bit indignant about this, and even spit-took some of the PB Blaster cocktail he was drinking in rage when he found out about the robots.
And, yes, I agree, cars would be ideal! But I decided to go with robots – for this year at least, I think I will be making car graphics for next year’s renewal images – for one very good reason, which I think you can infer from this image of the Apple //c system running the software I use to make the graphical elements:
Making the graphics is an ass-pain. For this to work, I need a lot of discrete elements I can mix-and-match to create whole images. These graphics are made individually and stored in something Applesoft BASIC calls a shape table. I use a utility from 1984, called The Complete Graphics System from Penguin software to build my shape tables, and I use that joystick you see there to do so. It is a tedious process, with a capital -edious, and I had already built the set of robot heads and bodies and legs, so I figured why not leverage them for this? Robots are sort of in the general Autopian wheelhouse, sort of, right? I mean, I like them?
Look, David isn’t wrong, but also I don’t think it’s a horrible affront to offer robots here. We’ll do cars for next years’ birthdays, okay? I just need some time to build all those elements!
Let’s Talk About How Weird Apple II Graphics Are
Now, part of the reason why I’m so into this ridiculous stuff is that I have a strange fetish, artistically, for limitations. I love limitations. Limitations force creativity to thrive, and the stranger the limitations, the better. The Apple II platform, first developed in 1977, is an absolute bouquet of strange and fascinating and difficult graphical limitations, and so I find it really rewarding to work with.
The Apple II was the first personal computer normal people could consider owning that was even capable of color graphics. The way the Apple II managed to provide color graphics in an era long before specialized graphics chips or cards or standards is a tribute to the incredible genius and creativity of its designer, Steve Wozniak. All Apple II color graphics are possible because of quirks in the way televisions draw images on screens. As far as the Apple II knows, it’s just generating black and white pixels, that’s it.
But, when patterns of those pixels are sent out as an NTSC video signal, they get interpreted as colors, thanks to something known as artifact color. The Apple II isn’t really generating a color signal – it’s generating a series of pixels that the display device – a TV or monitor or projector or whatever – confuses for colors, but the end result is color on the screen, so that’s good enough!
Here, look at this. This is how the robot looks on a color monitor:
But, on a monochrome monitor, you can see how the colors are really generated: patterns of vertical lines:
Those images are from an emulator; on a real CRT monitor, you can see color fringing on the vertical lines of the text, too, since the monitor is trying to interpret those lines as color:
Weird, right? Now, these vertical line patterns are just even or odd: so, even lines are green, odd are purple, two dots next to one another are white, and all off is black. So that’s four colors. But the Apple II high-resolution screen can do six colors! How is that possible?
Well, it’s possible with more weirdness, specifically moving things a half pixel. Yes, the Apple II can shift pixels by half-pixels if needed to get two more colors. That also means even though the screen is 280×192 pixels big, which by modern standards is tiny, as you can see here with this actual-size 280×192 image:
…but it also means it can really place pixels at 560 points across the screen. Of course, because color requires even/odd pixel patterns, the effective resolution for color is only 140 pixels wide. But you can mix monochrome 280-pixel images on the same screen, if you want. This also means that the set of colors from the half-pixel-shifted set (orange and blue, if you’re wondering) will clash with the green/purple colors, so you have to be careful about having them next to one another, horizontally.
So, when I build the robots, I do some things to get the most colors I can per robot. Since each robot is made of a randomly-selected head, midsection, and lower body, before I draw each segment I randomly pick which color group will be used. Each color group has its own black and white, and by filling in the area where the robot part will be drawn with the black from a given group, I am moving the pixels in that area a half-pixel either way.
So, if the random number generator says use color group 1, the pixels don’t shift. If the random generator says use color group 2, I fill the area with the other black, and shift the pixels by a half-pixel, meaning the image I draw there will use orange, blue, white and black instead of green, purple, white and black. Here’s an example where the top two segments use color group 1, and the bottom segment uses color group 2:
It seems like an ass-pain, right? And yeah, it kinda is, but it’s also how you got full-color (well, six color) high-resolution graphics without expensive specialized hardware back in 1977!
Also, I love this kind of crap. I love the slightly blurry look of the colors on a composite CRT monitor, I love all the crazy hoops I have to jump through to get lots of colors in these robots, this sort of inanity is my kink.
How Do I Get It From That Old-Ass Computer To You?
I could keep going on Apple II graphical weirdness, but I’m not that cruel. Besides, there’s another mystery to sort out here: how are we getting images generated on a 1982 Apple II Plus onto the internet? This part is a big deal for me, because I do not want to use an emulator or anything like that – these images need to be generated on real hardware, because that’s important to me, and, I hope, you. Also, I want the look of a real CRT, because emulators just don’t quite do Apple II graphics justice.
So, to manage this, I’m leveraging one of my favorite parts of the Apple II design: the Game I/O port.
You see, the Apple II had a really interesting game port, something that was normally used to plug in joysticks and paddles for games, but could be used for so much more. In addition to the inputs for push buttons and paddle potentiometers, the internal game port also had outputs, called “annunciators,” and these could send a small amount of voltage as a signal to a given pin on the port based on program control.
This allowed for all sorts of things: people have built MIDI interfaces and robot-arm controllers and home automation systems for the game port, so why can’t I use it to make things for Velour and RCL members?
So, here’s what I did: I used one of the annunciator ports and connected it to a little relay, which I then connected to a jack that would plug into the remote trigger port of this Canon DSLR camera I had laying around. Well, my friend Rob Terrell actually was nice enough to build the cable for me, so thanks, Rob.
In my BASIC program, after I generate the robot image and then randomly pick the robot’s name and display it all, I tell the computer to POKE -16295,0 which triggers Annunciator 0 at pin 15 to fire, which triggers the camera shutter, taking a picture of the Apple II’s CRT screen. Then, I reset the annunciator, clear the screen, and start over!
And, it mostly works! Sure, I get some unwanted reflections on the screen at times, and sometimes the flash wants to go off and that screws up the timing of things, but for the most part, I can get about 250 robot pictures taken before the battery dies.
Here it is in action:
So, this is all a hell of a lot of explanation for why renewing members will get silly-looking 8-bit robots with funny names on their birthdays. Even if David doesn’t like the idea of robots, I know he likes the idea of deep, technical dives, so hopefully this has made him at least a little happy.
For everyone else, I hope you like your new robot pals! They were made with love and, yes, a lot of healthy tedium!