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

jltursan
Mensajes: 5648
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 1004 veces
Agradecimiento recibido: 2050 veces
Contactar:

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

Mensajepor jltursan » 12 Jul 2020 13:20

Último mensaje de la página anterior:

El vgmplay es una mala bestia, tiene un entorno pensado para soportar la mayor parte de IC de sonido que pululan por el mundillo MSX (y son muchos) y funciona más que como un replayer, como una suite que lo integra todo. Además, está programado usando su propio ensamblador "glass" y eso puede suponer que te encuentres algunas construcciones bastante complicadillas.

No me cabe duda alguna que se podría extraer la parte correspondiente al YM2413; pero entender lo que se cuece y quitar la paja sería una labor titánica...una vez más.

Otro candidato podría ser el TriloTracker. La versión PSG+SCC (otro chip musical MSX) es cojonuda y la versión TriloTracker FM (FM+PSG), aunque beta, podría estar interesante: TriloTracker FM

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 12 Jul 2020 15:19

jltursan escribió:El vgmplay es una mala bestia, tiene un entorno pensado para soportar la mayor parte de IC de sonido que pululan por el mundillo MSX (y son muchos) y funciona más que como un replayer, como una suite que lo integra todo. Además, está programado usando su propio ensamblador "glass" y eso puede suponer que te encuentres algunas construcciones bastante complicadillas.
No me cabe duda alguna que se podría extraer la parte correspondiente al YM2413; pero entender lo que se cuece y quitar la paja sería una labor titánica...una vez más.
Intentaré leerlo un poco mas a fondo. Presuntamente he encontrado cosas relacionadas con YM-2413 y como leer decodificando los datos del fichero de entrada ... ya veré
Otro candidato podría ser el TriloTracker. La versión PSG+SCC (otro chip musical MSX) es cojonuda y la versión TriloTracker FM (FM+PSG), aunque beta, podría estar interesante: TriloTracker FM

Lo descargaré, cuantas mas opciones tanto mejor!
muchas gracias -drinks
saludos
pere
Pd Ahora mismo estoy convirtiendo mogollón de ficheros de varios formatos a .pt3 para luego cortarles los 100 primeros bytes y añadirles la cabecera necesaria para cargar en Dragón. Si puedo meter muchos en un disco podremos probar mis 'players' con mas ejemplos ...
De momento es la prioridad número 1

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 18 Jul 2020 12:07

Hola de nuevo ...
Hace ya unos días que estoy haciendo pruebas con la placa de John Whitworth y la verdad es que tener vídeo y audio en una misma
placa descongestiona el 'setup'.
Esta placa (beta) viene con 128+64 Kb de VRAM y el mezclador de audio permite oir los BEEPs del DAC, el YM2149 y el YM2413,
de esta forma disponemos de BEEPs, efectos y música al mismo tiempo.
Si me guio por la hoja de especificaciones del V9958, parece indicar que solo las 128Kb std pueden emplearse como VideoRAM
y por tanto la pantalla *solamente* puede mostrar el contenido de dicha área, pero tal vez lo esté interpretando mal ...
¿Se puede 'dibujar' en la memoria extendida y mostrarlo en pantalla sin tener que copiar sobre la VRAM estandard?

saludos y buen fin de semana!
pere

jltursan
Mensajes: 5648
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 1004 veces
Agradecimiento recibido: 2050 veces
Contactar:

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

Mensajepor jltursan » 18 Jul 2020 14:33

¿Se puede 'dibujar' en la memoria extendida y mostrarlo en pantalla sin tener que copiar sobre la VRAM estandard?

No, no se puede, el tercer banco tiene ciertas limitaciones, a saber, no puede mostrar directamente su contenido y tampoco puede contener directamente datos de modos de pantalla superiores a SCREEN 6 (G5).
Como almacen de datos para los modos compatibles y teniendo en cuenta que la copia de VRAM a VRAM es la más rápida, está bastante decente :-)

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 19 Jul 2020 11:39

jltursan escribió:
¿Se puede 'dibujar' en la memoria extendida y mostrarlo en pantalla sin tener que copiar sobre la VRAM estandard?

No, no se puede, el tercer banco tiene ciertas limitaciones, a saber, no puede mostrar directamente su contenido y tampoco puede contener directamente datos de modos de pantalla superiores a SCREEN 6 (G5).
Como almacen de datos para los modos compatibles y teniendo en cuenta que la copia de VRAM a VRAM es la más rápida, está bastante decente :-)
Muchas gracias por la información.
Es la impresión que da una lectura paciente de la hoja de características del V9938, pero por un momento soñé con poder dibujar en esta área de memoria y luego mapearla a pantalla mediante el R#45 alternando la memoria estandar y la extendida, por tener otra posibilidad de mezclar colores ... Lástima que no se utilice la memoria como se hace en el CoCo3 -banghead
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 12 Ago 2020 19:54

