In ROM, a character is defined by a matrix of 8x8 pixels, with 2 bits per pixel. This makes it possible to store 4 pixels in a byte, and a whole in 16 bytes. Within a byte the bits are arranged in the following order:
Bit | Description |
0 | Bit 0 of pixel #1 |
1 | Bit 0 of pixel #2 |
2 | Bit 0 of pixel #3 |
3 | Bit 0 of pixel #4 |
4 | Bit 1 of pixel #1 |
5 | Bit 1 of pixel #2 |
6 | Bit 1 of pixel #3 |
7 | Bit 1 of pixel #4 |
If the character pixel at X, Y is aXY then a character has the following layout:
a00 a10 ... a70 a01 ... a71 ... ... a07 a17 ... a77
and the first eight bytes in the character map define the lower four rows:
a77:bit1 a76:bit1 a75:bit1 a74:bit1 a77:bit0 a76:bit0 a75:bit0 a74:bit0 a67:bit1 a66:bit1 a65:bit1 a64:bit1 a67:bit0 a66:bit0 a65:bit0 a64:bit0 a57:bit1 a56:bit1 a55:bit1 a54:bit1 a57:bit0 a56:bit0 a55:bit0 a54:bit0 a47:bit1 a46:bit1 a45:bit1 a44:bit1 a47:bit0 a46:bit0 a45:bit0 a44:bit0 a37:bit1 a36:bit1 a35:bit1 a34:bit1 a37:bit0 a36:bit0 a35:bit0 a34:bit0 a27:bit1 a26:bit1 a25:bit1 a24:bit1 a27:bit0 a26:bit0 a25:bit0 a24:bit0 a17:bit1 a16:bit1 a15:bit1 a14:bit1 a17:bit0 a16:bit0 a15:bit0 a14:bit0 a07:bit1 a06:bit1 a05:bit1 a04:bit1 a67:bit0 a06:bit0 a05:bit0 a04:bit0
The following eight bytes define the upper rows with an identical layout.
It might seem strange that the pixels in a byte are arranged in columns rather than in rows, but this an artifact due to the screen being rotated by ninety degrees in the cabinet. I have decided to talk directly in terms of the actual screen but if we consider the natural screen layout then pixels do take the more usual arrangement where pixels in a byte refer to pixels that are in the same row.
Copyright (c) 1997-2004 Alessandro Scotti. All rights reserved.