HispaMSX

Re: RV: [hispamsx] Pregunta a los programadores

2004-12-01 21:53:47
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


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