Hola,
ya llevaba demasiado tiempo sin plantear dudas/problemas ...
Me he estado descargando ficheros VGM de dos páginas diferentes y mientras que unos son muy grandes y el formato es
exactamente igual al 'teórico formato VGM', los de la página "SMS Power" a pesar de tener nombre .vgm son ficheros mas cortos
y su cabecera no cuadra con la VGM estándar ... Resulta que están comprimidos y ya podrían haberles puesto la terminación VGZ
que los distingue de inmediato :-(
Afortunadamente el "7-Zip" los descomprime y los guarda sin terminación, pero su cabecera empieza como el VGM normal.
El problema, o tal vez no, es que si bien la cabecera de un fichero VGM debería der se 256 bytes, los descomprimidos por 7-Zip
solamente tienen 64 bytes, es decir, los datos empiezan a partir del offset 64($40)
La cabecera lleva información sobre el tipo de chips para los que está pensada la composición del fichero y otros datos ..
La verdad, yo no soy capaz de verlos por ninguna parte en los susodichos 64 bytes.
He encontrado otro programa especial VGM2TXT que decodifica la información del fichero VGM y crea un fichero de texto
con TODAS las instrucciones que se envían a los chips usados en la canción.
Por supuesto este fichero de texto es realmente enorme, pero muestra los bytes que que hay que enviar a cada chip ... no está mal!
Lo correcto sería, por supuesto, leer el VGM para ir enviando los datos al (a los) chips afectados.
¿Alguien se ha peleado con esto, principalmente para el YM-2413 y sabe como se gestiona la reproducción?
Me refiero a si va por interrupciones o por programa con control de tiempos. En el fichero de texto hay lineas que indican
tiempos a esperar dese 1/60 seg hasta 4/60 seg
Cualquier información al respecto será super bien recibida!
gracias por anticipado
saludos
pere

jltursan
Mensajes: 5648
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 1004 veces
Agradecimiento recibido: 2050 veces
Contactar:

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

Mensajepor jltursan » 12 Ago 2020 21:40

Apuesto por las interrupciones, es lo más saludable...

El VGM, como ya dije, es una mala bestia. Tu mejor cartucho puede ser examinar el código fuente del proyecto "VGM Play" de MSX: http://www.grauw.nl/projects/vgmplay-msx/

En ese proyecto están soportados bastantes tipos de chips de sonido, entre ellos, el YM2413.

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 12 Ago 2020 21:51

jltursan escribió:Apuesto por las interrupciones, es lo más saludable...
El VGM, como ya dije, es una mala bestia. Tu mejor cartucho puede ser examinar el código fuente del proyecto "VGM Play" de MSX: http://www.grauw.nl/projects/vgmplay-msx/
En ese proyecto están soportados bastantes tipos de chips de sonido, entre ellos, el YM2413.
Muchas gracias!
Me suena la página, pero le echaré otra ojeada ahora que tengo amas información.
He tenido suerte y he podido leer que la cabecera debe tener por lo menos 64 bytes, en cuyo caso el resto se consideran ceros. Bien!
Me parece correcto lo de ir por interrupciones, pero ésto para NTSC implica llamar la rutina cada 1/60avo de segundo, justo el tipo
de retardo mínimo que aparece en la mayoría de canciones que he visto/encontrado
Ahora será cuestión de averiguar si esta orden de esperar 1/60 es la forma de indicar el final del bloque de datos a enviar al chip en
una interrupción, en cuyo caso no sería 'exactamente' el tiempo a esperar, sinó eso, un indicador de final de datos.
Seguiré mirando los datos para ver si se puede extraer mas información. Por ahora puedo 'ver' que chips se utilizan
mirando los 64 bytes de cabecera y los datos a enviar llevan un código delante que indica a quien enviarlos!
hasta pronto
pere

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 13 Ago 2020 11:49

sigamos con el tema de como hay que reproducir las canciones ...
Tengo dos ejemplos que se 'pegan' entre si:
- 03-ColorOcean (multiple of FS time).txt en el que los WAIT son siempre múltiplos de 735 samples = 1/60 de segundo
En este caso se puede utilizar el sistema de interrupciones sin problemas ... espero
- 05-TakeBack (short timing).txt en el que los WAIT pueden tener cualquier valor (en samples) desde 1 hasta miles
Y de esta forma, no veo como reproducirlo a menos que tenga un sistema de control de tiempo muy fino (nivel sample)
y que se reproduzca la canción sin utilizar interrupciones, o sea de forma contínua ... bloqueando la CPU :-(
Con el HD63C09 la mayor frecuencia utilizable es de 1,78 MHz, una operación simple NOP requiere 1 ciclo,
o sea 1/1,78 microseg = 0,00056179 mseg
En el fichero txt se indica que 1 sample = 0,02 mseg lo cual requeriria 35,6 NOPs o cualquier otra combinación de instrucciones que acabara
consumiendo 35,6 ciclos de reloj. Supongo que las cifras están redondeadas en el fichero txt, pero no deja de ser engorroso el tener que
usar la CPU al 100% ...
¿Alguna alternativa?
muchas gracias
pere

Pd adjunto fichero pack.zip con los dos ficheros .txt que contienen los comandos a enviar al YM2413
pack.zip
(209.7 KiB) Descargado 25 veces

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 13 Ago 2020 12:56

Una duda mas sobre la reproducción de ficheros VGM

Cuando una canción indica en la cabecera la existencia de un punto de LOOP concreto, ¿Cuando hay que volver a él?
¿Al final de la tira de datos? ¿Existe algún código que inidique que hay que volver al punto de LOOP?
Cualquier información al respecto, será muy bien recibida -thumbup
gracias de antemano
saludos
pere

jltursan
Mensajes: 5648
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 1004 veces
Agradecimiento recibido: 2050 veces
Contactar:

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

Mensajepor jltursan » 13 Ago 2020 15:10

En el fichero txt se indica que 1 sample = 0,02 mseg lo cual requeriria 35,6 NOPs o cualquier otra combinación de instrucciones que acabara
consumiendo 35,6 ciclos de reloj. Supongo que las cifras están redondeadas en el fichero txt, pero no deja de ser engorroso el tener que
usar la CPU al 100% ...


Es que eso es precisamente lo que tiene que pasar, que se pueda necesitar el 100% de la CPU...

Antes de que la cosa vaya a mayores y por aclarar conceptos, ¿por qué estás analizando el formato VGM?. Si es por plantear que de alguna manera se pueda "reciclar" para crear un reproductor usable en juegos...lo veo muy poco probable. El formato VGM es un monstruo que está pensado por y para la universalidad y la fidelidad, en ningún caso para que sea práctico su uso. En otras palabras, vale para que los aficionados al BGM de los juegos puedan tener la posibilidad de escuchar en un único sitio sus melodías favoritas y para tal menester, si hace falta el 100% de la CPU, se emplea :-).
Dicho esto, lo interesante de las fuentes es que hay información de como emplear mogollón de chips de sonido y eso siempre viene bien para crearse cada uno sus propias rutinas.

Volviendo a temas técnicos, con un MSX2 se pueden conseguir interrupciones más o menos cada 0,07 msegs. (muy a groso modo) recurriendo a las interrupciones de línea del VDP; pero aun así no llegarían a esa frecuencia. Samples cada 0,02 msegs tendrían que volcarse dentro un bucle con el 100% de control por parte de la CPU y eso suponiendo que el volcado del sample no se lleve más tiempo del permitido entre sample y sample.

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 13 Ago 2020 17:09

jltursan escribió:Es que eso es precisamente lo que tiene que pasar, que se pueda necesitar el 100% de la CPU...
Antes de que la cosa vaya a mayores y por aclarar conceptos, ¿por qué estás analizando el formato VGM?. Si es por plantear que de alguna manera se pueda "reciclar" para crear un reproductor usable en juegos...lo veo muy poco probable. El formato VGM es un monstruo que está pensado por y para la universalidad y la fidelidad, en ningún caso para que sea práctico su uso. En otras palabras, vale para que los aficionados al BGM de los juegos puedan tener la posibilidad de escuchar en un único sitio sus melodías favoritas y para tal menester, si hace falta el 100% de la CPU, se emplea :-).
Dicho esto, lo interesante de las fuentes es que hay información de como emplear mogollón de chips de sonido y eso siempre viene bien para crearse cada uno sus propias rutinas.
Volviendo a temas técnicos, con un MSX2 se pueden conseguir interrupciones más o menos cada 0,07 msegs. (muy a groso modo) recurriendo a las interrupciones de línea del VDP; pero aun así no llegarían a esa frecuencia. Samples cada 0,02 msegs tendrían que volcarse dentro un bucle con el 100% de control por parte de la CPU y eso suponiendo que el volcado del sample no se lleve más tiempo del permitido entre sample y sample.
La verdad es que para juegos ya nos vale el YM2149 equivalente al AY-3-8910 habida cuenta de que la CPU nunca podrá ir a velocidades mas allá de los 1,78MHz y solamente para música, dejando el juego a 0,89MHz
Lo que estoy intentando es tener un reproductor de ficheros VGM independiente. Ya me hice uno para ficheros PT3 basado en el reproductor de
música del motor AGD. La verdad es que la calidad lo merece aunque tenga que acabar haciendo streaming de datos desde la tarjeta del SDC
Ed Snider hizo algo parecido para el CoCo3 con su CoCo-ChipTunes que puede hasta con OPL3 ...
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

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

