HispaMSX

RE: RV: [hispamsx] Pregunta a los programadores

2004-12-02 11:41:41
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
 




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