Aprendiendo a manejar los chips de video V9958 y sonido YM-2149

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 25 Mar 2020 17:44

Último mensaje de la página anterior:

de acuerdo, aunque no lo vea todo, puedo usarlo ...
Seleccionando la pestaña V9958 puedo verlo en modos Screen10 ó Screen12, pero al grabar solamente
me da opción a bmp o png y lo que yo estoy buscando es algo que guarde el fichero en formato MSX2 y
a ser posible que genere dos imágenes entrelazadas para mejorar la calidad ...
saludos
pere

jltursan
Mensajes: 2867
Registrado: 20 Sep 2011 13:59
Agradecido : 223 veces
Agradecimiento recibido: 654 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor jltursan » 25 Mar 2020 18:29

Export function-Can output VRAM image that can be read by MSX actual machine → binary data, cassette tape image (* .CAS), tape audio data (* .WAV)
Export to PC-88 supports RGB plane solid data output
* Export to MSX is valid only when the image size is 256 × 192

Corrige la resolución y prueba a ver que tal...;-)

Por cierto, tienes que tener chunguillo el Windows, a mí también se me ve todo perfecto. Eso sí, con un W8.1

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 25 Mar 2020 19:56

jltursan escribió:
Export function-Can output VRAM image that can be read by MSX actual machine → binary data, cassette tape image (* .CAS), tape audio data (* .WAV)
Export to PC-88 supports RGB plane solid data output
* Export to MSX is valid only when the image size is 256 × 192

Corrige la resolución y prueba a ver que tal...;-)
Ya lo había convertido a 256x192 pero salvar solo me hace ficheros windows (bmp, png)
y si exporto a binario me responde que ha encontrado errores y no guarda nada. Me ha pasado con dos de los ficheros de test ...
Por cierto, tienes que tener chunguillo el Windows, a mí también se me ve todo perfecto. Eso sí, con un W8.1
Mala suerte la mía, es Windows10 que a veces hace de las suyas ...
saludos
pere
problema2.jpg
problema2.jpg (34.61 KiB) Visto 142 veces

jltursan
Mensajes: 2867
Registrado: 20 Sep 2011 13:59
Agradecido : 223 veces
Agradecimiento recibido: 654 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor jltursan » 25 Mar 2020 21:07

Lo dicho, te va rarillo tu entorno... -no

Adjunto una imagen que acabo de convertir a Screen 12:
SMC777.ZIP
(20.51 KiB) Descargado 6 veces

Ojo que va preparada para cargar en MSX, 7 bytes de cabecera de más...

BlackHole
Mensajes: 1192
Registrado: 03 Ago 2011 23:07
Ubicación: Aluche, Madrid
Agradecido : 13 veces
Agradecimiento recibido: 266 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor BlackHole » 25 Mar 2020 21:22

Lo que veo raro de las capturas es el tamaño de las letras. Tal vez estén en porcentaje superior al 100% y el programa no sabe cómo lidiar con ello.

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 25 Mar 2020 21:35

jltursan escribió:Lo dicho, te va rarillo tu entorno... -no
Adjunto una imagen que acabo de convertir a Screen 12:
SMC777.ZIP
Ojo que va preparada para cargar en MSX, 7 bytes de cabecera de más...

En ningún momento he puesto en duda que el programa exporte ficheros, lo único que he constatado
es que a las dos imágenes que he querido convertir les ha encontrados errores ... sabrá donde!
Pero no es entrelazada ... que se suelen ver mejor, por cierto no permite entrelazado en Screen 12 ...
Lo dejo, considero que el MIF es un buen programa para conversión a todos los modos MSX
gracias por vuestra ayuda
pere

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 10 Abr 2020 19:53

@jltursan
Perdona, no encuentro por ninguna carpeta el programa que me pasaste que convertía códigos de colores de AGD a MSX
que yo utilicé para cambiar/adaptar los colores a la paleta del V9958.
Ahora tengo que cambiar un color de las 'tiles' que modificaste en su momento para que se viera mejor en B/N ...
¿Podrías volver a subirlo aquí o decirme el nombre exacto para buscarlo?
muchas gracias
pere

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 10 Abr 2020 19:56

