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