HispaMSX

RE: RV: [hispamsx] Pregunta a los programadores

2004-12-02 11:58:08
Hola!

Bueno, en SCREEN 2, en realidad, para poder poner un pixel en cualquier parte de la pantalla, lo que hace el TMS9918 es cubrir la totalidad de la pantalla con caracteres distintos. Lo hace correlativamente, algo asi como:

0-1-2-3-4-5-6-7-8-9-10....-30-31
32-33-34-...               -62-63
etc.

Y al dibujar cualquier cosa, en realidad, lo que hace es redefinir los caracteres y sus colores. Como veras, 256 caracteres suponen una masa de 256x64 pixels, mientras que la pantalla es de 256x192. Por ello, hay tres bancos distintos de caracteres y colores, uno para cada tercio de la pantalla.

Lo que hace el snippet que comentas es simplemente forzar el VDP para que utilice solo un unico bloque de caracteres, es decir, 256 caracteres para toda la pantalla. En realidad, conviertes SCREEN 2 en SCREEN 1 con caracteres multicolor, nada mas. Por supuesto, no te sirve para pegar "pantallazos", pero si para evitar redefinir tres veces los mismos caracteres. Ademas, esto te facilita usar redefiniciones dinamicas de caracteres, para efectos de scroll y otros semejantes. Verifica la pantalla de presentacion del PICTURE PUZZLE: el scroll esta hecho redefiniendo caracteres y colores. Bastante suavecito, verdad?

Si tienes mas dudas, mandame un email privado. A ver si puedo actualizar ya la pagina con el nuevo programa opensource, la nueva version del asMSX y las herramientas adicionales que he creado.

Un saludo,

Edu Robsy


From: "Dani" <danibarrientos(_en_)yahoo(_punto_)es>
Reply-To: hispamsx(_en_)yahoogroups(_punto_)com
To: <hispamsx(_en_)yahoogroups(_punto_)com>
Subject: RE: RV: [hispamsx] Pregunta a los programadores
Date: Thu, 2 Dec 2004 11:40:32 +0100


Gracias majetón!!! Me viene muy bien tu respuesta, aunque lo que yo quería
saber era lo de los bloques 8x8, el resto más o menos lo controlaba, me
viene muy bien porque tengo así un resumen bueno a mano.
Bueno, y aprovechando la enorme amabilidad que despides :-)  ahí va otra
pregunta que ya la hice en su día pero nadie me contestó..  :-(
Tiene que ver con un "snippet" que el señor Robsy tiene en su página, el del modo mixo. Realmente no entiendo qué está haciendo diferente ahí a lo que se
supone que hace directamente la BIOS al poner la pantalla en Screen 2, tal
vez sea porque el "Red Book" no documenta algo del VDP, porque simplmente
veo que se están estableciendo las direcciones de las distintas tablas de la misma forma que se documenta que lo hace el Screen 2. Vamos, que no tengo ni idea de cómo se está diciendo que las 3 partes de la tabla de nombres apunte
al primer tercio de la tabla de patrones  (creo que me embrollé mucho, pero
el que controle este tema creo que me entenderá....)

Chaoooo

-----Mensaje original-----
De: msx_forever [mailto:msx_forever(_en_)yahoo(_punto_)es]
Enviado el: miércoles, 01 de diciembre de 2004 21:53
Para: hispamsx(_en_)yahoogroups(_punto_)com
Asunto: Re: RV: [hispamsx] Pregunta a los programadores



>Hola chavalones. Gracias por las contestaciones, así que voy por
>partes:
>
>    1º pregunta para msx_forever: dices que el fichero contiene los
bytes
>"a pelo" de la pantalla, ahora bien, ¿Cómo están organizados?¿por filas
>o columnas directamente o (lo que sería más cómodo) en bloques de
>caracteres 8x8?. Hala, gracias y ya no doy mas la vara

Hola!

Te cuento: Un fichero generado en basic en Screen 2, por ejemplo, (o para el
caso uno generado por el BMP2MSX,
tb en SC2), contiene una cabecera de 7 bytes, el primero es el que indica q
tipo de fichero es, o algo asi y ni me
acuerdo q byte es, pq solo lo veo pa borrarlo. Luego hay 4 que indican la
posicion de inicio y final de los datos (en el
caso de un fichero grafico, pues son direcciones de VRAM), y luego 2 bytes
mas que en los casos de los .bin serian
la direccion de ejecucion, y en un fichero grafico no se que pintaran pero
estan. Todo eso vale para cualquier modo
de pantalla (a menos q yo desconozca algo, lo cual seria habitual)

Si tienes poca paciencia GOTO ~RESUMEN AL TOSTON

El resto son los datos de la pantalla, tal y cual van copiados a la VRAM. En
el caso de Screen 2 tenemos (y deja q
mire mi tabla de consulta de Vram, q siempre se me olvidan las
direcciones...) :

de 0 a &h07ff, dos ks con las definiciones de los caracteres del primer
tercio de pantalla. (256 caracteres *8 bytes) cada byte es una linea de 8
pixels del caracter &B11110000  luego 8 bytes forman un caracter. Primero
esta la del
caracter 0 luego el 1 el dos...... hasta llegar a la A (65) ..... y asi
hasta el caracter 255.

Luego hay dos zonas mas, (&H800-&h0FFF y &h1000-&h17FF) con otros 256
caracteres por cada, con las
definiciones de las zonas 2 y 3.
Despues en &h1800 hasta &h1ff tienes 768 bytes que son los caracteres que
van a aparecer en pantalla. Si en
&h1800 tienes un 65 ("A") te aparecera una A (o el dibujito con el q la
tengas definida) en pantalla, en la primera fila y
primera columna. Total son 256+256+256 y cada grupo de 256 sus definiciones
corresponden a las zonas antes
indicadas)