virgensita ... ZXAttribute Converter ... lo he encontrado de casualidad
hasta luego
pere

jltursan
Mensajes: 2867
Registrado: 20 Sep 2011 13:59
Agradecido : 223 veces
Agradecimiento recibido: 654 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor jltursan » 10 Abr 2020 20:04

:-) Ese mismamente

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 10 Abr 2020 20:28

medio spoiler medio igual no del todo ...
Tengo modificado el motor AGD para que cargue las pantallas, sprites y objetos.
He usado lo de carga dinámica de sprites/objetos enviando al V9958 solo los necesarios para la pantalla en curso
Me ha complicado las cosas, pero ahora me funciona y puedo 'navegar' adelante y atrás para ver todas las pantallas.
Por esto he visto las diferencias de colores respecto al original visualizado en el 'visor' de Tony. Por ello he buscado
el AGD original y he ido modificando los tiles que cambiamos para la versión B/N
De momento, y cruzo los dedos, estoy manteniendo el programa entero (motor + datos Foggy) dentro de los 32k bajos,
por lo que si no se tuercen las cosas, podría acabar con una versión para D32-MSX2+ sin necesidad de pasar a modo 64k,
no estaría mal!!
saludos
pere

jltursan
Mensajes: 2867
Registrado: 20 Sep 2011 13:59
Agradecido : 223 veces
Agradecimiento recibido: 654 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor jltursan » 11 Abr 2020 11:18

-thumbup

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 15 Abr 2020 11:38

Buenos días,
me decidí a echar una ojeada al fuente del motor MSX que convirtió José Luis y la verdad es que, ahora que ya he utilizado un poco
el chip V9958, empiezo a ver cosas interesantes que podría aprovechar aunque implique convertir *otra vez* del Z80 al 6809/6309
Veamos, me gustaría hacer algo tipo tormenta de ideas ya que todo el tiempo empleado en la parte de análisis suele reducir de forma
importante el tiempo de programación, así pues empiezo a divagar :-(
- Tratamiento de bloques (8x8 pixels = 8 bytes forma + 8 bytes color). Estos elementos pueden ser de dos clases diferentes:
a) bloques para formar el fondo de pantalla
b) fuentes de caracteres, algunas preparadas para 'dibujar' en pantalla
Los bloques se leen una sola vez al iniciar el programa, así que los he copiado en las tres partes de pantalla (en cada tercio) tanto el patrón
como los colores. Estos bloques se utilizan para ir formando pantallas conforme se van descomprimiendo de memoria RAM. Solamente se envia
a VRAM el layout (768 bytes), el resto ya está allí, además se guarda una copia del layout en RAM para facilitar el redibujado.

Los caracteres se usan para mostrar mensajes fijos como puntuaciones, número de vidas y además se emplean para crear mensajes de texto o
para mostrar un menu (inventario). En estos casos, la pantalla debe ser redibujada una vez leído/seleccionada opción por parte del usuario así
que habría que enviar al VDP todo: patrones, colores y sobreescribir el layout con el nuevo número de bloque que mostrará el carácter deseado.
El patrón y el color pueden ser enviados al 'tercio' de VRAM correspondiente al tercio de pantalla donde deben aparecer, pero ahí ya 'existen'
los patrones del fondo de pantalla, así que los nuevos deberían ocupar posiciones posteriores y los códigos ocupados serían los que habría que
enviar al layout ... esto implicaría tener tres contadores, uno por cada tercio para saber el próximo código a utilizar (0-255).
Estos contadores serían reseteados al valor inicial al redibujar la pantalla. EL valor sería: numBlocs + 1
Un inconveniente de este sistema es que un mismo carácter puede ocupar muchos patrones debido al hecho de aparecer muchas veces en el
mensaje a mostrar. No sé si se podría evitar este tipo de repetición
Paro aquí. Ya hablaremos de otros temas como sprites y objetos mas adelante ....
Agradeceré cualquier idea al respecto
saludos
pere

