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

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 06 Jun 2020 11:57

Último mensaje de la página anterior:

jltursan escribió:Eso es precisamente con lo que me estoy peleando -banghead
Como era de esperar, al no haber probado nunca el ayFX_MODE=1, viene con sorpresita. Cuando lo tenga al 100% ya veré si merece realmente la pena dejarlo accesible de alguna manera o si es mucho mejor que el canal estático, dejarlo a 1 por defecto.

Hola José Luis,
he estado echando una ojeada al motor sfx y me da la impresión de que se diseñó claramente para emitir un único sonido, de lo contrario
no veo porqué se definieron variables 'globales' si puedes llegar a tener tres instancias en marcha, me refiero a
ayFX_Mode	rzb	1		; ayFX mode
ayFX_Bank rzb 2 ; Current ayFX Bank
ayFX_Priority rzb 1 ; Current ayFX stream priotity
ayFX_Pointer rzb 2 ; Pointer to the current ayFX stream
ayFX_Tone rzb 2 ; Current tone of the ayFX stream
ayFX_Noise rzb 1 ; Current noise of the ayFX stream
ayFX_Volume rzb 1 ; Current volume of the ayFX stream
ayFX_Channel rzb 1 ; PSG channel to play the ayFX stream

Las dos primeras son comprensibles, pero a partir de la tercera, para mi, deberían ser tablas de tres elementos usando como índice
el canal PSG que utilizan, pero puedo andar muy desencaminado, por supuesto ...
saludos
pere

jltursan
Mensajes: 2974
Registrado: 20 Sep 2011 13:59
Agradecido : 246 veces
Agradecimiento recibido: 728 veces

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

Mensajepor jltursan » 06 Jun 2020 13:57

Bueno, es que realmente sólo emite un sonido cada vez. Lo que hace el "modo 1" es que el canal de salida va cambiando cada frame. Supuestamente eso debería afectar menos a la evolución de la música dado que no se pierde constantemente un mismo canal y le da un poco más de "cuerpo" a los sonidos.

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 06 Jun 2020 14:44

jltursan escribió:Bueno, es que realmente sólo emite un sonido cada vez. Lo que hace el "modo 1" es que el canal de salida va cambiando cada frame. Supuestamente eso debería afectar menos a la evolución de la música dado que no se pierde constantemente un mismo canal y le da un poco más de "cuerpo" a los sonidos.

Cuando probé poniendo tres SOUND x seguidos me dió la impresión de oirlos todos. No he mirado como funciona, estoy en el "ayFX_Init" ahora mismo.
¿Quieres decir que con multi-sonido se dedicaría a multiplexarlos y encima a enviarlos a un canal distinto a cada frame?
Me parece muy interesante, a ver si tengo tiempo este fin de semana par estudiarlo mejor!
saludos
pere

jltursan
Mensajes: 2974
Registrado: 20 Sep 2011 13:59
Agradecido : 246 veces
Agradecimiento recibido: 728 veces

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

Mensajepor jltursan » 06 Jun 2020 15:07

Fijate en el ayFX_PLAY, en cada paso y si el ayFX_MODE está a 1, va rotando el ayFX_CHANNEL haciendo que en cada frame se envien los datos del SFX a un canal diferente cada vez. Eso es lo que le da más probabilidades al SFX (y de paso a la música) de sonar algo más. De hecho, si no hay música, la diferencia es brutal.

A ver si acabo de corregirlo...

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 06 Jun 2020 20:40

