Apple ][ -- Riven Graphics Tradeoffs
As always with my Apple II graphics works people
second-guess the choices I make.
I tend to do a lot of semi-custom things by hand when converting
the graphics. A frequent question is: "Can't you just automate this
with a tool?" And of course you can, but I don't always like the results,
and also the resulting images often don't compress as well (which matters
when you're trying to fit as many as possible on a 140k floppy disk,
and since disk is slow they also need to be cached in 48k of RAM).
It's a bit beyond this document to go into the details of Apple II
"hi-res" graphics mode, but needless to say Woz extensively optimized the
hardware at the expense of programmability. You roughly get
280x192 resolution in 6 colors in an 8k weirdly-interleaved framebuffer.
There are all kinds of weird limitations.
Really the resolution in color is 140x192, and also each byte holds 3.5
pixels, and those 3.5 pixel chunks can pick one of two palettes
(purple/green or blue/orange) with all manner of color clash.
For comparison purposes I will show the results of a few tools.
Most people seem to like ii-pix best but it has limitations (it's hard
to setup and use and the results often don't compress well).
The various methods showcased are:
- Naive via the gimp (scale image to 280x192 and tell it
to automatically convert to the Apple II palette
with Floyd-Steinberg dithering, while knowing
nothing about Apple II color rules).
- Me, converting by hand and painting with dither patterns.
- ii-pix
by Kris Kennaway (default settings)
- bmp2dhr
by Bill Buckels (Floyd-Steinberg dithering)
The results below are with the AppleWin emulator, if I had more time
I'd gather results on actual hardware.
The sizes given are the image data compressed with ZX02 compression.
Original Image from the Game |
---|
|
|
Auto-converted by the Gimp |
---|
6689 bytes
|
5668 bytes
|
Auto-converted by bmp2dhr |
---|
6496 bytes
|
5241 bytes
|
Auto-converted by ii-pix |
---|
5050 bytes
|
2172 bytes
|
Hand-converted by me |
---|
4368 bytes
|
3134 bytes
|
You might ask are there other ways to create graphics that might be
smaller but still look nice?
- One way is to use the Apple II 40x48 15-color "lo-res" mode.
The Myst Demake used this mode
as do the movie scenes from Riven here. Those compress
down to 256 bytes or so, but involve extensive rotoscoping
of the scenes and a lot of people don't like lo-res.
- Another way is to use something like AGI or the old
Sierra games, where the graphics are redrawn as a series
of colors and polygons in a more cartoony style.
This can save space, but isn't going to look as good.
- Finally, an actual artist who knows what they are doing
could likely redraw the scenes to keep some of
the photo-realism while keeping compression in mind.
Back to the Riven-on-a-floppy page