Karoshi MSX Community
06 de Julio de 2021, 03:01:52 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 2 [3] 4
  Imprimir  
Autor Tema: Haciendo 'musicas'  (Leído 21471 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #30 : 22 de Marzo de 2006, 08:13:13 pm »

Suena más bien a problema de implementación del macro comando PLAY en BASIC más que a deficiencia del hardware. De todos modos, esperaremos a que lleguen por aquí Dioniso o WYZ para que nos ilustren con su parecer.

En cualquier caso, es una patología interesante que tenemos que conocer si queremos programar en BASIC.

Gracias por la explicación.

Sastamente. En una msxclub se comentaba que era un defecto del comando PLAY, al utilizar distintos valores para el comando de duración de nota en canales diferentes. Aconsejaban utilizar por ejemplo L8L8 en lugar de L16 si al mismo tiempo en otro canal se definía un L8.
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #31 : 23 de Marzo de 2006, 09:20:19 am »

Pues así de cabeza...

Prueba a definir el canal 3 para ruido y el 1 y el 2 para tono+ruido, luego reproduce ésto:

X$="T108M4000S1L16"
Y$="T108V13L16"
A1$="O2AO8AO2AO8AAO2AO8AAO2AO8AO2AO8AAO2EGA32"
B1$="V13O6EO5AR16O6CO5BR16O6DCR16DER16GEAO5A32"
C1$="O4R16R16R16R16AR16R16R16R16R16R16R16AR16R16R32"
PLAY X$+A1$,Y$+B1$,X$+C1$
PLAY X$+A1$,Y$+B1$,X$+C1$
(espero que no haya errores, lo he echo sin probarlo)

Esta melodía no te vale como canción porque es muy corta, pero si la sigues, puede quedar resultona.
Por cierto, lo del 32 al final de cada línea es por lo del error del ese famoso del PSG.

Anoche probé este ejemplo en casa y suena muy guay!
Lo que comentabas de la tabla de asignación de tono y ruido a los 3 canales no viene en el libro que yo tengo. Te suena de algún sítio por internet que venga eso??

A ver si pruebo esta noche el ejemplo de WYZ!
En línea
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #32 : 23 de Marzo de 2006, 09:36:26 am »

Me autorespondo. Mirando el TH, esto es lo que pone:
_____________
I/O port (Input=0  Output=1)
B7 (chB)
B6 (chA)

Noise output (ON=0  OFF=1)
B5 (chC)
B4 (chB)
B3 (chA)

Tone output (ON=0  OFF=1)
B2 (chC)
B1 (chB)
B0 (chA)
_____________

Con eso ya me vale. Poniendo SOUND7,28 tengo los canales A y B para tonos y el C para ruidos.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #33 : 23 de Marzo de 2006, 09:43:36 am »

Si utilizaras ese valor en ensamblador directamente correrías el riesgo de fundir el PSG. Afortunadamente, el BASIC es bondadoso y pongas el valor que pongas en el registro 7, siempre hace primero OR &h80. Esto es así porque los dos bits de más peso tienen que ser 1 y 0 respectivamente, indicando el "flujo" del PSG. De usar valores diferentes, podría reventar todo. De hecho, a eso se refería Patriek Lesparre cuando decía en el fallo de MSXdev'05 lo de "dangerous writes to reg #7".

Cuidadín con esos puertos.
En línea
carlobandini
Karoshi Fan
**
Mensajes: 56



WWW Email
« Respuesta #34 : 23 de Marzo de 2006, 10:11:33 am »

Pues he buscado como un loco, pero no encuentro la tabla, pero en casa seguro que la tengo, te la traigo.

Además hace tiempo saqué un ruidito curioso poniendo el primer canal en vacío (sin tono ni ruido) y escribiendo:

PLAY"M500S1T120L8O4C"

Pruébalo (cuando tengas la tabla) y prueba también a cambiar el valor de M.

Se puede usar como bombo si haces patrones de batería.
 Cheesy
En línea
carlobandini
Karoshi Fan
**
Mensajes: 56



WWW Email
« Respuesta #35 : 23 de Marzo de 2006, 04:48:51 pm »

Encontré la tabla:

       RUIDO                        TONO
  C       B       A             C       B       A
  32     16      8             4       2       1

Sumas los valores y luego:

SOUND 7, 63-suma.


En línea
SapphiRe
Visitante
« Respuesta #36 : 23 de Marzo de 2006, 05:11:54 pm »

Encontré la tabla:

       RUIDO                        TONO
  C       B       A             C       B       A
  32     16      8             4       2       1

Sumas los valores y luego:

Código:
SOUND 7, 63-suma

Y si no quieres que te penalicen por escribir un valor ilegal en el PSG mejor haces

Código:
SOUND 7,128+63-suma

 Grin Grin
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #37 : 23 de Marzo de 2006, 05:15:34 pm »

Lo que comentaba antes: el intérprete de BASIC ya comprueba eso y añade por defecto ese 80h al escribir al registro 7 del PSG. Si usas el comando SOUND no puedes freír nada en el MSX.

Lo que sí haría sería penalizar por la operacion 128+63-valor. Podríamos usar 191-valor, por ejemplo.

De todos modos, ¿cómo nos estamos liando tanto con una cosa así? Es mejor optimizar mini-rutinitas en ensamblador, para ver si hay pique sano y todos nos ahorramos algún byte o algún ciclo. ¿Alguien propone alguna?
En línea
SapphiRe
Visitante
« Respuesta #38 : 23 de Marzo de 2006, 05:27:10 pm »

Lo que comentaba antes: el intérprete de BASIC ya comprueba eso y añade por defecto ese 80h al escribir al registro 7 del PSG. Si usas el comando SOUND no puedes freír nada en el MSX.

Ah, no lo sabía. Interesante es conocerlo Smiley

Mea culpa, no había leído tu contestación de antes... estoy tan despistado últimamente que antes me he dejado el móvil en los servicios. Menos mal que lo ha visto un compañero y me lo ha recogido, que si no...  Cry Cry si es que no puedo más con tanto trabajo Cry Cry :disbelief: :disbelief:

Citar
Lo que sí haría sería penalizar por la operacion 128+63-valor. Podríamos usar 191-valor, por ejemplo.

Lo sé, lo sé... simplemente no tenía ganas de sumar :voguel:
En línea
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #39 : 23 de Marzo de 2006, 06:01:01 pm »

Lo que sí haría sería penalizar por la operacion 128+63-valor. Podríamos usar 191-valor, por ejemplo.

Supongo que bromeas, pero eso es un tema puntilloso... igual que penalizar ciertas cosas que se han penalizado y no creo que sea justo. Y lo digo porque el MSXDev es un concurso de juegos, no un concurso de programación pulcra... vamos, que las tripas del juego deberían dar igual a la hora de valorarlo. La valoración del juego no debería ir más allá de gráficos, música, jugabilidad y originalidad.

Vamos... es mi opinión...

Además, en mi caso (ya que utilizo NestorPreter) como puedo definir constantes, al operar con ellas se proporciona claridad, pero una vez generado el programa basic quedan como lo que había escrito SapphiRe.

Un ejemplo tonto:

Si declaro:
@DIR_BASE 100

Y luego hago:
X=@DIR_BASE+100

En el programa basic quedará así:
X=100+100
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #40 : 23 de Marzo de 2006, 06:37:40 pm »

Otro anatema: 100+100!

Bromas aparte, Imanok, las penalizaciones que impuso el juez en el concurso de juegos en BASIC tenían que ver no con aspectos de limpieza de código o elegancia, sino de funcionalidad. Sólo se penalizaron juegos que corrían el riesgo de no ser compatibles con todos los ordenadores MSX por diversos motivos. El criterio de compatibilidad, sin embargo, lo fijó el juez dentro de sus competencias.
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #41 : 23 de Marzo de 2006, 09:23:38 pm »

Volviendo al topic del audio :

Citar
Encontré la tabla:

       RUIDO                        TONO
  C       B       A             C       B       A
  32     16      8             4       2       1

Échale un vistazo a este enlace del "MSX Technical Handbook" :

http://www.konamiman.com/msx/th-5a.txt

Aquí vas a encontrar información muy interesante acerca del funcionamiento del PSG. Wink

Y si lo quieres completo (que no sólo de PSG vive el MSXero), Robsy te lo ofrece gentilmente en su página :

http://www.robsy.net/msxtech.pdf


Citar
PLAY"M500S1T120L8O4C"

Pruébalo (cuando tengas la tabla) y prueba también a cambiar el valor de M.

Estaría genial que, teniendo en cuenta las limitaciones del pobre PSG, se recopilara una colección de snippets de sonido con la simulación de instrumentos o de efectos como el de sirenas, explosiones, clicks, ping y pongs. En fin, algo rápido de usar para el que no tiene ni idea de como hacer el ruido del motor de un cohete para su juego, por ejemplo.

Citar
estoy tan despistado últimamente que antes me he dejado el móvil en los servicios

Espero que no haya sido dentro de la taza... Roll Eyes Tongue

Citar
Menos mal que lo ha visto un compañero y me lo ha recogido, que si no...

¡Por Dios!, ¡¡que no haya sido dentro de la taza!!  Shocked
En línea

Doom dee doom dee doom
SapphiRe
Visitante
« Respuesta #42 : 23 de Marzo de 2006, 09:32:18 pm »

¡Por Dios!, ¡¡que no haya sido dentro de la taza!!  Shocked

No, encima de la encimera de los lavabos, mientras me lavaba los dientes Grin Grin
En línea
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #43 : 24 de Marzo de 2006, 09:46:00 am »

Otro anatema: 100+100!
Pero has entendido el por qué?

Bromas aparte, Imanok, las penalizaciones que impuso el juez en el concurso de juegos en BASIC tenían que ver no con aspectos de limpieza de código o elegancia, sino de funcionalidad. Sólo se penalizaron juegos que corrían el riesgo de no ser compatibles con todos los ordenadores MSX por diversos motivos. El criterio de compatibilidad, sin embargo, lo fijó el juez dentro de sus competencias.
Me estaba refiriendo al MSXDev, más que al concurso de BASIC... pero vamos... que da igual, ya que el criterio debería ser el mismo. Creo que temas como lo del R#7 del PSG no deberían haberse penalizado porque, para empezar, el código del replayer no era ni siquiera propio de cada programador. Si, por poner un ejemplo, en un futuro se pudiesen presentar juegos hechos en NestorBasic, yo hago un juego y luego resulta que el Nestorbasic tiene un error... debería penalizarse mi juego??

Evidentemente, si pruebas el juego en cinco modelos distintos de MSX y en cuatro no va... eso es otro tema...

Con todo ésto quiero decir que para ser juez del concurso ni siquiera se debería saber programar... sino saber de juegos y de MSX. Y a poder ser, no debería haber un sólo juez... yo incluso me inclino más por votación popular (aunque eso tiene el peligro del amiguismo... pero ya somos mayorcitos).
En línea
Imanok
Karoshi Hero
*****
Mensajes: 626


« Respuesta #44 : 10 de Abril de 2006, 01:13:38 pm »

Seguimos con los misterios del PLAY...

A ver... si hago un programita con una melodía usando los tres canales y tal, desde que le hago RUN, hasta que empieza a tocar la música, pasa cierto intervalo de tiempo, al igual que también pasa tiempo hasta que vuelve a salir el cursor del basic. Hay forma de almacenar la música en el buffer del PLAY y eliminar o disminuir en la medida de lo posible esos tiempos de espera??
En línea
Páginas: 1 2 [3] 4
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!