@jltursan,
no veo claro el funcionamiento en mode multi-efecto.
Supongamos que llega un SOUND 5, el programa llama a "Sfx_Set" que establece prioridad máxima (0) y llama a "ayFX_Init" donde se busca
el inicio del sonido a emitir dentro del fichero sfx.afb y se guarda en "ayFX_Pointer"
Cuando se produzca la primera interrupción de retrazado vertical, se llamará a "Sfx_Play" que leerá el primer byte (de flags y volumen) y
en función de los flags leerá dos bytes para la frecuencia del Tono y/o un byte para el 'Noise' guardando estos valores y el volumen en las
vairiables 'globales' correspondientes. Luego graba los valores en la estructura de registros a enviar al chip de sonido.
Si no ocurre nada mas, en la próxima interrupción, el programa elegirá el siguiente canal para enviarle el siguiente bloque de datos (frame)
del sonido en curso al chip de sonido. Hasta aquí todo bien, pero ahora llega un SOUND 3, que a través de "Sfx_Set" recibirá prioridad máxima
también (0) y llamará a "ayFX_Init. Como antes ahí se busca el inicio del sonido (nº3) y se guardará en "ayFX_Pointer" o sea que ya nos podemos
despedir el SOUND 5 del que solo hemos enviado 2 frames de su total y a partir de ahora con cada retrazado vertical se leerá un byte (de flags
y volumen) pero del SOUND 3 de manera que se pierde la simultaneidad de sonidos, ni siquiera tiene posibilidad de multiplexarlos, así que
debo decir que no 'puedo ver' la forma en que se podrían llegar a oir dos o tres sonidos a la vez. Solo tenemos un puntero al fichero de efectos :-(
saludos
pere

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 06 Jun 2020 21:29

otra cosa ...
Veo que la si la variable "ayFX_Mode" es igual a cero entonces *nunca* se cambia de canal, por lo tanto, lo que yo oigo con el
Diamond Geezer, por poner un ejemplo, siempre suena desde el canal 1 = Canal C
Entiendo, pues, que para conseguir cambios del canal utilizado es imprescindible que "ayFX_Mode" sea distinto de cero
saludos
pere

jltursan
Mensajes: 2974
Registrado: 20 Sep 2011 13:59
Agradecido : 246 veces
Agradecimiento recibido: 728 veces

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

Mensajepor jltursan » 06 Jun 2020 21:36

ni siquiera tiene posibilidad de multiplexarlos, así que
debo decir que no 'puedo ver' la forma en que se podrían llegar a oir dos o tres sonidos a la vez


Claro, si es lo que te decía, que sólo se puede escuchar un sonido a la vez. Lo que cambia de canal son los frames; pero en cuanto se inicia un nuevo sonido, se acabó lo que se daba.

Ya tengo resuelto lo del "mute"; pero es más puñetero de lo que en un principio pensaba (con ayFX_MODE=1, claro está) y no me acaba de convencer la solución -no

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 06 Jun 2020 23:30

jltursan escribió:
ni siquiera tiene posibilidad de multiplexarlos, así que
debo decir que no 'puedo ver' la forma en que se podrían llegar a oir dos o tres sonidos a la vez

Claro, si es lo que te decía, que sólo se puede escuchar un sonido a la vez. Lo que cambia de canal son los frames; pero en cuanto se inicia un nuevo sonido, se acabó lo que se daba.
Ya tengo resuelto lo del "mute"; pero es más puñetero de lo que en un principio pensaba (con ayFX_MODE=1, claro está) y no me acaba de convencer la solución -no

Visto lo visto, aunque no permite emitir mas que un único sonido, la idea de cambiarlo de canal es buena, pero un sonido siempre acabará
en un canal y dejará los otros dos sin cerrar, para evitarlo, al detectar el fin de sonido (D0, 20) deberíamos cerrar los tres canales de efectos
sin que ello afecte a los de música o poco útil nos va a resultar ...
saludos
pere

jltursan
Mensajes: 2974
Registrado: 20 Sep 2011 13:59
Agradecido : 246 veces
Agradecimiento recibido: 728 veces

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

Mensajepor jltursan » 07 Jun 2020 00:48

Esa es la única solución, cerrar los tres canales. Si no hay pista de sonido no hay problema y simplemente funciona, en el caso de que suene música, pues durante un frame dejarás en silencio dos canales que tenían (probablemente) un frame de música cargado. Evitar eso ya complica bastante las cosas.

Por lo que estoy viendo parece funcionar bien. Si me quedo convencido mañana te cuento, que también he corregido un fallo garrafal en la reproducción de la música :-(

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 07 Jun 2020 10:49

jltursan escribió:Esa es la única solución, cerrar los tres canales. Si no hay pista de sonido no hay problema y simplemente funciona, en el caso de que suene música, pues durante un frame dejarás en silencio dos canales que tenían (probablemente) un frame de música cargado. Evitar eso ya complica bastante las cosas.
Por lo que estoy viendo parece funcionar bien. Si me quedo convencido mañana te cuento, que también he corregido un fallo garrafal en la reproducción de la música :-(

Hola José Luis,
Genial! Ya me irás contando.
He tenido otra idea 'especial', tal vez podríamos hacer nosotros el multiplexado de efectos y música de forma simple en el ISR
sin mas que poner:
inc	>TIMER			; increment timer
IF YFLAG || EFLAG ; if Music or Effects are enabled
lbsr PsgrOut ; send the registers to the YM-2149
lda >TIMER
bita #1 ; test bit 0
beq Nmi01 ; if not set ... only effects
IF YFLAG ; if Music enabled
lbsr Music_Play ; play a music frame
bra Nmi02 ; only music
ENDIF
Nmi01
IF EFLAG ; if effects enabled
lbsr Sfx_Play ; play a sound frame
ENDIF
Nmi02

En mi rutina ISR incremento el timer que gestiona la emisión de BEEPs y además permite a VSync 'esperar' a la interrupción siguiente.
La idea sería que una interrupción llamara a la rutina que emite efectos y a la siguiente a la de música, pero nunca ambas a la vez
Pasaríamos de 60 frames musicales por segundo a la mitad, pero para efectos *seguro* que no se nota, la parte musical no puedo
juzgarlo ya que todavía no he avanzado mucho en la conversión ...
Seguimos en contacto
pere

jltursan
Mensajes: 2974
Registrado: 20 Sep 2011 13:59
Agradecido : 246 veces
Agradecimiento recibido: 728 veces

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

Mensajepor jltursan » 07 Jun 2020 11:08

Al menos en lo que respecta a la música lo acabo de probar y como era de esperar no suena nada bien. La música va lenta y "arrastra" las notas.
Los sonidos tampoco creo que consiguiesen sonar demasiado bien. Es posible que se pudiese compensar algo a la hora de diseñarlos (¿con menos resolución?); pero no esperaría gran cosa.

Con tres canales poco se puede hacer :-). En ocasiones y dependiendo de la maestría del autor, se dejan dos para la música y uno se reserva para los efectos; para melodías sencillas es muy efectivo. Si tuviesemos un SAA1099 otro gallo cantaría, con 6 canales parece casi que uno puede hacer lo que quiera -grin

Por cierto, ¿te vale que te adjunte el ayFX-ROM.asm al completo?

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 07 Jun 2020 12:33

jltursan escribió:Al menos en lo que respecta a la música lo acabo de probar y como era de esperar no suena nada bien. La música va lenta y "arrastra" las notas. Los sonidos tampoco creo que consiguiesen sonar demasiado bien. Es posible que se pudiese compensar algo a la hora de diseñarlos (¿con menos resolución?); pero no esperaría gran cosa.
Con tres canales poco se puede hacer :-). En ocasiones y dependiendo de la maestría del autor, se dejan dos para la música y uno se reserva para los efectos; para melodías sencillas es muy efectivo. Si tuviesemos un SAA1099 otro gallo cantaría, con 6 canales parece casi que uno puede hacer lo que quiera -grin
Por cierto, ¿te vale que te adjunte el ayFX-ROM.asm al completo?

Ya me temía que la música cambiaría simplemente a doble duración las notas ... pero puedo asegurarte que los efectos de tu banco no sufren
cambio alguno al reproducirlos a mitad de velocidad. Si lo puedes comprobar, quizás podríamos dejarlos a medio gas, así afectarían la mitad
de veces a la música ...
Me va perfecto el .asm completo, sin problemas! Entiendo que el ayFX-RAM no ha cambiado en nada, ¿Verdad?
Lo mismo me servirá cuando hayas modificado el ayPT3-RAM.asm. Muchas gracias -thumbup
saludos
pere

jltursan
Mensajes: 2974
Registrado: 20 Sep 2011 13:59
Agradecido : 246 veces
Agradecimiento recibido: 728 veces

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

Mensajepor jltursan » 07 Jun 2020 12:40

Voy a probar también los efectos, a ver que tal...

El ayFX-ROM con correciones:

ayFX-ROM.zip
(3.41 KiB) Descargado 1 vez

Prueba a ver y me cuentas. Básicamente lo que hago es evaluar dos posibles escenarios: si no hay música apago todos los canales, si hay música y está activo el modo 1 también los apago todos, si es modo 0, sólo el canal asignado a los efectos.

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 07 Jun 2020 15:09

jltursan escribió:Voy a probar también los efectos, a ver que tal...
Prueba a ver y me cuentas. Básicamente lo que hago es evaluar dos posibles escenarios: si no hay música apago todos los canales, si hay música y está activo el modo 1 también los apago todos, si es modo 0, sólo el canal asignado a los efectos.

De acuerdo, muchas gracias.
De momento solo puedo probar con efectos 'en solitario'. En cuanto me sea posible trataré de acelerar la conversión de la parte de la música.
saludos
pere

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 07 Jun 2020 16:35

@jltursan
Ya he pasado tus modificaciones al motor 6309-V9958.
De entrada con "FX_Mode" definido igual a cero como anteriormente, lo he probado con el Diamond Geezer y todo ok, sin problemas
Y lo mismo ha pasado al poner el valor igual a 1, por lo que entiendo que el 'ruido' iba conmutando de un canal al anterior y al
finalizar los cerraba todos (no hay música habilitada)
muchas gracias
Ya me pasarás el fichero de música cuando lo hayas modificado ...
Mientras voy a empezar a convertirlo
saludos
pere

jltursan
Mensajes: 2974
Registrado: 20 Sep 2011 13:59
Agradecido : 246 veces
Agradecimiento recibido: 728 veces

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

Mensajepor jltursan » 07 Jun 2020 17:08

Las modificaciones afectaban únicamente al método "psgrout", por lo que empleando el del ayFX-ROM vale. Aquí lo tienes:

PT3-ROM.zip
(4.72 KiB) Descargado 1 vez

Los archivos PT3 se supone que no pueden ser usados tal cual, hay que eliminar los 100 primeros bytes de cada uno.

Avatar de Usuario
pser1
Mensajes: 3012
Registrado: 08 Dic 2012 18:34
Agradecido : 709 veces
Agradecimiento recibido: 780 veces

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

Mensajepor pser1 » 07 Jun 2020 18:28

jltursan escribió:Las modificaciones afectaban únicamente al método "psgrout", por lo que empleando el del ayFX-ROM vale. Aquí lo tienes:
PT3-ROM.zip
Los archivos PT3 se supone que no pueden ser usados tal cual, hay que eliminar los 100 primeros bytes de cada uno.

Muchas gracias!
SI, algo leí al respecto en un documento llamado "AGD-MSX2-README.TXT", de todas formas hay tela para convertir todavía ;-)
saludos
pere


Volver a “Software MSX”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado