CAP 6f Fuente B y blits en colorImagino que ya estais cansados de trabajar con A y D. Como vimos en la introduccion al blitter, es la combinacion mas barata y versatil.
¿Que tiene de "malo" usar B y D? Aqui vienen las pegas....
1º Sabemos que el blitter trabaja por etapas (pipeline) y que la FUENTE B es mas lenta (6 vs 4 ciclos) que la FUENTE A . (ver Capitulo 6 y 6b)
2º No podemos enmascarar los primeros/ultimos 16 pixels como haciamos con la FUENTE A (BLTAFWM y BLTALWM) . Ya vimos que sin eso, el bob se vuelve un "pegote" cuando lo mueves.
Por lo demas, A y B funcionan igual. Apuntamos a las fuentes/destino, shifteamos (si es necesario) y copiamos. Recordad nuestra chuleta $AFMMB000.
Esas "pegas" de las que hablamos se arreglan usando las fuentes A y B A LA VEZ.
La fuente A nos sirve de mascara para B y seguimos gastando 6 ciclos porque A nos sale "gratis".
Minterms. 
Ya conocemos esta tabla de capitulos anteriores. Tenemos todas las combinaciones posibles entre fuentes. Ahora vamos a usar A y B.

Antes podiamos copiar tal cual o hacer un negativo. Con dos fuentes el abanico se abre.
Para no dar palos de ciego, vamos a poner una situacion "real" y buscaremos la solucion que nos convenga.

Tenemos una "textura" que parece un codigo de barras y dos mascaras (estrella/circulo).
Si quisieramos una mascara positiva:
Cuando A=0 (blanco) el destino tiene que ir a 0. Da igual lo que tenga B.
Cuando A=1 (negro), el destino tiene que ser igual que B.
Si quisieramos una mascara negativa:
Cuando A=1, el destino es 0
Cuando A=0, el destino es igual a B.

¿Se entiende la idea?
Blits en colorHasta ahora hemos estado bliteando a un bitplane, lo que pasa que con el copper y el dual playfield, habiamos "falseado" los colores.
¿Por que nos metemos en ese tema ahora?
Porque a la hora de blitear en color con mascara, hay que tener en cuenta como hemos almacenado la imagen.
Al principio del hilo siempre os he recomendado trabajar con bitplanes entrelazados en lugar de tenerlos sueltos. El motivo es que estando entrelazados, podemos recortar toda la imagen con un solo blit.
Si tenemos los bitplanes separados, tendriamos que hacer un blit por cada plano. Eso significa gastar mas CPU (configurar varios blits) y perder tiempo esperando a que el blitter termine para enviar el siguiente.
La teoria es muy bonita pero... ¿a que viene que esto? No estamos haciendo nada exigente como para estar obsesionandonos con los ciclos.
El problema es que a la hora de enmascarar, la opcion entrelazada (que a priori es la mejor)nos pide hacer un sacrificio. Tenemos que tener una mascara para cada bitplane, es decir gastar memoria.
Si la textura del ejemplo anterior tuviera 3 bitplanes (8colores) necesitariamos 3 estrellas y 3 circulos.
En cambio al usar bitplanes separados, el bliteo nos sale un poco mas caro en tiempo, pero con una mascara podemos cubrir todos los bitplanes (por si andamos justos de memoria pero nos sobra tiempo).
En la proxima entrada haremos alguna chorradilla para explicar las cosas mas a fondo.
Ya es tarde y mañana hay que producir.