90 9: C O M A N D O S M A T E M A T I C O S AMOS Basic incluye una amplia variedad de las funciones matema ticas mas frecuentemente utilizadas. Para ahorrar memoria, AMOS usa las rutinas standards de librerias Amiga. Las librerias apro- piadas seran automaticamente cargadas desde el disco Workbench, cuando hagas una llamada a cualquiera de esas funciones, es por esto que tendras que asegurarte que el disco que se halle dentro de la disquetera contenga el fichero MATHTRANS.LIBRARY en el ca- jon LIBS. Funciones trigonometricas ========================= Estas funciones te permiten utilizar una gran cantidad de fun- ciones matematicas. Esas pueden usarse para gran cantidad de co- sas desde programas educacionales hasta complejas formulas de on- das musicales. DEGREE (usa grados) DEGREE Habitualmente todos los angulos se especifican en radianes. Dado que es mas dificil trabajar con radianes, es posible hacer funcio nar a AMOS en grados. De este modo, una vez que hayas ordenado este comando, todas las siguientes operaciones utilizaran el gra- do como formato. RADIAN (usa radianes) RADIAN El comando RADIAN informa a AMOS que todos los futuros angulos seran medidos en radianes. Tambien se usan radianes por defecto. =PI# (constante Pi) Apt=PI# Esta funcion devuelve un numero llamado PI que representa el re- sultado de dividir el diametro de un circulo por su circunferen- cia. PI se utiliza en la mayoria de las funciones trigonometricas para calculo de angulos. Ten en cuenta que el caracter pt forma parte del comando. Recuerdalo al objeto de evitar errores con los nombres de tus variables. 91 =SIN (Seno) S#=SIN(a) S#=SIN(A#) La funcion SIN calcula el seno de un angulo. Ten en cuenta que el resultado de esta funcion siempre se expresa con un numero de coma flotante. =COS (Coseno) C#=COS(A¡#¿) La funcion COS indica el coseno de un angulo a. =TAN (Tangente) T#=TAN(a¡#¿) TAN genera la tangente de un angulo =ACOS (Arco coseno) C#=ACOS(N#) La funcion ACOS toma un numero entre -1 y +1 y calcula el angulo que se necesitara para generar este valor con coseno. NOTA: No existe la funcion ASIN (Arco seno), porque no es necesa- ria. Ya que realmente puede ser calculada mediante la formula: ASIN(X)=90-ACOS(X): Rem medido en grados ASIN(X)=1.5808-ACOS(X): Rem medido en radianes =ATAN (Arco tangente) T#=ATAN(N#) ATAN devuelve el arco tangente de un numero. =HSIN (Seno hiperbolico) S#=HSIN(a¡#¿) HSIN computa el seno hiperbolico del angulo a. =HCOS (Coseno hiperbolico) C#=HCOS(a¡#¿) HCOS calcula el coseno hiperbolico de un angulo a 92 HTAN (Tangente hiperbolica) T#=HTAN(a¡#¿) HTAN calcula la tangente hiperbolica del angulo a Funciones matematicas standard ============================== =LOG (Logaritmo) R#=LOG(v¡#¿) LOG devuelve el logaritmo en base 10 (log 10) de la expresion V# =EXP (Funcion exponencial) R#=EXP(e#) Calcula la exponencial de E#. Ejemplo: Print Exp (1) (Resultado: 2.71828) =LN (Logaritmo natural) R#=LN(L#) LN computa el natural del logaritmo naperiano de L#. =SQR (Raiz cuadrada) S#=SQR(V¡#¿) SQR calcula la raiz cuadrada de un numero. =ABS (Valor absoluto) R=ABS(V¡#¿) ABS devuelve el valor absoluto de V, sin importar su signo =INT (Convierte en numero entero otro de coma flotante) I=INT(V#) INT redondea un numero de coma flotante V hacia abajo al mas pro- ximo numero entero. 93 =SGN (Calcula el signo de un numero) S=SGN(V¡#¿) SGN devuelve un valor que representa el signo de un numero. Exis- ten 3 posibilidades: -1, si V es negativa 0, si V es cero 1, si V es positiva Secuencias aleatorias ===================== =RND (Genera un numero aleatorio) RND genera un numero aleatorio entero entre o y N inclusive. Pero si N es menor que 0, RND devolvera el ultimo valor producido. Esto puede ser muy util cuando este chequeando tu programa. RANDOMIZE (Establece la "semilla" de un numero aleatorio) RANDOMIZE semilla En la practica, los numeros producidos por la funcion RND no son realmente aleatorios; sino que son producidos internamente utili- zando una compleja formula matematica. El punto de comienzo de estos calculos se toma de un numero que se denomina "semilla". Es esta semilla la que se ubica en un valor estandard cuando tu car- gas el AMOS Basic en el ordenador. De este modo la secuencia de numeros generados por RND sera siempre la misma cada vez que eje- cutes el programa. El comando RANDOMIZE te permite asignar un valor a la semilla de forma directa, de modo que los numeros generados por RND sean diferentes en cada momento. La semilla puede ser cualquier valor que desees. Con la intencion de que generes un verdadero numero aleatorio, necesitaras alguna formula para calcular semillas dife rentes de un juego a otro. Esto se consigue con la instruccion TIMER: RANDOMIZE TIMER TIMER es una funcion Basic que devuelve la cantidad de tiempo que ha transcurrido desde que encendiste tu Amiga por ultima vez. Todo ese tiempo es medido en unidades de cincuentavos de segundo. 94 Numeros manipulados =================== =MAX (Obtiene el maximo entre dos valores) R=MAX(x,y) R#=MAX(X#,Y#) R$=MAX(X$,Y$) MAX compara dos expresiones y devuelve la mayor. Dichas expresio- nes pueden estar compuestas por numeros o por cadenas de caracte- res, a condicion de que no mezcles diferentes tipos de variables en una instruccion. Print MAX (10,4) (Resultado: 10) =MIN (Obtiene el minimo entre dos valores) Similar a la anterior, solo que devuelve el menor valor. SWAP (Cambia o trueca el contenido entre dos variables) SWAP x,y SWAP X#,Y# SWAP X$, Y$ Produce un intercambio del contenido de 2 variables de la misma clase. FIX (Establece la precision de la coma) FIX (n) Cambia la precision de los numeros de coma flotante que aparecera en pantalla o en impresion. Existen 4 posibilidades: 1) Si 0< N <16 N mostrara el numero de decimales que aparece ran despues de la coma 2) Si N> 16 El resultado sera proporcional y se elimina- ran todos los 0 sucesivos 3) Si N< 0 Entonces todos los numeros de coma flotante, apareceran en formato exponencial, y el valor absoluto de N determinara el numero de digi- tos despues del punto decimal 4) Si N=16 El formato volvera a ser el normal Ejemplo: FIX (-4):Print PI# 95 DEF FN (Crea una funcion definida por el usuario) DEF FN name ¡(lista)¿=expresion El comando DEF FN te permite crear tus propias funciones que po- dras incluir en tus programas AMOS. Se utiliza habitualmente para un facil y veloz computo de ciertos valores utilizados frecuente- mente dentro de un programa. "NAME" es el nombre de esta funcion que pretendes definir. Y "LIST" es un set de variables separadas por comas. Solo es rele- vante el tipo de esas variables. Cuando hagas una llamada a tu funcion, cualquier variables que introduzcas, sera automaticamen te sustituida en su posicion apropiada. "EXPRESION" puede incluir cualquier funcion standard de AMOS que desees. Como todas las expresiones Basicas, estan limitadas a una sola linea de programa. FN (Hace llamada a una funcion definida por el usuario) FN Name ¡(variable lista)¿ FN ejecuta una funcion previamente definida con DEF FN. Ejemplo: DEF FN Asin(x)=90-Acos(x) Degree Print FN Asin(0.5) ================================================================= 96 10: P A N T A L L A S La pantalla por defecto ======================= Cuando ejecutes un programa AMOS Basic se creara una pantalla por defecto como pantalla 0. Aparece en formato estandard para cualquier operacion grafica habitual. El formato por defecto consta de una pantalla de 16 colores y de dimensiones 320x200, que puede ser facilmente alterada desde el interior de tu programa. Adicionalmente, podras definir mas de 7 pantallas con el poderoso comando SCREEN OPEN, que veremos a continuacion. Definiendo una pantalla ======================= SCREEN OPEN (Define una pantalla) SCREEN OPEN n,w,h,nc,mode Este comando abre una pantalla y reserva memoria para ella. La nueva pantalla sera el lugar de destino de todas las operaciones graficas y de texto que tu programa realice a continuacion. "N" es el numero de identificacion de la pantalla creada por esta instruccion. Los valores posibles oscilan entre 0 y 7. Si esa pantalla ya existiera, sera totalmente reemplazada por tus nuevas definiciones. "W" contiene la anchura de la pantalla en pixels. Dicha anchu- ra NO ESTA LIMITADA a la parte que puedes ver en el monitor, sien do perfectamente legal el definir una mas ancha pantalla que lo que pueda aparecer en tu monitor. "H" establece la altura de tu pantalla usando el mismo sistema Con la condicion de que dispongas de suficiente memoria, puedes facilmente crear pantallas mucho mas grandes del area visible en el monitor. Dichas pantallas pueden ser usadas normalmente con las operaciones de pantalla. Para que puedas diseñar tus imagenes off-screen (fuera de monitor, no visibles), a la vez que hacer un scroll para visualizarlas en monitor, dispones del comando SCREEN OFFSET. "NC" solicita en numero de colores necesarios para la nueva pantalla. El rango oscila desde 2 hasta 64 (EHB). Ademas, si acce des al modo especial HAM del Amiga, podras alcanzar los 4096. 97 "MODE" te permite elegir la anchura de los puntos individuales de la pantalla. La pantalla del Amiga admite anchuras que van des de 320 a 640 pixels. Podras seleccionar la anchura necesaria esta bleciendo MODE en LOWRES (0) o HIRES ($8000). He aqui una lista de las posibles pantallas opcionales, asi como la cantidad de memoria que consume cada una: Colores Resolucion Memoria Notas ======= ========== ======= ===== 2 320x200 8 K Paper=0 Pen=1 Crsr=1 No flash 640x200 16 K " " " " 4 320x200 16 K Paper=1 Pen=2 Crsr=3 Flash=3 640x200 32 K " " " " 8 320x200 24 K " " " " 640x200 48 K " " " " 16 320x200 32 K Es la pantalla 0 (por defecto) 640x320 64 K 32 320x200 40 K 64 320x200 48 K EXTRA HALF-BRIGHT MODE (EHB) 4096 320x200 48 K HOLD AND MODIFY MODE (HAM) Ten en cuenta que la cantidad de memoria que aparece en la tabla anterior solo se refiere a la pantalla estandard. De este modo, si tu creas pantallas mas altas o mas anchas de la estandard, la cantidad de memoria consumida es obviamente mayor. La pantalla 0 o por defecto es el equivalente a: SCREEN OPEN 0,320,200,16,lowres SCREEN CLOSE (Borra una pantalla) SCREEN CLOSE N Este comando borra la pantalla numero N, y dispone libremente de esa memoria para cualquier otro uso. AUTO VIEW ON/OFF (Control de modo visual) AUTO VIEW OFF Cuando has abierto una pantalla mediante SCREEN OPEN, la nueva pantalla se muestra habitualmente enseguida. Esto puede ser un in conveniente durante la inicializacion de ciertas etapas dentro de tus programas. El comando AUTO VIEW OFF te permite un total control del proce so de actualizacion. Este comando anula completamente el sistema de visualizacion en monitor, con lo que podras hacer aparecer la nueva pantalla en el momento adecuado de tu programa utilizando para ello la instruccion VIEW. El comando AUTO VIEW ON activa la actualizacion automatica de pantallas. 98 DEFAULT (Reseteado de pantalla) DEFAULT Cierra todas las pantallas actualmente abiertas, almacenando su contenido en su formato original. Ejemplo: Load IFF "AMOS_DATA:IFF/AMOSPIC.IFF",0 Wait Key Default VIEW (Muestra el marco de la pantalla actual) VIEW Muestra cualquier cambio de la pantalla actualmente seleccionada en el proximo periodo de verticalizacion. Solo tendras que usar este comando cuando AUTOVIEW esta en OFF. Modos especiales de pantalla ============================ El color de cada punto de la pantalla esta determinado por un valor almacenado en uno de los 32 registros de color del Amiga. Cada registro puede ser cargado con una seleccion de 4096 colores distintos. Pese a que 32 colores puedan parecer demasiados, especialmente para iniciados, esto no es suficiente para los profesionales del diseño. La mas facil solucion parecia ser aumentar el numero de registros de color, pero esto fue desestimado puesto que encare- ceria mucho el ordenador. Por fin, los ingenieros de Commodore inventaron 2 modos grafi- cos especiales, que habilmente explotaban al maximo los registros ya existentes, permitiendo asi aumentar el numero de colores en pantalla. Probablemente ya sabras a que modos nos estamos refiriendo. Se trata de los infames modos EHB y HAM. AMOS Basic te permite una total compatibilidad para ambos modos. He aqui una breve explica- cion: 1- EXTRA HALF BRIGHT MODE (EHB) Dobla el numero maximo de colores en pantalla, con lo que con- sigue llegar hasta 64. Trabaja generando 2 colores en cada uno de los 32 registros de color. Los primeros 32 colores cargan el valor del color directamente desde uno de los registros. Cada registro contiene un valor entre 0 y 4095 lo que da una tonalidad precisa a cada color final. El segundo grupo de colores, con numeros desde 32 a 63, toman uno de los registros previos y dividen su contenido por dos. Esto produ- ce 32 colores extras que tienen exactamente la mitad del brillo del color contenido en el registro. Al objeto de exprimir este modo EHB al maximo, es necesario cargar los 32 registros con las tonalidades mas brillantes de tu paleta de colores. Asi conseguiras crear una segunda lista con tonalidades intermedias (grupo 32-63). 99 2- HOLD AND MODIFY MODE (HAM) El actual Hardware del Amiga te limita al maximo de 6 planos de bits por pantalla. Con esto puedes mostrar mas de 64 colores a la vez en la misma pantalla. Si deseas mostrar una fotografia, entonces necesitaras cientos o tal vez miles de colores en panta- lla. Este fue el problema que afronto Jay Miner cuando estuvo dise- ñando el sistema de visualizacion del Amiga. Su solucion consis- tio en explotar un viejo truco, conocido por los artistas desde hace siglos: si un artista profesional quisiera reunir cada posi- ble color, tendria una labor imposible. Por lo que es practica co mun, realizar mezclas con unos pocos colores elementales, con lo que conseguiras millones de tonalidades diferentes, sin necesidad de tener que necesitar muestras de todas las posibilidades. La misma tecnica puede ser tambien aplicada a la pantalla de un orde nador. Una vez que hayas especificado cada color individualmente, tu puedes tomar cualquiera de ellos y modificarlo levemente. Esto incrementa considerablemente el numero de colores disponibles, y conforma la base del poderoso modo grafico HAM del Amiga. El valor de cada color es creado en el Amiga de la mezcla de tres componentes por separado. Con lo que se especifica la inten- sidad relativa de cada uno de los 3 colores primarios: Rojo, Azul y Verde en el color final. El rango posible para cada uno de esos 3 colores oscila de 0 a 15. El modo HAM divide el valor de color del Amiga en 4 grupos se- parados: 1) Registros de color 0-15. Los primeros 16 colores toman un va- lor directamente de un registro de color. Esos colores se tra- tan como si fuera una pantalla estandard de 16 colores. 2) Componente rojo 16-31. Sin embargo, si un punto es cargado con el numero de color 16-31, el valor del color se cargara desde ese pixel a su inmediato izquierdo. El componente rojo de ese color es ahora reemplazado con un valor de 0 a 15 que se calcu la con la formula siguiente: Intensidad = Color indice - 16 3) Componente Verde 32-47. De forma similar, un numero de color de 32 a 47, tomara el tono actual y cambiara el componente ver de. La intensidad de este componente se establece en un valor de color -32. 4) Componente Azul 48-63. Esos numeros de colores graban el valor de color del punto a la izquierda del pixel actual, y cargan un nuevo componente azul de tu numero de color como sigue: Intensidad = Color indice - 48 El color de un punto concreto dependera del color de todos los puntos situados a su izquierda. Esto te permite crear difuminacio nes de color, ideales para tonos carne. No obstante, no elijas el color de cada punto de la pantalla de forma independiente. En la practica, se necesita un maximo de 3 pixels para pasar de un co- lor a otro. 100 En los primeros Amiga, el modo HAM fue considerado solamente como una simple curiosidad. Pero hoy en dia, la situacion es muy distinta, con la llegada de los excelentes paquetes graficos que usan el HAM como es el PHOTON PAINT. AMOS te permite usar sin limitaciones todas las operaciones de graficos y textos en modo HAM. Otro punto a considerar, es que las pantallas HAM se manipulan usando comandos habituales como SCREEN OFFSET y SCREEN DISPLAY. He aqui algunos consejos para su correcto uso: * El primer punto en cada linea horizontal debe ser un numero de color de 0 a 15. Esto servira como comienzo de color para todas las tonalidades de la linea actual. * No intentes someter tu pantalla HAM a scroll horizontal. Si asi lo haces, apareceran unas franjas de color a los lados de tu pantalla. Esto se debe al cambio en los colores de inicio de cada una de tus lineas. No existen, sin embargo restricciones respecto al scroll vertical. * Los efectos con franjas, pueden producirse mediante SCREEN COPY La solucion consiste en asegurar que el borde de tu zona de di- bujo contenga un numero de color de 0 a 15. Esto asegurara que tu pantalla HAM se redibujara en su nueva posicion con sus colo res originales. Cargando una pantalla ===================== LOAD IFF (Carga una pantalla IFF del disco) LOAD IFF "filename"¡,screen¿ Carga un dibujo en formato IFF del disco. "SCREEN" indica el nume ro de pantalla en la que se cargara dicho dibujo. Esta pantalla se abre automaticamente para su uso, si no existiera ya. Si ya hubiera sido abierta previamente, cualquier contenido en su inte- rior sera totalmente borrado. Para cargar un dibujo en la pantalla actual, debes omitir el parametro "screen". Ejemplo: Load IFF "AMOS_DATA:IFF/AMOSPIC.IFF",1 101 Grabando una pantalla ===================== SAVE IFF (Graba una pantalla IFF) SAVE IFF "filename"¡,compression¿ Graba la actual pantalla como un fichero IFF en disco. "COMPRESSI ON" es un parametro que te permite compactar tu fichero antes de ser grabado. Un valor "1" especifica que el sistema de compactado de ficheros estandard sera empleado, mientras que un valor "0" grabara el fichero al disco tal cual. Por defecto, las pantallas AMOS son siempre compactadas. Este comando añade automaticamente el apendice ".IFF" a tu fi- chero. Cuando tu cargues de nuevo este fichero, AMOS Basic lo de- volvera a su posicion original, puesto que tambien se graban los comandos de pantalla (SCREEN DISPLAY, SCREEN OFFSET, SCREEN HIDE/ SHOW). Estos datos extras de los ficheros .IFF de AMOS seran com- pletamente ignorados por paquetes graficos como DPaint. Ten presente que es posible grabar pantallas dobles con este comando. Moviendo una pantalla ===================== SCREEN DISPLAY (Posiciona una pantalla) SCREEN DISPLAY n ¡,x,y,y,w,h¿ Una vez que has definido tu pantalla mediante SCREEN OPEN, necesi taras posicionarla en tu pantalla. A diferencia de la mayoria de ordenadores, AMIGA es capaz de mostrar un dibujo en cualquier par te que desees del monitor. Esto puede ser facilmente explotado con el fin de crear divertidos efectos de pantalla. Con AMOS Ba- sic, es incluso posible emplear esas animaciones utilizando las interrupciones (vease AMAL). Otra aplicacion es sobreponer varias pantallas una sobre otra. Esto te permite crear una imagen que contenga una combinacion de diferentes modos de pantalla. "N" indica el numero de pantalla a posicionar. "X" e "Y" espe- cifican la localizacion de la pantalla en coordenadas de hardware La coordenada X de la pantalla puede oscilar entre 0 y 488 y sera automaticamente redondeada al pixel inferior multiplo de 16. Solo las posiciones entre 112 y 448 son visibles en tu monitor. Debes evitar asignar a dicha coordenada un valor inferior a 112. La coordenada Y de tu pantalla puede oscilar entre 0 y 312. El rango visible dependera del tipo de monitor que uses, pero lo mas probable es que puedas ver aquellas comprendidas entre 30 y 300, accesibles por la mayoria de los sistemas. 102 Hay que tener presente que el modo HAM dispone de un menor ran go visible. Dichos dibujos HAM no pueden verse con coordenadas de 256, pero si por encima o por debajo. Asi que debes establecer la coordenada Y sobre 255 o 257. No sabemos exactamente la razon de este fenomeno, si se trata de un defecto de Hardware o de Softwa- re, pero sin embargo, esto no representa ningun tipo de restric- cion para AMOS. "W" almacena la anchura de tu pantalla en pixels. Si fuera dis tinta de la asignacion inicial, solo parte de tu imagen sera mos- trada, empezando por la esquina superior izquierda de la imagen. Como las coordenadas X, la anchura de pantalla se redondea hacia el pixel inferior mas cercano multiple de 16. De modo parecido, "H" establece la altura aparente de la panta lla. Cambiando este valor se reducira la profundidad de tu imagen Generalmente, SCREEN OPEN seleccionara automaticamente la posi cion de la imagen, utilizando un sistema estandard de configura- cion de los ficheros AMOS. Si la pantalla fuese mas grande que el monitor, entonces AMOS pasa la pantalla a "overscan". SCREEN DISPLAY te permite de un modo simple cambiar los valo- res por defecto. Cualquiera de los parametros x,y,w y h puede ser omitido de forma legal. Los valores no usados, seran automatica- mente asignados por aquellos por defecto, y deben ser siempre se parados por comas: Screen Display 0,112,45,, : Rem Posiciona Pantalla en 112,45 Cuando posiciones tus pantallas, intenta asegurarte que la mis ma comience a la izquierda del monitor y termine hacia la derecha Esto es esencial para que el Hardware de tu ordenador interprete correctamente tu pantalla. En la practica, puedes necesitar expe- rimentar poco a poco hasta que consigas el efecto deseado. Por suerte, lo peor que puede ocurrir es que aparezca algo amorfo en tu monitor; ya que el Amiga no se dañara si cometes un error. A continuacion veras algunos consejos que te ayudaran: * Solo una pantalla simple puede mostrarse en cada linea horizon- tal. Sin embargo, puedes libremente situar varias pantallas en el monitor, una a continuacion de la otra. Todas estaran alli, pero solo una de ellas podra ser visible. * Debe haber siempre un pixel "tonto", es decir una zona muerta entre cada par de pantallas. Este, se genera automaticamente y es inevitable. Esta zona muerta se hara notar cuando desplaces un sprite entre las pantallas. Por ejemplo, intenta mover el puntero del raton desde la ventana de edicion hasta la linea de menu, y veras una pequeña linea negra entre el puntero del ra- ton y el borde entre las dos pantallas. 103 SCREEN OFFSET (Scrolling de Hardware) SCREEN OFFSET N,X,Y La capacidad de visualizacion del Amiga no se limita a lo que es exclusivamente visible en la pantalla de tu monitor. No existe en absoluto, nada que te impida producir imagenes mucho mas grandes que el tamaño de pantalla. Logicamente, no sera posible mostrar- las enteras en pantalla, pero facilmente podras ir mostrando las diferentes partes de tu imagen, utilizando para ello el comando SCREEN OFFSET. "N" es el numero de pantalla que va a ser mostrada. "X" e "Y" miden la distancia desde la esquina superior izquierda de la pan talla hasta el punto de inicio de tu imagen. "X" e "Y" se especi- fican en unidades de pixel simple, por eso no hay nada que impida la produccion de suaves desplazamientos o scrollings. Tambien podras crear copias en negativo con esta instruccion, permitiendote mostrar cualquier parte de la memoria del Amiga en tu pantalla. Comandos de control de pantalla =============================== SCREEN CLONE (Produce una copia identica de una pantalla) SCREEN CLONE N Este comando asigna una segunda version de la pantalla actual a la pantalla numero N. Este clono o copia identica, utiliza la mis ma area de memoria que la pantalla original. Normalmente, la pantalla clonica aparece en el mismo lugar que su precedente. Sin embargo, puede ser manipulada separadamente mediante la utilizacion de las habituales funciones de pantalla como son SCREEN DISPLAY y SCREEN OFFSET. Una vez que dispongamos de una copia simple de la pantalla ori ginal en memoria, no puedes acceder a una copia clonica con los comandos de pantalla. En ese caso, obtendras un mensaje de error del tipo "ILLEGAL SCREEN PARAMETER". Otra cosa a considerar es que cualquier secuencia de color que hayas establecido en la pan- talla original no sera copiada mediante el proceso de clonacion. Observa el uso del comando WAIT VBL. Este te asegurara que la co- pia clonica sera reposicionado fuera de pantalla, lo que permiti- ra la realizacion de rapidos y suaves movimientos. Si experimentas con este comando, observaras que existe un li- mite real a la cantidad de movimiento que puedes ejecutar sin que se altere este efecto. Incluso algo tan trivial como un simple calculo de una rutina de movimiento, puede, a menudo, provocar un retraso imperceptible en tus animaciones. La visualizacion de la pantalla puede ser tambien ajustada di- rectamente desde el AMAL (lenguaje de animacion). Este es capaz de animar gran cantidad de pantallas de forma facil y suave. 104 DUAL PLAYFIELD (Combina 2 pantallas en un solo campo doble) DUAL PLAYFIELD screen1, screen2 El modo DUAL PLAYFIELD de AMIGA te permite mostrar por completo 2 pantallas de forma simultanea y en las mismas coordenadas. Casi es el mismo efecto que se produce si pintas una pantalla en papel y otra sobre celofan y luego las superpones. Cada pantalla podra ser manipulada independientemente, con lo que podras utilizar esta posibilidad para producir efectos suaves de desplazamiento paralelo, ideal para desplazamientos de panta- llas como los que aparecen en Silkworm. Los 2 componentes de un doble campo de juego (DUAL PLAYFIELD), son tratados como si una pantalla AMOS y pueden escribirse de la forma habitual. Ambos pueden ser animados con AMAL. "SCREEN1" y "SCREEN2" se refiere a las dos pantallas que han sido previamente definidas con el comando SCREEN OPEN. Pero solo ciertas combinaciones de pantallas seran aceptadas: las dos pan- tallas deben usar la misma resolucion, siendo ilegal usar HIRES y LOWRES en el mismo campo. He aqui una lista de las posibilidades: Screen 1 Screen 2 Notas ============= ================ ========= Colores Colores ------------- ---------------- 2 2 4 2 4 4 8 4 LOWRES solamente 8 8 LOWRES solamente Pese a que las escalas de color han sido predefinidas, el tama ño de ambas pantallas puede ser perfectamente distinto. Creando una pantalla de "fondo" que sea mas grande que la pantalla "delan tera" produciras bonitos y realistas efectos, como los que apare- cian en Parallax. Los colores de esas pantallas seran todos tomados de la paleta de la pantalla 1 considerando al color 0 como transparente: Screen Indices de color (de screen 1) ------ ---------------- 1 0 - 7 2 8 - 15 Mientras estes dibujando la segunda pantalla, AMOS Basic con- vertira automaticamente tu indice de color en el numero apropiado antes de utilizarlo. Asi INK 2 usara el color 9 de la primera paleta. Este proceso de conversion no se aplica a la asignacion de or denes como COLOUR o PALETTE. Es importante recordar esto cuando estes cambiando las asignaciones de color, de otra manera, tus nuevos colores no se reflejaran en la pantalla actual. Siempre de bes realizar "SCREEN1" antes de cambiar la asignacion de color. 105 Existe un par de importantes puntos que debes conocer antes de afrontar una pantalla dual: * La posicion en pantalla de ambas pantallas no debe ser nunca ubicada en 0 * Cuando hayas posicionado una pantalla dual y posteriormente de- sees reubicarla con SCREEN OFFSET, asegurate de especificar la primera pantalla dual y no la segunda DUAL PRIORITY (Establece prioridad entre pantallas duales) DUAL PRIORITY screen1, screen2 La primera pantalla de un campo dual es normalmente mostrada di- rectamente sobre la segunda. Este comando te permite cambiar este orden, con lo que SCREEN2 aparece sobre SCREEN1. ATENCION¡¡¡: Esta instruccion solo cambia el orden de la visuali- zacion. No tiene ningun efecto sobre la organizacion de pantalla. Sobre la primera pantalla de un campo dual recaeran siempre todas las asignaciones de color asi como la orden SCREEN DISPLAY. SCREEN (Establece la pantalla actual) SCREEN N El comando SCREEN te permite realizar operaciones graficas y de texto sobre la pantalla numero N. =SCREEN (Obtiene el numero de la pantalla actual) S=SCREEN Devuelve el numero de la pantalla actualmente activa SCREEN TO FRONT (Mueve la pantalla hacia el frente) SCREEN TO FRONT ¡s¿ Esta instruccion mueve la pantalla "S" hacia el frente en el moni tor. Si el parametro fuera omitido, entonces se desplazaria la ventana actual. NOTA: Si el sistema AUTOVIEW ha sido anulado (OFF), necesitaras llamar al comando VIEW antes de que este efecto pueda ser visible en pantalla. SCREEN TO BACK (Mueve la pantalla hacia atras) SCREEN TO BACK ¡n¿ Mueve la pantalla hacia el fondo de tu monitor. Si hubiera otra pantalla en las mismas coordenadas esta seria ahora visualizada por delante de la pantalla seleccionada.