VT02+ CHR Pattern Data Layout
The layout of CHR pattern data differs between the different video modes available on the VTxx series of Famiclone consoles.
Two bits per pixel
In 2bpp mode, CHR pattern data layout is the same as on the original NES/Famicom, with each tile's CHR data occupying sixteen bytes, and the two bitplanes' data stored sequentially:
Byte Bit Meaning Byte Bit Meaning ---------------- ---------------- 0 7 pixel Y=0 X=0, bit 0 8 7 pixel Y=0 X=0, bit 1 0 6 pixel Y=0 X=1, bit 0 8 6 pixel Y=0 X=1, bit 1 0 5 pixel Y=0 X=2, bit 0 8 5 pixel Y=0 X=2, bit 1 0 4 pixel Y=0 X=3, bit 0 8 4 pixel Y=0 X=3, bit 1 0 3 pixel Y=0 X=4, bit 0 8 3 pixel Y=0 X=4, bit 1 0 2 pixel Y=0 X=5, bit 0 8 2 pixel Y=0 X=5, bit 1 0 1 pixel Y=0 X=6, bit 0 8 1 pixel Y=0 X=6, bit 1 0 0 pixel Y=0 X=7, bit 0 8 0 pixel Y=0 X=7, bit 1 1 7 pixel Y=1 X=0, bit 0 9 7 pixel Y=1 X=0, bit 1 1 6 pixel Y=1 X=1, bit 0 9 6 pixel Y=1 X=1, bit 1 1 5 pixel Y=1 X=2, bit 0 9 5 pixel Y=1 X=2, bit 1 1 4 pixel Y=1 X=3, bit 0 9 4 pixel Y=1 X=3, bit 1 1 3 pixel Y=1 X=4, bit 0 9 3 pixel Y=1 X=4, bit 1 1 2 pixel Y=1 X=5, bit 0 9 2 pixel Y=1 X=5, bit 1 1 1 pixel Y=1 X=6, bit 0 9 1 pixel Y=1 X=6, bit 1 1 0 pixel Y=1 X=7, bit 0 9 0 pixel Y=1 X=7, bit 1 2 7 pixel Y=2 X=0, bit 0 A 7 pixel Y=2 X=0, bit 1 : : : : : : 7 7 pixel Y=7 X=7, bit 0 F 7 pixel Y=7 X=7, bit 1 All numbers hexadecimal.
Four bits per pixel, 8 bit data bus
Available on the VT03 and later consoles, the 4bpp mode expands the same plane-sequential system, so that each tile's CHR data now occupies thirty-two bytes:
Byte Bit Meaning Byte Bit Meaning Byte Bit Meaning Byte Bit Meaning ---------------- ---------------- ---------------- ---------------- 00 7 pixel Y=0 X=0, bit 0 08 7 pixel Y=0 X=0, bit 1 10 7 pixel Y=0 X=0, bit 2 18 7 pixel Y=0 X=0, bit 3 00 6 pixel Y=0 X=1, bit 0 08 6 pixel Y=0 X=1, bit 1 10 6 pixel Y=0 X=1, bit 2 18 6 pixel Y=0 X=1, bit 3 00 5 pixel Y=0 X=2, bit 0 08 5 pixel Y=0 X=2, bit 1 10 5 pixel Y=0 X=2, bit 2 18 5 pixel Y=0 X=2, bit 3 00 4 pixel Y=0 X=3, bit 0 08 4 pixel Y=0 X=3, bit 1 10 4 pixel Y=0 X=3, bit 2 18 4 pixel Y=0 X=3, bit 3 00 3 pixel Y=0 X=4, bit 0 08 3 pixel Y=0 X=4, bit 1 10 3 pixel Y=0 X=4, bit 2 18 3 pixel Y=0 X=4, bit 3 00 2 pixel Y=0 X=5, bit 0 08 2 pixel Y=0 X=5, bit 1 10 2 pixel Y=0 X=5, bit 2 18 2 pixel Y=0 X=5, bit 3 00 1 pixel Y=0 X=6, bit 0 08 1 pixel Y=0 X=6, bit 1 10 1 pixel Y=0 X=6, bit 2 18 1 pixel Y=0 X=6, bit 3 00 0 pixel Y=0 X=7, bit 0 08 0 pixel Y=0 X=7, bit 1 10 0 pixel Y=0 X=7, bit 2 18 0 pixel Y=0 X=7, bit 3 01 7 pixel Y=1 X=0, bit 0 09 7 pixel Y=1 X=0, bit 1 11 7 pixel Y=1 X=0, bit 2 19 7 pixel Y=1 X=0, bit 3 01 6 pixel Y=1 X=1, bit 0 09 6 pixel Y=1 X=1, bit 1 11 6 pixel Y=1 X=1, bit 2 19 6 pixel Y=1 X=1, bit 3 01 5 pixel Y=1 X=2, bit 0 09 5 pixel Y=1 X=2, bit 1 11 5 pixel Y=1 X=2, bit 2 19 5 pixel Y=1 X=2, bit 3 01 4 pixel Y=1 X=3, bit 0 09 4 pixel Y=1 X=3, bit 1 11 4 pixel Y=1 X=3, bit 2 19 4 pixel Y=1 X=3, bit 3 01 3 pixel Y=1 X=4, bit 0 09 3 pixel Y=1 X=4, bit 1 11 3 pixel Y=1 X=4, bit 2 19 3 pixel Y=1 X=4, bit 3 01 2 pixel Y=1 X=5, bit 0 09 2 pixel Y=1 X=5, bit 1 11 2 pixel Y=1 X=5, bit 2 19 2 pixel Y=1 X=5, bit 3 01 1 pixel Y=1 X=6, bit 0 09 1 pixel Y=1 X=6, bit 1 11 1 pixel Y=1 X=6, bit 2 19 1 pixel Y=1 X=6, bit 3 01 0 pixel Y=1 X=7, bit 0 09 0 pixel Y=1 X=7, bit 1 11 0 pixel Y=1 X=7, bit 2 19 0 pixel Y=1 X=7, bit 3 02 7 pixel Y=2 X=0, bit 0 0A 7 pixel Y=2 X=0, bit 1 12 7 pixel Y=2 X=0, bit 2 1A 7 pixel Y=2 X=0, bit 3 : : : : : : : : : : : : 07 7 pixel Y=7 X=7, bit 0 0F 7 pixel Y=7 X=7, bit 1 17 7 pixel Y=7 X=7, bit 2 1F 7 pixel Y=7 X=7, bit 3 All numbers hexadecimal.
Four bits per pixel, 8 bit data bus
The VT16 (and presumably the VT09) offer an alternative 4bpp mode that allows two bytes to be fetched in one 16 bit read operation. Its purpose is described as allowing the use of slower memory chips. It resembles the Super NES 4bpp tile format except that bit planes 1 and 2 of each tile are swapped.
Byte Bit Meaning Byte Bit Meaning ------------------ ------------------ 00/01 F pixel Y=0 X=0, bit 2 10/11 F pixel Y=0 X=0, bit 3 00/01 E pixel Y=0 X=1, bit 2 10/11 E pixel Y=0 X=1, bit 3 00/01 D pixel Y=0 X=2, bit 2 10/11 D pixel Y=0 X=2, bit 3 00/01 C pixel Y=0 X=3, bit 2 10/11 C pixel Y=0 X=3, bit 3 00/01 B pixel Y=0 X=4, bit 2 10/11 B pixel Y=0 X=4, bit 3 00/01 A pixel Y=0 X=5, bit 2 10/11 A pixel Y=0 X=5, bit 3 00/01 9 pixel Y=0 X=6, bit 2 10/11 9 pixel Y=0 X=6, bit 3 00/01 8 pixel Y=0 X=7, bit 2 10/11 8 pixel Y=0 X=7, bit 3 00/01 7 pixel Y=0 X=0, bit 0 10/11 7 pixel Y=0 X=0, bit 1 00/01 6 pixel Y=0 X=1, bit 0 10/11 6 pixel Y=0 X=1, bit 1 00/01 5 pixel Y=0 X=2, bit 0 10/11 5 pixel Y=0 X=2, bit 1 00/01 4 pixel Y=0 X=3, bit 0 10/11 4 pixel Y=0 X=3, bit 1 00/01 3 pixel Y=0 X=4, bit 0 10/11 3 pixel Y=0 X=4, bit 1 00/01 2 pixel Y=0 X=5, bit 0 10/11 2 pixel Y=0 X=5, bit 1 00/01 1 pixel Y=0 X=6, bit 0 10/11 1 pixel Y=0 X=6, bit 1 00/01 0 pixel Y=0 X=7, bit 0 10/11 0 pixel Y=0 X=7, bit 1 02/03 F pixel Y=1 X=0, bit 2 12/13 F pixel Y=1 X=0, bit 3 02/03 E pixel Y=1 X=1, bit 2 12/13 E pixel Y=1 X=1, bit 3 02/03 D pixel Y=1 X=2, bit 2 12/13 D pixel Y=1 X=2, bit 3 02/03 C pixel Y=1 X=3, bit 2 12/13 C pixel Y=1 X=3, bit 3 02/03 B pixel Y=1 X=4, bit 2 12/13 B pixel Y=1 X=4, bit 3 02/03 A pixel Y=1 X=5, bit 2 12/13 A pixel Y=1 X=5, bit 3 02/03 9 pixel Y=1 X=6, bit 2 12/13 9 pixel Y=1 X=6, bit 3 02/03 8 pixel Y=1 X=7, bit 2 12/13 8 pixel Y=1 X=7, bit 3 02/03 7 pixel Y=1 X=0, bit 0 12/13 7 pixel Y=1 X=0, bit 1 02/03 6 pixel Y=1 X=1, bit 0 12/13 6 pixel Y=1 X=1, bit 1 02/03 5 pixel Y=1 X=2, bit 0 12/13 5 pixel Y=1 X=2, bit 1 02/03 4 pixel Y=1 X=3, bit 0 12/13 4 pixel Y=1 X=3, bit 1 02/03 3 pixel Y=1 X=4, bit 0 12/13 3 pixel Y=1 X=4, bit 1 02/03 2 pixel Y=1 X=5, bit 0 12/13 2 pixel Y=1 X=5, bit 1 02/03 1 pixel Y=1 X=6, bit 0 12/13 1 pixel Y=1 X=6, bit 1 02/03 0 pixel Y=1 X=7, bit 0 12/13 0 pixel Y=1 X=7, bit 1 : : : : : : 0E/0F 0 pixel Y=7 X=7, bit 0 1E/1F 8 pixel Y=7 X=7, bit 1 All numbers hexadecimal. Little-endian byte order.