CODINGAMSTRAD SEMANAL ★ AHORRAR MEMORIA EN GRÁFICOS III ★

Ahorrar memoria en gráficos III
★ 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 ★ 

En artículos anteriores hemos hablado del ahorro de memoria en gráficos a través de dos métodos distintos. Uno de ellos aumentaba el tamaño del gráfico original y el otro ampliaba los gráficos de modo 2 a modo 1. Para cerrar completamente el tema, nos falta ver cómo conseguir ahorrar memoria traspasando gráficos realizados en modo 2 a modo 0.

Con la utilización de este último método, la cantidad de memoria destinada a gráficos se consigue reducir de una forma espectacular, ya que 'el número de bytes a utilizar es únicamente una cuarta parte de la que sería necesario en condiciones normales.

Por otra parte, el programa que presentamos, además de permitirnos pasar el gráfico a modo 0, nos ofrece la posibilidad de traspasarlo en el color que nosotros deseemos, es decir en cualquiera de los 15 colores disponibles en el modo gráfico multicolor.

Por si esto fuera poco, esta rutina nos permitirá imprimir, directamente en pantalla, en el modo multicolor gráficos que se encuentren en memoria en el formato de alta resolución de pantalla.

Con todo lo dicho, rápidamente podemos darnos cuenta que pasar una pantalla de modo 2 a modo 0, es inmediato, ya que únicamente es necesario almacenar una pantalla en memoria e imprimirla en el monitor, con lo cual la obtendremos directamente en el modo multicolor.

Para el perfecto funcionamiento de nuestro programa, se deberá llamar a la misma indicando los parámetros siguientes:

D .......... Coord. vertical de pantalla.
E........... Coord. horizontal.
B........... Altura del gráfico original.
C........... Anchura del gráfico original.
HL ......... Direc. del gráfico en memoria.

Además deberemos indicar en la variable color la tinta con la que se desee imprimir el bloque gráfico en pantalla.

Vamos a ver a continuación cómo se puede conseguir esa espectacular reducción de memoria en gráficos.

En el modo de alta resolución o en modo 2, disponemos de ocho pixels por cada byte de pantalla, ya que cada uno de los bits que lo componen únicamente deben llevar información de la imagen de la figura prescindiendo de la información de color, ya que en dicho modo únicamente están disponibles un color para el fondo y otro para la tinta.

Cuando pasamos al modo de baja resolución de pantalla o modo 0, nos encontramos con únicamente dos pixels por cada byte de pantalla, ello es debido a que los bits que componen dichos bytes, deben contener la información del color además de la imagen de las figuras.

Dado que los colores posibles en dicho modo son 16 si contamos la cinta cero, la información de cada pixel de pantalla deberá estar contenida como mínimo en cuatro bits, de esta forma se explica el que un byte únicamente pueda contener la información para dos pixels.

Así pues, para traspasar gráficos del modo de alta resolución al modo de menor resolución, deberemos tratar adecuadamente cada uno de los bits para conseguir los colores deseados.

Para conseguir esto, lo primero que tenemos que estudiar, es la forma en que se almacena la información en cada uno de los bytes en el modo multicolor.

El problema fundamental de esle (ipo de economía se encuentra en una eficiente gestión de los colores.

A continuación indicaremos cuáles son los bits que contienen la información del color para cada una de las 16 tintas posibles en el modo de menor resolución:

TintaValor
111000000
200001100
311001100
400110000
511110000
600111100
711111100
800000011
911000011
1000001111
1111001111
1400111111
1511111111

Teniendo en cuenta estos datos, no debería resultar difícil tomar cada uno de los bits del gráfico en modo 2 y traspasarlo al modo 0 con el color correspondiente.

Dado que nuestro programa, además de convertir los gráficos, los imprime directamente en pantalla, se deberá disponer de todas las rutinas necesarias para traspasar el gráfico en cada uno de los colores.

Otra cosa que hay que tener en cuenta, es que, dado que por cada byte de gráfico inical, obtendremos cuatro de gráfico final, los incrementos que deberemos efectuar en cada impresión serán de cuatro caracteres en sentido horizontal en lugar de uno.

Un ahorro tan importante de memoria, no se puede realizar sin que existan algunos inconvenientes. En este caso cada uno de los gráficos sólo podrá imprimerse con un color, aunque, por supuestos, diversos gráficos, o incluso el mismo gráfico, pueden ser pintados en diferentes colores.

El segundo inconveniente reside en la velocidad de impresión en pantalla de la rutina, ya que además de esto se deberán tratar cada uno de los bits del gráfico inicial, con la consecuente pérdida de tiempo.

Aún en vista de estas dos desventajas, creemos que las utilidades ofrecidas por esta rutina superan en mucho los posibles inconvenientes, debido al enorme ahorro de memoria.

Con esta rutina conseguiremos el ahorro máximo posible para un gráfico.

Con este artículo damos por terminado el tema, por lo que a continuación expondremos en qué posibles casos puede aplicarse cada una de las diferentes rutinas que hemos visto, aunque por supuesto todas ellas son aplicables en cualquier momento.

Empezaremos por el programa que nos permitía traspasar gráficos de modo 2 a modo 1.

Conseguir 100 pantallas distintas utilizando esta técnica es simplemente un problema de imaginación.

Es el de mayor aplicación práctica, ya que se puede utilizar siempre que nos dispongamos a trabajar en el modo de resolución intermedia, en el cual tenemos cuatro colores disponibles.

Tanto es así que una rutina similar a esta es utilizada por la mayoría de los programas comerciales realizados en tres dimensiones, utilizando el llamado sistema filmation.

El siguiente método de ahorro de gráficos, es el que nos permitía magnificar o ampliar los gráficos.

Esta rutina es aplicable, principalmente, cuando se deseen rellenar amplios espacios de la pantalla con gráficos, o bien en el caso de que quiera almacenar una pantalla entera en memoria.

No es recomendable utilizar este método para imprimir los objetos o personajes que vayan a intervenir en el juego, ya que la definición que se pierde es vital para gráficos de dimensiones reducidas.

Por último, diremos que la rutina que hemos visto hoy, podrá ser utilizada en cualquier juego que deseemos confeccionar en el modo de menor resolución de pantalla y siempre que los gráficos no sean excesivamente grandes.

En general, los objetos móviles y personajes de cualquier juego, son de dimensiones reducidas, por lo que no deberemos tener ningún problema en la aplicación de la rutina.

Para disponer de esta rutina únicamente deberemos teclear el programa Basic cargador que ofrecemos al final del artículo.

Una vez ejecutado, y en caso de que no se haya mostrado ningún mensaje de error, procederemos a salvar el código objeto en cinta o disco de la forma siguiente:

SAVE''MOD20'',B,&9000,&2CB

Para ver el funcionamiento de la rutina, deberemos cargarla en memoria a partir de la dirección &9000, corriendo el código máquina en esa misma dirección.

AS

★ PUBLISHERS: Hobby Press , Amstrad Semanal
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD SEMANAL 1987
★ AUTOR: Alberto Suñer
 



★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
 » Ahorrar  memoria  en  graficos  3    (Amstrad  Semanal)    SPANISH    LISTINGDATE: 2026-07-05
DL: 1
TYPE: PDF
SiZE: 2022Ko
NOTE: Supplied by archive.org ; 5 pages/PDFlib v1.6

Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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.732-desktop/c
Page créée en 658 millisecondes et consultée 8 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.