CAP 6g MáscarasA los que ya dominan el tema, quiero que comprendan que la cantidad de burradas que puedan aparecer son para intentar explicar conceptos, sobre todo al principio. Como vimos en el capitulo anterior, a la hora de usar el bliter con varios bitplanes tenemos que ver como colocar los planos.
Como siempre hay que decidir si gastamos memoria o tiempo de proceso. Ademas, segun el modo que elijas, algunas tecnicas/efectos son mas faciles de hacer que otros.
¿Sueltos o entrelazados?
Si tenemos los planos sueltos, es mas facil cuadrar los punteros (no tienes que calcular nada).
A la hora de montar el playfield te olvidas de modulos e historias....
El problema es que a la hora de blitear, tienes que hacer un blit por plano y es tiempo que tienes a la CPU esperando para enviar el siguiente.
Con los planos entrelazados, con un blit atacas a todos los bitplanes de una vez.
La pega es que al montar el playfield, tienes que calcular los punteros, los modulos, etc.....
La mayoria de las veces usaremos la opcion entrelazada para aprovechar el bliter a tope.
¿Cual es el sacrifico entonces?
Como vemos en la imagen, para enmascarar el blit podemos reutilizar la mascara si separamos los planos.
Si queremos que haga los 3 blits en 1, tenemos que darle 3 mascaras (entrelazadas tambien).
Parece una tonteria, pero te pones a llenar la memoria de graficos y las mascaras te empiezan a comer el terreno.
¿Como trasladamos la idea a nuestro codigo?
Repasemos la posibilidades de las fuentes.
Fuente D.
Es el destino del blit.
Es un bloque de 16pixels (minimo) y su posicion tiene que cuadrar en zonas multiplo de 16 (0 pixel
6 pixels -32 pixels -48...)
Usando esta solo esta fuente, podemos borrar/llenar bloques de memoria con las limitaciones anteriores.
Como no hay mas fuentes, no podemos jugar con minterms y solo podemos mover ceros o unos.
Fuente A
La mas versatil.
Podemos desplazar el contenido 1-15 pixels a la derecha. (primer nibble de nuestra chuleta)
Con esto evitamos la limitacion de ir de 16 en 16 pixels y podemos movernos a cualquier sitio
Ademas podemos enmascarar hasta 16 pixels tanto al inicio como al final de cada blit (BLTAFWM).
Como vimos, esto nos sirve para tapar basuras generadas por el desplazamiento.
Fuente B
Es un temino medio, nos deja desplazarnos a la derecha (el nibble B de la chuleta)como la fuente A , pero no tiene el poder de enmascarar la basura del principio o del final.
La gran ventaja es que con esta fuente se amplian los minterms aun mas.
Os podeis liar la manta a la cabeza con las tablas de verdad y jugar con las combinaciones, aqui solo vamos a tratar lo mas simple y util.
COMENZAMOS CON NUESTRA CHULETA .
BLTCON0 = $AFMMB000A= desplazamiento FUENTE A
F= ¿Cuantas fuentes/destino?
MM= Minterm
B= desplazamiento FUENTE B
000 = Lo demas apagado.
Despejamos.
Desplazamiento de A = 0
Fuentes A B D = D
Minterm = 03 o 30 si queremos mascara positiva o negativa
Desplazamiento de B = 0
TOTAL
BLTCON0 = $0D030000
o
BLTCON0 = $0D030000
El resto es como siempre.
Configurar mascaras de A (BLTAFWM)
Modulos las fuentes (BLTxMOD)
Punteros de las fuentes (BLTxPTH)
Tamaño del blit (BLTSIZE)
El unico cambio (ahora que hacemos los blits en color) es que multiplicamos la altura de nuestro bloque por el numero de bitplanes, ya que estamos trabajando con planos entrelazados.
ANTES = move.w #altura_del_bob_en_lineas*64+ancho_del_bob_en_words,BLTSIZE(A6)
AHORA = move.w #altura_del_bob_en_lineas
*numero_de_planos*64+ancho_del_bob_en_words,BLTSIZE(A6)
En temas codigo no vamos a profundizar mas porque no tiene mucha ciencia si ya dominamos las lecciones anteriores. Lo que me interesa es que nos vayamos familiarizando con el sistema planar y sus posibilidades (no todo van a ser pegas).
El ejemplo de hoy es sencillo, dos mascaras (positiva y negativa). No hay mucho que rascar.
Al principio del capitulo comentabamos que lo normal va a ser usar este sistema entrelazado, pero ¿y si jugamos con los planos sueltos?
El foco es un simple bob que se mueve solo sobre el bitplane superior que es el que se encarga de dar luz/sombra a los bitplanes de abajo.
Como solo tocamos uno de los planos, nos puede ser mas sencillo hacerlo con bitplanes separados porque en este caso el entrelazado mas que ayudar, estorba.
Los tipicos efectos de Shadebobs suelen funcionar asi, van "manchando" un bitplane, saltan a otro y van dejando esas estelas que se entremezclan.