miércoles, 20 de noviembre de 2019

Pintando en la pantalla con la CPU

Tenia intención de hacer una explicación del funcionamiento del Blitter pero he pensado que quizás venia bien dar un paso intermedio y pintar usando la CPU.

Vamos a mostrar un gráfico que he incluido en el mismo fuente y lo vamos a copiar a pantalla.
En este ejemplo vamos a usar un solo plano por lo que preparemos los registros para ello tal como explicamos en la entrada anterior.

La variable NUMPLANES será 1.
El registro BplCon0 que está en la copperlist valdrá $1200.

Ahora reservamos memoria chip para un solo plano.
En la etiqueta Screen pondremos:
         ds.b  40*256 (40 bytes * 8 bits cada byte = 320 pixels *256 lineas)

Por último ponemos los registro de color 0 y color 1 en la copperlist con los valores que queramos (en este caso color 0 = negro y color 1 = blanco).

Y ya por fin vamos a copiar el gráfico que tenemos en el source

con estas lineas de código que tenemos en _Main:

Teniendo en cuenta que nuestro bitplano esta "limpio", o sea, lleno de ceros, cuando copiamos el gráfico los 1 de este serían representados por el Color 1.
El loop tiene 16 iteraciones pues el gráfico ocupará 16 lineas de alto.

En cada move.w (a0)+,(a1)+  movemos 16 bits del gráfico a la pantalla y a la vez avanzamos un word en la operación tanto en la dirección del gráfico como en la de la pantalla.

Después añadimos 38 bytes a la dirección de la pantalla. Hacemos esto para pintar en la siguiente linea. Si una linea tiene 40 bytes y hemos pintado y avanzado 2 bytes faltan 38 hasta la siguiente linea.

Esto no hay que hacerlo en la dirección del gráfico pues tenemos los datos preparados de forma continua, sin saltos.

Quedemonos con un concepto de esto. El gráfico tiene un modulo igual 0 y la pantalla en este caso igual a 38. Son cosas que tendremos que entender para cuando hagamos el primer Blitazo. Haremos este mismo ejemplo pero con el Blitter.

Pongo el source completo que siempre aclara las cosas.

No hay comentarios:

Publicar un comentario