Color cycling en el QL con RECOL

La tecnica de color cycling permite definir una imagen cuya paleta de color tiene la característica de que puede definirse parte de ella como un ciclo de colores consecutivos, lo que da como resultado un efecto de movimiento o animación.

El ejemplo por excelencia es fichero “Waterfall” que venia como demo en NEOCrhome, uno de los primeros programas que permitian este efecto que era común en los Atari ST y los Commodore Amiga.

En el QL tenemos una paleta de color muy limitada en los modos clásicos de 4 y 8 colores, y esto no nos permite conseguir efectos muy realistas, pero algo se puede hacer. Sin duda en otros modos de color, con algo de código maquina, el efecto seria mucho mejor de lo que aquí muestro como resultado:

Usando RECOL

Para conseguir este efecto hemos de partir de dos premisas:

1.- SuperBASIC tiene un comando llamado RECOL que cambia los colores de pantalla que le indiquemos. Para los colores por defecto del 0 al 7 podemos decidir que estos serán sustituidos en pantalla por otro color de 0 a 7. Por ejemplo, podemos cambiar el color azul por el blanco, como se ve a continuación, siendo ‘n’ el canal elegido.

RECOL #n,0,7,2,3,4,5,6,1

Esto lo que hace es intercambiar los colores en la pantalla. Para las animaciones, debemos cerciorarnos de que, al usar RECOL, intercambiamos colores, como en este caso, el color 1 por el color 7, y el color 7 por el color 1. De otra forma puede ocurrir que colores distintos en pantalla acaben siendo el mismo.

2.- SuperBASIC permite definir ventanas que podemos asociar a un canal. De esta forma podemos definir áreas rectangulares sobre las que aplicar RECOL. En este ejemplo se han usado dos zonas como se ve en la imagen. De esta manera podemos salvar el resto de la imagen y actuar solo sobre la zona sobre la que vamos a usar RECOL.

Aquellas zonas de la pantalla con bordes irregulares deben ser trabajadas de tal forma que los colores que se usen no se vean afectados por el RECOL, como es el caso de los bordes de la cascada. Esta es la imagen de partida.

Seguramente usando el comando FLASH pueden conseguirse otros efectos interesantes, pero esto supondria crear una mascara más precisa para el cambio de colores.

El programa

Este es el código que permite este cambio de color.

100 MODE 8
110 LBYTES mdv1_scrs_cascada_scr,131072
120 ch1=3 : ch2=4
130 OPEN #ch1,scr_148x145a232x29
140 OPEN #ch2,scr_512x82a0x174
150 REPeat loop
160   RECOL #ch1,0,7,2,3,4,5,6,1
170   RECOL #ch2,0,7,2,3,4,5,6,1
180   IF INKEY$<>"": EXIT loop
190   PAUSE 10
200 END REPeat loop
210 CLOSE #ch1 : CLOSE #ch2

Otros usos de RECOL

En este otro ejemplo se usa RECOL para simular un rastro en la pantalla. se muestra una pelota que rebota y va dejando una cola de color tras ella.

Este es el programa:

100 MODE 8 : ch=3
110 OPEN #ch,scr_
120 axw=400 : ayw=200
130 WINDOW #ch,512,256,0,0
140 PAPER #ch,1 : CLS #ch
150 WINDOW #ch,axw,ayw,INT((512-axw)/2),INT((256-ayw)/2)
160 PAPER #ch,0 : CLS #ch
170 INK #ch,7
180 SCALE #ch,ayw,0,0
190 axw=INT(X_Scale (ayw,axw,ayw))
200 r=6 : d=4
210 x=INT(axw/2)
220 y=INT(ayw/2)
230 iz=0: ab=0
240 ix=1 : iy=1
250 :
260 REPeat bucle
270   RECOL #ch,0,0,1,2,3,4,5,6
280   FILL #ch,1
290   CIRCLE #ch,x,y,r
300   FILL #ch,0
310   x=x+(d*ix) : y=y+(d*iy)
320   IF x>axw OR x<0 THEN ix=-ix
330   IF y>ayw OR y<0 THEN iy=-iy
340 REMark   PAUSE
350 END REPeat bucle
360 :
370 DEFine FuNction X_Scale (y_scale, wide, high)
380   RETurn .7411765 * y_scale * wide / high
390 END DEFine X_Scale

Desconozco si esta técnica se ha usado en el QL en algún momento, pero puede ser un punto de partida para una portada o juego básico.

 

Actualización 2020-04-02

Psicodelia

otro ejemplo con RECOL. En estecaso se usa toda la pantalla para conseguir un efecto psicodélico.

El programa es también muy sencillo:

100 MODE 8
110 LBYTES mdv1_scrs_psicodelia_scr,131072
120 ch1=3
130 OPEN #ch1,scr_512x256a0x0
140 REPeat loop
150   RECOL #ch1,0,3,6,2,5,1,4,7
160   IF INKEY$<>"": EXIT loop
170   PAUSE 10
180 END REPeat loop
190 CLOSE #ch1

Aquí las imágenes usadas:

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s