jltursan
Mensajes: 2867
Registrado: 20 Sep 2011 13:59
Agradecido : 223 veces
Agradecimiento recibido: 654 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor jltursan » 15 Abr 2020 19:44

Dicho rápido y mal, no veo forma de aprovechar el modo de patrones del VDP. Tal como ha sido concebido el AGD, el número de caracteres empleados en FONT, BLOCKS y OBJECTS puede ser infinitamente superior al que dispone el VDP.

Puedes plantearte que tienes 768 patrones disponibles; pero ya habrás visto que eso no es así dado que lo que tienes es una organización por tercios de pantalla con 256 patrones únicos en cada uno. Eso significa que, salvo que puedas asegurar que un patrón en concreto sólo puede aparecer en uno o varios de esos tercios de forma exclusiva, vas a tener que redefinir el patrón en cada tercio y eso reduce el número a 256 únicos, garantizando que cualquiera puede ser ubicado en cualquier posición de la pantalla. Cuando te quedas sólo con esos 256 patrones es cuando llegas a la conclusión de que no puedes alcanzar las especificaciones del AGD, sólo para poder imprimir texto con cualquier combinación de color color ya no tendrías combinaciones suficientes ni de lejos.
La posibilidad que planteas, la de tener por cada tercio el número imprescindible de patrones definidos y manejarse sólo con los nombres (si te he entendido bien), al final se reduce a ir redefiniéndolos a demanda y puedes acabar haciendo lo que hago yo, olvidarme de los nombres y emplear únicamente la redefinición constante de los 256 patrones. ¿Cómo evito en lo posible la carga de trabajo extra?, volcando en todo momento el "delta" o la diferencia entre la imgaen actual y la nueva (no es exactamente así pero espero que se entienda). Si un caracter en una posición ya ha sido redefinido de una forma y no ha cambiado, no hago nada y me ahorro el volcado.

Aparte de lo anterior, no voy a entrar en temas escabrosos como los modos no-oficiales del VDP ya que en MSX hay que ser muy exquisito con lo que se programa so pena de que la comunidad te salte al cuello si se pierde un grado alto de compatibilidad :-D. Empleando esos modos, se puede llegar a conseguir tener tres juegos diferentes de 256 patrones; pero ni por esas. Lo anterior tampoco funciona con los VDP de Yamaha, así que corramos un tupido velo y olvidémonos de ellos.

En los V9938 y V9958 si que podemos definir bastantes juegos de patrones aun contando que cada uno necesite definirse por triplicado, memoria tiene de sobras. No he sacado la cuenta de cuantos juegos podrían almacenarse (son 12KB cada uno); pero el algoritmo para seleccionar los bancos bajo demanda lo veo inabordable, hay que tener en cuenta que si cambias de juego, cambiarías todos los patrones, los 256, de golpe y seguro que eso no es algo que quieres hacer por culpa de imprimir un texto.

En fin, resumiendo; tal como ya he dicho, no veo forma de implementar ningún mecanismo que permita emplear los patrones de forma exclusiva y que a la vez satisfaga el 100% de las necesidades del AGD.

En la versión MSX yo no cargo nada en la VRAM excepto cierta cantidad de sprites a medida que se van necesitando. Cómo es lógico, en un VDP superior la cosa puede cambiar, si el Wordpak cuenta con 128KB (o 192KB) si que se pueden cargar ciertas cosas de forma permanente teniendo en cuenta que con el V9958 y en el modo de pantalla escogido, se pueden emplear comandos VDP para mover bloques dentro de la VRAM a mayor velocidad que transfieriéndolos desde la RAM.

Brainstorming off :-)

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 15 Abr 2020 20:35