Luego viene el area de atributos de sprite y luego la paleta en &h1b80 y
seguidamente en &h2000 tienes las
definiciones de los colores de los caracteres, de igual forma que teniamos
en &h0000 las de los patrones. Tambien
corresponden 8 bytes por caracter y tb tenemos 3 grupos de 256 bytes, uno
por zona.

Finalmente estan las definiciones de los sprites en &h3800.Todo esto si no
cambias los valores de estas zonas en el
VDP, si no me equivoco...

En ese orden estan, de entrada, los datos en la VRAM, y en ese orden se
graban en un fichero cuando haces
Bsave ,S. Ahora bien, recuerda que puedes hacer Bsave "tal",&h2000,&h37ff,S,
y entonces solo grabaras los datos
respectivos a los colores. Por lo tanto dependera de que haya grabado en el
fichero, para saber donde van (para
eso sirve la cabecera). Cuando se elimina la cabecera se tienen los datos a
pelo, y se pueden usar para ponerlos en
ficheros ROM,BIN o lo que sea, (tb puede hacerse dejando la cabecera y luego
no copiandola a vram, claro), asi
que en tal caso has de saber a que parte de la VRAM corresponden esos datos,
si son todos los datos o solo la
parte de deficiones o solo colores o solo sprites... Asi puedes grabar solo
los primeros 256 caracteres y copiar esos
datos en las otras 3 zonas, para tenerlos todos iguales.... tener definidas
en ram muchos mas patrones de los q
caben en Vram e irlos intercambiando... etc...

~RESUMEN AL TOSTON:

Ufff vaya rollo he soltao y ni yo lo veo bien explicado... :S Es muy facil,
en serio, para tu pregunta inmediata, si se
trata de definiciones de caracteres, vienen efectivamente en bloques de
caracteres 8x8, primero el caracter 0 (8
bytes) , luego el 1..... hasta el 255.  Luego la pantalla en si, 768 bytes,
que indica, columna 0, fila 0, caracter Tal,
columna 1, fila 0, caracter cual.... , luego los sprites, la paleta y luego
los colores tb en 8x8, primero el caracter 0,(8
bytes --> &HF0 F=color 15 de la paleta <tinta=unos de la definicion
&B11110000> y 0=fondo <ceros &B11110000>.

~PUBLICIDAD: Creo que en la call 2 venia esto tambien explicado :)
~PUBLICIDAD OBSOLETA: MSXCLUB num 58 te lo explica tambien bastante bien en
el articulo EXTRASCREEN Y por supuesto en Tecnical Jambucos varios.

Si sigues teniendo dudas escribeme en privao y te mando algun ejemplo
practico :)

> 2º para JamQue o j4mk3 (¡¡anda, que vaya nombres que os ponen ahora
>los padres!! ;-) ). Me parece interesante lo del secuenciador PSG, me
>interesa principalmente porque no tengo ni guarra de hacer música en
>MSX ni de reproducirla y no tengo tiempo/ganas de mirarlo.

A mi tb me gustaria uno de esos :P

Saludos!

Juan Luis, MsxKun



*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos


    hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com

    http://es.docs.yahoo.com/info/utos.html






*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos


    hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com

    http://es.docs.yahoo.com/info/utos.html





_________________________________________________________________
Descarga gratis la Barra de Herramientas de MSN http://www.msn.es/usuario/busqueda/barra?XAPID=2031&DI=1055&SU=http%3A//www.hotmail.com&HL=LINKTAG1OPENINGTEXT_MSNBH


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>