So you want to make pixel art for an Apple II...
I'm so sorry someone put you up to this.
But I'll provide some tips that can maybe help out.
I'm going to cover what a pixel artist needs to know
and try to avoid any technical explanations for *why* things
are such a pain (*cough* NTSC) (and I guess Woz isn't entirely blameless here).
Update! Was not expecting this to be so popular, sorry I don't
have the screen captures ready. I don't have a working
CRT anymore so captures are just with a capture card.
Applewin does a really
good job with the actual colors (it matches what you'd see on a CRT
better than the capture device does). The "real world" capture
will mostly show how the aspect ratio is a bit more squashed horizontally.
This is most noticeable
if you're drawing circles (and this is another case where it's adjustable
on a real TV so there's not necessarily a "right" answer to what the
value should be).
Capture card output is important in one case:
if I am capturing for a demoparty it's going to look like it
does from the capture card so keep that in mind.
Anyway, these are your pixelart options,
roughly ranked in level of complications
you'll encounter trying to make things work. (Honestly if you're making art
for me it might just be easier to make ZX Spectrum or IBM CGA art
as those convert relatively easily to Apple II).
- Monochrome hi-res 280x192
- Four color hi-res 140x192
- Six color hi-res 140x192
- Fifteen color lo-res (40x48)
- Text mode / Mouse-text
- Fifteen color double lo-res (80x48)
- Fifteen color double hi-res (140x192)
- Fifteen color cycle-counted mode (40x96)
Monochrome hi-res 280x192
This is the most straightforward. Just black and white, 280x192.
But there will be fringing when viewed on a color monitor. If a single
white pixel is alone with black on either side, it will end up purple/green
depending if it's in an even or odd column (optionally you can set things
up so it's blue/orange fringing if you prefer that for some reason).
Example: ycity by grongy (converted from ZX Spectrum by deater)
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Example: by @StuntmAEn_Bob
This is a 280x192 image, so note the alternating black/white
stipple pattern got turned to purple/green. Which might be an OK
compromise, but be aware it will happen.
You can avoid this effect by doing your art at 140x192 and then expanding it
to 280x192 and your pixels will stay (mostly) black and white.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Here is a detailed view where you can more easily see how the single-width
white pixels get turned into purple vs green depending on odd/even row.
Four-color hi-res, 140x192
This isn't a different mode, it's just easier to explain the limitations.
The screen is still 280x192, but you can paint in 4 colors
(black/white/purple/green) or (black/white/blue/orange), just be sure
the colored pixels are two columns wide. So think of it as 140x192
but stretched twice as wide. On a better paint program you can probably
configure an aspect ratio like that; when I do things I either just
do 140x192 and scale, or else do 280x192 but set up a 2-wide
grid and manually keep things aligned. IBM CGA graphics often map well to this
type of mode.
If you want to be fancy, black and white areas of the image can still be
one pixel wide but will end up with fringed colors.
Here are the two palettes I use, my tools recognize them when doing
image conversion. There's a lot of debate of exactly what the *actual*
colors are, but since most Apple II people were viewing on a poorly
adjusted TV you couldn't really guarantee exact values.
Example: based on Hires Rootbeer Logo, by Deater
This shows blue/orange palette, with lots of black spacing which reduces
chances for fringing. Note the black and white parts get away with
non-multiple of two spacing, though it leads to extra fringing
(this is primarily in the "Genuine" text in the image).
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Example: based on Peasant's Quest II, by @strongbadactual
This one is blue/orange as well, but shows colors touching each other
and the weird artifacts you can get at the interfaces.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Example: "Lake Cabin" by @starmanpixel, converted to Apple II by deater
Note this originally was blue/green but I converted it to purple/green here
because I don't have any good purple/green pictures. It's not as popular
a combination. Note that where colors meet up you get some slight
gaps.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Six-color hi-res, 140x192
Most people assume this should be easy to do, but you have color-clash
sort of like on ZX Spectrum (but on Apple II it's horizontal only,
no vertical clash).
The clash happens every 7 pixels (so every 3.5 "wide color pixels").
Skilled artists can do amazing things in this mode, but it has a distinctive
look as clashing colors will often have black or white padding to keep
them apart to avoid clashes.
Also be aware switching palettes shifts the pixels by a half-pixel amount
so if you look at the columns on the edge you can see it looks like the line
bends, that's why. There's technically two blacks and two whites (one for
each palette) so you can intentionally use one or the other to avoid this.
My tools recognize 0x010101 and 0xfefefe as the black/white that go with
the orange/blue palette.
Example: Scientist by dman for ZX Spectrum (converted to Apple II by deater)
Note that while I attempted to avoid all the color clash (often by hand,
slapping a 7 wide grid on it and adjusting as best I can) you can still
see some places that I missed.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Here's a more zoomed in view of a location I didn't enforce the 7-pixel wide
palette switch, and while my "png2hgr" tool does its best to pick the
correct
palette you'll see on the left you can't have green/orange together so
it picks one or the other causing a stair-step effect rather than the
original diagonal edge.
Something similar happens on the right side
where some green
in a majority of blue area and also got switched to orange.
Example: Dating XR by @strongbadactual
This is an example of a project I am currently working on showing some
of the challenges. The vertical lines on the side are white, but when
then change from being in blue/orange to purple/green domain you can
see they bend outward due to the 1/2 pixel shift. Trying to get
clashing colors too close to each other leads to glitches. Even
complementary colors next to each other can have white/black gaps.
And at the top the text that's too close has fringing.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
A zoom in on the jagged edge, showing the problem comes when a palette 1 white color
is above a palette 0 white color, and they are 1/2 pixel off each other.
The bumps at the top are because my "png2hgr" tool uses palette0 by default,
it should be smarter and take neighboring columns into account when trying
to figure out which black/white colors to use. As said previously you can
fix this manually by explicitly using the "other" black/white values
(0x010101 / 0xfefefe) when the tool isn't smart enough to figure it out.
One more example, even when using the same palette there will often
be unintentional borders when two colors meet up. See this example
of the purple/green on marzipan's dress. In hi-res graphics
two off subpixels next to each other will make black, and two
on subpixels will make white, no matter what the color is supposed to be.
(so in this case 101010 is purple and 010101 is green, and when they
meet in this way you get 10/01 at the boundary, and the double 0
turns into a thin black line).
Example: Apple II hires dithering patterns
You might note there are some common dithering patterns I use.
Here's a table that I use for reference, and what it looks like in emulator.
Note that alternating rows of purple/green are often used to approximate
grey, green/orange can be used to attempt yellow (but it's really an
ugly gold color), blue/green is a sort of blue-green color, and
blue/purple can give a darker blue:
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Fifteen-color lo-res, 40x48
I'm partial to this mode, though a lot of people think it is ugly.
It's really nice to program in because it's not much RAM and you can
actually update it at 60Hz, something that's not possible in the hi-res modes.
It's 40x48
but the pixels are again twice as wide so the aspect ratio should be stretched
and I often draw the images 80x48 instead but just made sure everything is
two wide. To confuse things my samples below I have things at 320x192 but
that's just so it's big enough to see, my tools generally expect 80x48.
Note there are weird NTSC color effects here, when you have two colors side
by side you'll usually get a weird unintended line of color in between.
A super skilled artist could maybe take this into account but that's rare.
Here is a rough approximation of the available colors, or at least the
ones the tools I write recognize. Note there are 16 colors, but 5 and 10
are both grey and on most Apple IIs (excepting the IIgs)
they display as the same color, but
they are actually 1/2 pixel shift off so can have artifacts if they
are next to each other. I often use color 10 for transparency because
it's redundant.
Example, from Apple II Mode7 demo by deater:
Note the edges and where colors join there are slight artifact colors.
Also some color pixels are slightly wider than others and tend to bulge
out if you look at a multi-color vertical line (like the 'L' in APPLE).
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Example, from Apple II Lo-res Escape demo by deater:
This is a boring example, but it's showing how you can use the two greys
here with the artifact clash to get sub-pixel effects. Note that
on the emulator view there are ridges in the columns which aren't visible
at all in the raw image. This is grey 5 and grey 10 being drawn next
to each other.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Text Mode, 40x24 (or 80x24 with 80-column card)
With text mode on older Apple IIs you're stuck with just plain ASCII
(though you can inverse or flash it). To make things annoying when they added
lowercase on the Apple IIe they shifted the pixels up to make room for
descenders so ASCII art ends up looking slightly different.
You can't reprogram the font, not a lot of opportunity here.
The enhanced Apple II added
"mouse text" characters designed to make text-based
GUI interfaces. This adds the potential for better ASCII art, but in practice
the new symbols are not really good for much.
Example: "Notamoon" demo by Deater, using mousetext.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
... |
|
TODO |
Fifteen color double lo-res (80x48) (needs Apple IIe/IIc/IIgs)
This is a mode only available on Apple IIe and newer machines.
Same colors as regular
15-color lo-res but twice the horizontal resolution. It's actually a nice
compromise in a lot of ways, but it was rarely used. It's also a bit
of a pain to program but that's beyond the scope of this.
Example: original ZX Spectrum art by helpcomputer0 converted by Deater
Note that though 80x48 is a nice resolution, the pixels aren't always the
same size (notice the grey columns, some are wider than others). Also
you'll still notice some NTSC color fringing at edges and where colors
meet.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Example: by @phubans (?) (I need to be better at documenting
sources of images)
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Fifteen color double hi-res (140x192) (Needs Apple IIe/IIc/IIgs)
This mode lets you get all 15 lo-res colors, but in hi-res! Amazing!
Technically it's 560x192 monochrome, but with colors you only get
(double-width) 140x192.
This is a *huge* pain to program, and takes up 16k of RAM.
Also despite some of the screenshots you see of the
Dazzledraw Butterfly, there's even more NTSC fringing so don't expect
your nice 140x192 raw image to look exactly the same on an actual machine.
If you're clever you intentionally pick colors to include the
NTSC fringe colors
but that's a bit over the top.
See here
for tables showing what exact artifacts happen when colors are next
to each other.
Example: Butterfly from Dazzledraw Slideshow Disk
This is the most famous piece of Double Hi-res art. An expert did this,
people are often demoralized trying to make something that looks this good.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Example: A New Clown in Town by thUg
This artwork was drawn in 280x192 so half the columns got lost because the
mode really is only 140x192, double-wide. In addition if you look at
things like the lights on the buildings you can see that thin bands of color
and boundaries where colors touch can have unexpected artifact effects.
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
TODO |
Fifteen color cycle-counted mode (40x96)
This isn't really a mode, it's two screens of lo-res interleaved.
I have some demos that use this mode, it's done via cycle counted mode switching
using the "vapor lock" technique and takes up essentially all the CPU.
It also is only so useful because of the
weird rectangle shape of the pixels, though the Atari 2600 people get
by with that so maybe this mode could be used for more.
Example: Apple II from "Apple II Cycle-Counting Megademo" by Deater
Image | Viewed in AppleWin Emulator | Captured from real Hardware |
|
|
|
See my Demoscene Demos
To my Demakes Page
Back to Apple II Page