Classic 8×8-pixel B&W Mac patterns
TL;DR: I made a website for the original classic Mac patterns
I was working on something and thought it would be fun to use one of the classic Mac black-and-white patterns in the project. I'm talking about the original 8×8-pixel ones that were in the original Control Panel for setting the desktop background and in MacPaint as fill patterns.
Screenshots via to Marcin's awesome interactive history
I figured there'd must be clean, pixel-perfect GIFs or PNGs of them somewhere on the web. And perhaps there are, but after poking around a bit, I ran out of energy for that, but by then had a head of steam for extracting the patterns en masse from the original source, somehow. Then I could produce whatever format I needed for them.
There are 38 patterns, introduced in the original System 1.0 in the 1984 debut of the Macintosh. They were unchanged in later versions, so I decided to get them from a System 6 disk, since that's a little easier with access to utility programs.
Preparation
- Download Mini vMac.
- Acquire "old world" Mac ROMs.
- Download a System 6 startup disk image.
- Download ExportFl disk image.
- Download sitPack disk image.
- Install "The Unarchiver" (
brew install --cask the-unarchiver
) - Install the Xcode command-line tools.
Extraction process
Start System 6 (drag the ROM onto the Mini vMac icon, then drag the System 6 disk onto the window when you see the flashing floppy disk). Mount the ExportFl and sitPack disks by dragging their files and dropping on the classic Mac desktop.
In emulation
Double-click sitPack to launch the program. Command-O to open, then navigate to the startup disk by clicking "Drive". Scroll to find "System Folder" and double-click on it. Scroll to the bottom, select "System" and click "Open". Save the output file as "System.sit" in the top-level of the startup disk. Quit sitPack back to the Finder.
Start the ExportFl program. Command-O or pick "Open" from the "File" menu. Find the "System.sit" created in the last step and click "Open". A regular file save dialog will appear on the modern Mac, pick a location and save the file.
On the modern Mac
Drag the "System.sit" file onto The Unarchiver, or open the file from within it. This will produce a file called "System" (with no extension).
Run DeRez (part of the Xcode developer command-line tools) on the System file.
I first added /Library/Developer/CommandLineTools/usr/bin
to my $PATH
, then
ran:
$ DeRez -only PAT\# System > patterns.r
This produces a text representation of the PAT#
resource in the System file.
It's a series of bytes that comprise 38 8×8 patterns meant for QuickDraw
commands. There's a leading big-endian unsigned 16-bit number (0026
) to indicate the number of 8-byte patterns to follow.
data 'PAT#' (0, purgeable) {
$"0026 FFFF FFFF FFFF FFFF DDFF 77FF DDFF"
$"77FF DD77 DD77 DD77 DD77 AA55 AA55 AA55"
$"AA55 55FF 55FF 55FF 55FF AAAA AAAA AAAA"
$"AAAA EEDD BB77 EEDD BB77 8888 8888 8888"
$"8888 B130 031B D8C0 0C8D 8010 0220 0108"
$"4004 FF88 8888 FF88 8888 FF80 8080 FF08"
$"0808 8000 0000 0000 0000 8040 2000 0204"
$"0800 8244 3944 8201 0101 F874 2247 8F17"
$"2271 55A0 4040 550A 0404 2050 8888 8888"
$"0502 BF00 BFBF B0B0 B0B0 0000 0000 0000"
$"0000 8000 0800 8000 0800 8800 2200 8800"
$"2200 8822 8822 8822 8822 AA00 AA00 AA00"
$"AA00 FF00 FF00 FF00 FF00 1122 4488 1122"
$"4488 FF00 0000 FF00 0000 0102 0408 1020"
$"4080 AA00 8000 8800 8000 FF80 8080 8080"
$"8080 081C 22C1 8001 0204 8814 2241 8800"
$"AA00 40A0 0000 040A 0000 0384 4830 0C02"
$"0101 8080 413E 0808 14E3 1020 54AA FF02"
$"0408 7789 8F8F 7798 F8F8 0008 142A 552A"
$"1408"
};
It would have been simple enough to parse this text, but I had Claude quickly make a Python program to do so and output them in .pbm format, which is part of the Netpbm image format class. This is a simple image format that is text-based, a '1' or a '0' indicating a black or white pixel in a row and column.
For example, this subway tile pattern is represented like
this in .pbm:
P1
8 8
1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0
From here, I can generate image files for the patterns in any format and
resolution I want, using ImageMagick or similar. It's important when scaling the
patterns to use -filter point
, so that ImageMagick doesn't try to interpolate
the pixels it needs to fill in, which would lead to blurry results.
Why do all this?
It's nostalgic, I have a fondness for these old patterns and the original B&W Mac aesthetic, it reminds me of playing games like Dark Castle and Glider, messing around with HyperCard, and using Tex-Edit and hoarding early shareware programs.
The whole point of the above is to get a copy of the System file out with the resource fork intact, that's where the desktop patterns live.
According to old classic Mac manuals, the patterns were QuickDraw bit-pattern resources, a simple bitmap of 8 bits per row packed into 8 bytes (columns). It was fast for QuickDraw to copy them over an area of the screen. For example the following pattern was used for the default gray desktop pattern on black-and-white Mac screens.
I could have extracted all 38 patterns other ways: I could have screenshotted each one, I could have looked at each one and hand-written .pbm files, both of which would have been tedious and error-prone.
Ultimately, I wanted to extract the exact original data from the source (or close enough copy thereof) and have the patterns in a format I considered archival for this limited purpose (.pbm files are trivial to parse and manipulate).
Head over to my pattern site to get the patterns for yourself.
(Credit for replica Geneva 9pt and Chicago 12pt fonts)