Para hacernos una idea de la salida del VDP vamos a empezar hablando de los caracteres.

Como ya dije, los caracteres son la mínima unidad representable y ocupan 8×8 píxeles.

Cada caracter está representado por 32 bytes de la VRAM del VDP, luego teniendo 16 KBytes de RAM es trivial que podremos representar 512 caracteres en dicha memoria. Aunque, como veremos más adelante, hay zonas de esta memoria ocupadas por otras unidades de información, al VDP eso le da igual.

De los 32 bytes de cada caracter, cada 4 de ellos se usan para representar una fila de las 8 que lo componen. El color se obtiene de los 4 planos de bits formados por estos 4 bytes.

Por ejemplo, el primer caracter (ocupa las direcciones 0 a 31 de la VRAM) estaría formado por los bytes:

FF, 00, FF, 00, 00, 00, C0, C0, 00, 00, C0, C0, 00, 00, C0, C0, 00, 00, C0, C0, 00, 00, C0, C0, 00, 00, C0, C0, 00, 00, C0, C0, 00, FF, 00 y 00.

Desglosado en sus bits sería:


Byte b7 b6 b5 b4 b3 b2 b1 b0



0 1 1 1 1 1 1 1 1 c0 FIRST PIXEL ROW:
1 0 0 0 0 0 0 0 0 c1 '0101' = color #5
2 1 1 1 1 1 1 1 1 c2
3 0 0 0 0 0 0 0 0 c3

4 0 0 0 0 0 0 0 0 c0 SECOND PIXEL ROW:
5 0 0 0 0 0 0 0 0 c1 '1100' = color #12,
6 1 1 0 0 0 0 0 0 c2 '0000' = color #0.
7 1 1 0 0 0 0 0 0 c3

8 0 0 0 0 0 0 0 0 c0 THIRD PIXEL ROW
9 0 0 0 0 0 0 0 0 c1
10 1 1 0 0 0 0 0 0 c2
11 1 1 0 0 0 0 0 0 c3

12 0 0 0 0 0 0 0 0 c0 FOURTH PIXEL ROW
13 0 0 0 0 0 0 0 0 c1
14 1 1 0 0 0 0 0 0 c2
15 1 1 0 0 0 0 0 0 c3

16 0 0 0 0 0 0 0 0 c0 FIFTH PIXEL ROW
17 0 0 0 0 0 0 0 0 c1
18 1 1 0 0 0 0 0 0 c2
19 1 1 0 0 0 0 0 0 c3

20 0 0 0 0 0 0 0 0 c0 SIXTH PIXEL ROW
21 0 0 0 0 0 0 0 0 c1
22 1 1 0 0 0 0 0 0 c2
23 1 1 0 0 0 0 0 0 c3

24 0 0 0 0 0 0 0 0 c0 SEVENTH PIXEL ROW
25 0 0 0 0 0 0 0 0 c1
26 1 1 0 0 0 0 0 0 c2
27 1 1 0 0 0 0 0 0 c3

28 0 0 0 0 0 0 0 0 c0 EIGHTH PIXEL ROW
29 1 1 1 1 1 1 1 1 c1 '0010' = color #2
30 0 0 0 0 0 0 0 0 c2
31 0 0 0 0 0 0 0 0 c3

Como vemos, cada cuatro bytes forman una fila y el color asociado se obtiene leyendo de “abajo a arriba”, es decir, del byte 3 al 0, del 7 al 4, etc.

Se puede observar que en este ejemplo solo se usan 4 colores, en concreto los correspondientes al índice de la paleta número 0, 2, 5 y 12. Como ya veremos estos colores pueden ser cualquiera de los soportados siempre que estén en la posición indicada dentro de la paleta.

Suponiendo que los índices se correspondieran con los siguientes colores (podría ser cualquier color, esto es un supuesto):

  • 0 -> Blanco.
  • 2 -> Rojo.
  • 5 -> Azul.
  • 12 -> Verde.
Quedaría una imagen tal que así:

A partir de pequeñas imágenes como ésta es como está formada todo el área visible que representará el VDP, es decir, los sprites y tiles.

Espero que esto haya quedado claro, pues es la base de todo lo que viene después. Mañana hablaré de los tiles.