Este artículo intenta explicar el funcionamiento del modo 13h de video, conocido también como modo13, es el modo de video mas utilizado por los viejos video juegos de dos y algunos de linux debido a su facilidad de uso y excelentes tiempos de respuesta.

El modo 13h, es un estándar de las placas VGA que sobresale del resto por sus tiempos de respuesta y simplicidad en el manejo. Posee una resolución de 320x200 píxeles y una paleta de colores de 8 bits.

Para poder explicar el porque de los tiempos de respuesta del modo 13h, es necesario entender primero que las placas de video poseen un área de memoria virtual (000A:0000 a 000A:FFFF) la cual utilizan para recibir los píxeles que serán vistos en pantalla. Esta área de memoria posee un tamaño de 64KB (65536 bytes), lo que indica que el mayor volumen de datos que se puede enviar a la placa de video de una vez, es de 64KB.

Ahora si, se puede explicar el porque de los tiempos de respuesta del modo 13h: el modo 13h, posee una resolución de 320x200 píxeles con una paleta de colores de 8 bits (1 byte). De ahí se puede averiguar el tamaño máximo de un frame para el modo 13h, que resulta ser 320x200x8 (512000 bits) o 320x200x1 (64000 bytes o 62.5KB). Sabiendo ahora que el tamaño máximo de un frame en el modo 13h es de 62.5KB, y que el mayor volumen de datos que se puede enviar a la placa de video de una vez es de 64KB, podemos decir que el frame completo puede ser enviado a la placa de una vez. En cualquier resolución mayor a la que brinda el modo 13h de video, se debe enviar el frame por tandas, indicando previamente la placa, mediante el acceso a sus puertos, qué sector del frame será enviado a continuación, lo que genera una baja del rendimiento del modo de video.

Mapeo del área virtual de memoria a la pantalla:

Como se explicó en la sección anterior, las placas VGA poseen un área de memoria de 64KB, que comienza en (000A:0000). Cuando la placa se encuentra trabajando en el modo 13h, interpreta los datos que se encuentran el dicha zona de memoria como una matriz de 320x200, representada mediante un arreglo organizado por filas.


(área de memoria vista como arreglo)


Luego, habiendo interpretado el área de memoria como una matriz, se puede dibujar sobre la pantalla haciendo corresponder las posiciones en la matriz con los píxeles del monitor, por lo que casi no se requiere interpretación de los datos del frame para ser mostrados en pantalla (a excepción de la traducción de colores de la paleta a colores RGB).

La paleta de colores:

El modo 13h de video, posee una paleta de colores de 8 bits (lo que brinda un máximo de 256 colores simultáneos), y ya que 256 colores no alcanzan para representar el rango de colores discernibles por el ojo humano en todas sus tonalidades, el modo 13h permite configurar cuales son los 256 colores que se utilizarán en la paleta.

Los colores que se permiten elegir para la paleta, son colores de 18 bits (lo que brinda un máximo de 262144 colores), o sea que el modo 13h permite elegir 256 de entre 262144 colores.

Los colores de 8 bits de la paleta, poseen una representación numérica (de 0 a 255) y la placa luego los traduce a colores de 18 bits mediante el acceso a una tabla donde posee almacenada la paleta de colores. En dicha tabla, se almacenan los colores secuencialmente (el color 0 en la posición 0, el 1 en la posición 1, etc...).

Los colores de 18 bits que se obtienen mediante el acceso a la paleta, representan valores RGB (red, green y blue). De los 18 bits, 6 representan los rojos, 6 los verdes y 6 los azules. Con esta representación, un color cualquiera se puede separar en sus 3 componentes (R, G y B) para ser poder ser utilizado para dibujar un píxel en pantalla.

El refresco del modo:

Un último detalle importante acerca del funcionamiento del modo 13h, es que posee una tasa de refresco de 60Hz. Esto significa que el modo de video, hace que el monitor refresque (o redibuje) la imagen 60 veces por segundo. Esta información es importante al momento cambiar el frame que se está mostrando en pantalla, ya que si se cambia mientras que el monitor está dibujando la imagen, se puede producir un efecto visual no deseado (flickeo o parpadeo de la imagen).

Para evitar el parpadeo de la imagen, es necesario esperar a que el monitor termine de dibujar el frame actual y luego cambiar el frame completo lo mas rápido posible (antes que el monitor comience a dibujar nuevamente). Afortunadamente, el modo 13h de video nos permite averiguar si el monitor está dibujando o no y posee una velocidad suficientemente rápida para cambiar el frame completo antes que el monitor comience a dibujar nuevamente.

--Federico Bricker 18:50 16 mar 2006 (CET)