APPLICATIONSDIVERS ★ PATTERN (AMSTRAD PERSONAL) ★

Pattern (Amstrad Personal)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

DISEÑO DE TRAMAS

Es de todos conocido la forma en la que los CPC rellenan áreas de color, mediante la instrucción fill.

La rutina que presentamos sofistica al máximo estas posibilidades permitiendo rellenar áreas de pequeños dibujos, o patterns, consiguiéndose un golpe de efecto bastante explosivo.

La falta de un orden fill, que permita llenar un área cerrada con color en la pantalla, ha causado la aparición de innumerables rutinas para el 464 capaces de llevarlo a cabo.

Sin embargo, la gran mayoría de ellas no manejan más que un solo color, desperdiciando claramente las posibilidades del ordenador.

La rutina que presentamos en este artículo nos va a permitir, por fin, poner algo de vida en nuestros gráficos. Es capaz de rellenar un área, cualquier área, con una trama de color como fondo diseñada por nosotros mismos. Los resultados obtenidos son tales, que sin duda pasará a formar parte de nuestro arsenal de herramientas para crear gráficos en un lugar de honor.

Teclee, salve el Programa Cargador y ejecútelo. Mueva el cursor gráfico a un punto interior del área que desea llenar con la trama (usando la orden Mové) y teclee de nuevo:

CALL &9000,pw,pd, @pat$

donde pw es la anchura de la trama en pixels, pd su profundidad y pat$ contiene la descripción de la trama como se detalla más adelante. En el caso del 664 y 6128, hay que modificar ligeramente la línea de programa anterior:

CALL &9000,pw,pd,pat$

o incluso

CALL &9000,2,2,“1221”

El llenado comienza en la posición del cursor gráfico (orden Mové). La primera cosa que la rutina hace es mirar cuál es el color de la pantalla en ese punto. Acto seguido, se cambiará el color de todos los puntos conectados vertical y horizontalmente con él, hasta que se encuentre otro color distinto (de ahí la importancia de que el área esté cerrada con un solo color).

La descripción de la trama se atesora en la variable pat$.

Imagine un bloque rectangular compuesto de puntos individuales (pixels) cada uno con un número propio de tinta.
En modo 0 el valor máximo de éste es 15, de 0 a 3 en modo 1 y de 0 a 1 en modo 2.

Supongamos ahora que nuestra trama tiene 2 pixels de ancho por 3 de alto. Para describirlos de forma que una rutina en Lenguaje Máquina lo «entienda», un método razonable parece ser hacerlo por filas consecutivas, es decir: en la primera fila, los números de tinta de los dos pixels superiores del bloque de 2x3, en la segunda los segundos, etc. Esto nos da una lista de 6 números de tinta. Usando la paleta de color por defecto que el Amstrad tiene cuando se enciende, si la fila superior era amarilla, roja, la segunda roja, azul, y la tercera amarilla, azul, pat$ contendría la secuencia de números “133212”. Al leerla, el ordenador y nosotros debemos entender, leyendo de izquierda a derecha que: PEN 1 es amarillo, PEN 3 es rojo, PEN 3 de nuevo, PEN 2 es azul, PEN 1 es amarillo y PEN 2 es azul.

En modo 0, para codificar los colores de 10 a 15, hay que usar la notación hexadecimal: A vale 10, B 11 y así hasta F, 15.

La línea de programa que habría que inyectarle al Amstrad sería, pues: pat$ = “133212”:CALL &9000,2,3, @pat$

Llegados a este punto, no es muy improbable que el lector esté estremecido de horror, pensando en la cantidad de trabajo «sucio» que va a tener que llevar a acabo: decodificar de cabeza números de tinta, notación hexadecimal, ¡cielos, no!

Bien, ha habido suerte. Además de la rutina de llenado de áreas, tenemos un editor de tramas (Programa Editor), que realizará todo lo anterior automáticamente (suspiro de alivio incontrolable).

Además, es muy sencillo de utilizar.

Lo primero que el editor de tramas pregunta es el modo de pantalla. Hay que responder 0,1 ó 2. Después, la pantalla se borrará, apareciendo un cursor dentro de un rectángulo que se puede mover con las teclas del cursor. Pulsando la barra espaciadora, se dibujará un punto en el color elegido. La tecla Shift sirve para desplazarse por la paleta de colores.

Si la trama que va a crear es más pequeña que el rectángulo de contención, asegúrese de comenzar a dibujarla en la esquina superior izquierda, moviéndose hacia la derecha, luego hacia abajo.

La tecla Tab significa fin de edición. Lo siguiente que hay que hacer es eliminar el espacio que sobra si la trama es menor que el rectángulo. Para ello, aparece una «cruz» que se mueve con las teclas del cursor.

Al pulsar de nuevo Tab, el programa pregunta cómo se llamará la variable donde se va a guardar toda la información. Recuerde añadir el signo “$” al final de la misma, algo así como “trama$”. La razón de todo esto es que el editor va a crear un programa Basic que luego se «mergeará» con el programa que usted haga, mediante la orden Basic MERGE “nombre”

La utilización del editor permite aprovechar al máximo las nuevas
capacidades gráficas que otorga la rutina al CPC

La rutina de llenado es muy rápida porque trata la memoria de pantalla directamente, ignorando al firmware. Por tanto, al no estar protegida por éste, deben cumplirse una serie de condiciones para aprovecharla bien.
Condiciones de uso de la rutina de llenado

  1. El origen de los gráficos debe ser 0,0 (orden Origin).
  2. La rutina funciona en cualquier modo de pantalla, pero sólo debe usarse cuando no se haya realizado ningún scroll, bien desde que se encendió el CPC, bien desde la última orden Mode.
  3. No se comprueba si la acción tiene lugar dentro de la pantalla o no. La rutina supone que va a comenzar dentro de un área finita cerrada totalmente por un solo color. Es responsabilidad del programador asegurarse de ello.
  4. Puede haber problemas si el color de fondo aparece en la trama. Intente evitarlo.

Si no está muy seguro de haber cumplido con exactitud la regla 4, salve TODO en disco o cinta antes de ejecutar. La rutina de llenado no comprueba si se pulsa la tecla Esc u otra. No se detendrá hasta que termine o el CPC se «cuelgue». El precio de la velocidad.

Tenga cuidado si usa una trama en modo 1 creada en modo 0. Si algunos de los colores no son legales en modo 1, puede haber también problemas (de hecho, HABRÁ problemas).

Por último, unos pocos trucos:

  1. Es posible usar bloques de un solo pixel, con lo cual revertimos a las rutinas fill estándar, de este modo a$ = "V9": CALL &9000,1,1, @a$
  2. En los modos 1 y 2, se pueden sacar colores extra alternando dos tintas tales como 0,1 en la fila superior de la trama y 1,0 en la segunda. Pero sólo algunas combinaciones darán resultados visuales aceptables. Experimente.
  3. Al diseñar una trama, si se es cuidadoso se puede evitar el efecto de «regularidad», haciendo que un extremo sea la continuación de lo que ocurre en el anterior.

Amstrad Personal

★ PUBLISHER: Amstrad Personal
★ YEARS: 1987 , 1988
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD PERSONAL 1988
★ AUTHOR(S): ???

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Pattern    (Amstrad  Personal)    LISTING    SPANISHDATE: 2022-09-23
DL: 24 fois
TYPE: PDF
SIZE: 824Ko
NOTE: 2 pages/PDFlib v1.6

Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 433 millisecondes et consultée 124 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.