Mensajepor pser1 » 13 Ago 2020 17:13

Una cosa que no queda clara en los ficheros convertidos a texto a partir de cualquier fichero VGM, es si cuando llega un comando WAIT
léase $61, $62, $63 el tiempo debe empezar a partir de cero o debería tenerse en cuenta el tiempo (ciclos) utilizados para enviar
los comandos anteriores al wait recibido, contando desde el final del wait anterior ....

Las dos soluciones son 'programables' aunque el no empezar de cero dificulta un poco la implementación
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

Re: Aprendiendo a manejar los chips de video V9958 y sonido YM-2149/YM2413

Mensajepor pser1 » 13 Ago 2020 22:37

Ya tengo una primera aproximación a un 'replayer' de ficheros VGM
Efectivamente los ficheros tienen unas dimensiones que obligan a poner el programa lo mas abajo posible, y si encima
quiero un Basic que vaya cargando canciones ... espero poder encajarlo todo en las 32K bajas
De entrada, calculando los tiempos de espera en función de la velocidad de la CPU = 1,78MHz, me sale lo siguiente:
Como dentro de un sesentavo de segundo (1/60=16,6666667 mseg) caben 735 muestras, cada muestra ocupa 0,02267 mseg aprox.
Un ciclo de la CPU HD63C09 utiliza 1/1,78 = 0,0005618 mseg (0,5618 microsegundos)
De forma que esperar una muestra implicaría ejecutar 0,02267/0,0005618 = 40,35 ciclos de CPU, lo he redondeado a 40
Con esta espera, la velocidad se parece bastante a la real, me falta hacer mas pruebas y escucharlo y compararlo con el sonido
que se obtiene con el reproductor que hay en la web SMS Power!
El siguiente paso será ver si estos tiempos son siempre lo que indica el fichero o si hay que descontar de ellos el tiempo empleado en
enviar al chip los comandos anteriores ... no encuentro información al respecto en ninguna parte :-(
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

Re: Aprendiendo a manejar los chips de video V9958 y sonido YM-2149/YM2413

Mensajepor pser1 » 14 Ago 2020 01:23

otra mas!
Para poder cargar en memoria ficheros VGM mayores, estoy pensando en usarlos comprimidos en formato VGZ, pero entonces
necesito un descompresor al vuelo (sobre la marcha) como el Exomizer que utilicé en "The Hobbit" para CoCo
¿Alguien conoce un descompresor de VGZ que pueda ser usado dentro del reproductor? Z-80 me vale ;-)
muchas gracias por anticipado -drinks
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4097
Registrado: 08 Dic 2012 18:34
Agradecido : 1354 veces
Agradecimiento recibido: 1121 veces

Re: Aprendiendo a manejar los chips de video V9958 y sonido YM-2149/YM2413

Mensajepor pser1 » 14 Ago 2020 12:42

Hola,
por mas que busco, *NO* encuentro ningún descompresor para ficheros vgz (presuntamente comprimidos con zlib) escrito para Z-80
para convertirlo a 6309 -banghead
Agradeceré cualquier referencia a alguno que se pueda descargar de inet -nb -nb -nb
muchas gracias
pere

jltursan
Mensajes: 5648
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 1004 veces
Agradecimiento recibido: 2050 veces
Contactar:

Re: Aprendiendo a manejar los chips de video V9958 y sonido YM-2149/YM2413

Mensajepor jltursan » 14 Ago 2020 14:36

En el código fuente del "VGM Play", que soporta los VGZ, puedes encontrar información:

https://hg.sr.ht/~grauw/vgmplay-msx/browse/src/Application.asm?rev=tip

Método Application_InflateFile


Volver a “Software MSX”

¿Quién está conectado?

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