@jltursan,
gracias por la explicación, tienes toda la razón, pero como yo me centro en CoCo-Dragón, no debo mantener ninguna
compatibilidad con nada en absoluto, de hecho yo me centro en el V9958 pues es el chip que lleva nuestra placa Wordpak2+
No recuerdo ningún juego, de los 219 convertidos, que necesitara mas de 100 bloques/tiles para formar las pantallas ...
Por eso me decidí a grabar los 80 en las tres áreas de pantalla al empezar el programa.
Me quedan 176 en cada tercio y si hay que llenar la pantalla con mucho texto, pero respetando el fondo del juego, dudo
que necesite mas de 100 en cada tercio donde como mucho cabrían 256 caracteres así que voy a probar a ir montando
los mensajes, que es lo que va enviando el script AGD, en los espacios libres asignando estos códigos en el layout.
Al re-cargar la pantalla se sobreescribirá el layout y volveré a ver la pantalla del juego y de paso reinicializaré el contador
de 'proximoPattern' por cada tercio de pantalla.
A ver si el Foggy no da problemas con esto ...
seguimos en contacto!
pere

jltursan
Mensajes: 2867
Registrado: 20 Sep 2011 13:59
Agradecido : 223 veces
Agradecimiento recibido: 654 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor jltursan » 15 Abr 2020 21:35

¿Tu al final mantenías los objetos como sprites?, con eso desde luego reduces la demanda de patrones, desde luego; pero, ¿como podrías resolver el problema de imprimir textos con cualquier combinación de colores teniendo en cuenta los 96 patrones diferentes de una fuente?. Supongo que en un juego normal no se va a llegar a extremos, habría que confiar en ello...

En cualquier caso, es un experimento interesante, a ver que consigues :-)

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 15 Abr 2020 23:43

jltursan escribió:¿Tu al final mantenías los objetos como sprites?, con eso desde luego reduces la demanda de patrones, desde luego; pero, ¿como podrías resolver el problema de imprimir textos con cualquier combinación de colores teniendo en cuenta los 96 patrones diferentes de una fuente?. Supongo que en un juego normal no se va a llegar a extremos, habría que confiar en ello...
En cualquier caso, es un experimento interesante, a ver que consigues :-)
Efectivamente, como tampoco hay muchos objetos en cada pantalla, los puedo colar, eso espero, como sprites ya que además no soy tan
valiente como tu y solo permito 12 sprites con movimiento por pantalla como en la versión std de Dragón-CoCo
La idea, ya implementada y que probaré mañana, es tener tres contadores que empiezan en el mismo valor NUMPATTS +1 y que van siendo leídos y utilizados para cada carácter que deba imprimirse y a cada patrón se le aplicará el color INKx16+PAPER que espero que estén definidos en el
script AGD o estableceré valores por defecto. Lo único que creo que puedo controlar es que si un carácter es idéntico al último impreso en un
tercio, que se re-aproveche el código de patrón y por tanto que no se cree uno nuevo ... siguen siendo ideas, ésta no implementada de momento.
Por supuesto, si ha cambiado la combinación de colores hay que crear un nuevo patrón si ó si aunque sea la misma letra/carácter!
Ya os iré contando mis cuitas -507
saludos
pere

Avatar de Usuario
pser1
Mensajes: 2860
Registrado: 08 Dic 2012 18:34
Agradecido : 623 veces
Agradecimiento recibido: 746 veces

Re: Aprendiendo a manejar el chip de video V9958

Mensajepor pser1 » 15 Abr 2020 23:53

Olvidaba una cosa que puede ser preocupante ...
Muchos juegos tienen un 'marco' o panel alrededor del área de juego. Suelen estar ahí los valores de puntuación, tiempo y otros estados
importantes para el jugador. Estas partes la cargábamos en PMODE4 desde disco como imagen fija que ya nadie borraba a lo largo del juego,
usando CLW en lugar de CLS, pero algunos juegos como Foggy's Quest pintan por su cuenta este panel que debería dar lugar a nuevos patrones
en cada tercio de pantalla actualizando los valores 'iniciales' de cada parte, de forma que al redibujar pantalla enviando los 768 patrones
guardados del juego, se reinicien a valores NUMPATT+n1,n2,n3 según la cantidad de patrones que se habrán añadido al pintar el marco/panel
La cosa está que ésto no lo avisa el script AGD pero como suelen dibujarse en el Evento12 (Intro/Menu) tal vez pueda buscar una manera
de controlarlo en el mismo motor ...
saludos
pere


Volver a “Software MSX”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados