VT02+ CHR Pattern Data Layout: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Created page with "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...")
 
Line 52: Line 52:
  All numbers hexadecimal.
  All numbers hexadecimal.
=Four bits per pixel, 8 bit data bus=
=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.
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             
  Byte  Bit  Meaning                Byte  Bit  Meaning             
  ------------------                ------------------       
  ------------------                ------------------       

Revision as of 05:11, 4 January 2018

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.