Música 128K desde código máquina.
Moderador: Sir Cilve Sinclair
- Rafa
- Jack The Nipper
- Mensajes: 181
- Registrado: Lun May 07, 2007 11:59 am
Música 128K desde código máquina.
Hola. ¿Sabéis de alguna página o foro en el que se relate como acceder al chip de sonido desde código máquina?
Creo que era a través de dos puertos, pero no sé cuáles son.
¿Se podría hacer sonar música o sonido al mismo tiempo que el programa/juego está funcionando?(sin interrupciones).
Gracias.
Creo que era a través de dos puertos, pero no sé cuáles son.
¿Se podría hacer sonar música o sonido al mismo tiempo que el programa/juego está funcionando?(sin interrupciones).
Gracias.
RANDOMIZE USR 0
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
- Rafa
- Jack The Nipper
- Mensajes: 181
- Registrado: Lun May 07, 2007 11:59 am
Re: Música 128K desde código máquina.
OK. Gracias por contestar.
La segunda pregunta versaba sobre cómo hacer sonar esta música sin interrumpir al procesador ni usar interrupciones.(en código máquina)
La segunda pregunta versaba sobre cómo hacer sonar esta música sin interrumpir al procesador ni usar interrupciones.(en código máquina)
RANDOMIZE USR 0
- na_th_an
- Nonamed
- Mensajes: 1889
- Registrado: Lun May 07, 2007 10:16 am
- Ubicación: Andalucía
Re: Música 128K desde código máquina.
Necesitas interrupciones. Es lo único que te garantiza que se llamará a un player a intervalos regulares, algo indispensable para tocar música.
- Rafa
- Jack The Nipper
- Mensajes: 181
- Registrado: Lun May 07, 2007 11:59 am
Re: Música 128K desde código máquina.
OK. O sea que no hay solución.
También sería posible ya que el sonido no para la ejecución de un programa, aunque muy complicado de implementar, casi imposible, cada x T-estados en la ejecución del programa. Pero claro, habría que ir sumando T-estados en cada sentencia (lo que tarda cada sentencia en ejecutarse). Cada vez que lo pienso lo veo más descabellado.
Sería como programar, por ejemplo un menú. Y cada x bytes (dependiendo del tiempo que tarde en ejecutarse) meter los OUT's correspondientes.
UN POCO CUTRE, PERO PODRÍA HACERSE. ¿QUÉ OPINÁIS?
También sería posible ya que el sonido no para la ejecución de un programa, aunque muy complicado de implementar, casi imposible, cada x T-estados en la ejecución del programa. Pero claro, habría que ir sumando T-estados en cada sentencia (lo que tarda cada sentencia en ejecutarse). Cada vez que lo pienso lo veo más descabellado.
Sería como programar, por ejemplo un menú. Y cada x bytes (dependiendo del tiempo que tarde en ejecutarse) meter los OUT's correspondientes.
UN POCO CUTRE, PERO PODRÍA HACERSE. ¿QUÉ OPINÁIS?
RANDOMIZE USR 0
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Música 128K desde código máquina.
Como poder, podría hacerse, pero tendrías que estar contando los T-estados de cada instruccion para como tú mismo dices, ir metiendo los OUT's a intervalos regulares. Llevar eso a la práctica es otro cantar: o te tomas el gran trabajón (poco útil teniendo las interrupciones para hacer esto mismo más cómodamente), o te haces primero una utilidad que analice el código fuente e inserte los OUT's en los lugares apropiados, y la usas como "preprocesador" metiéndole el código fuente "silencioso" y la ristra de OUT's, y obteniendo a la salida un código fuente con OUT's insertados de forma regular. De otra forma, cada vez que cambiaras algo en el código fuente, tendrías que volver a recolocar los OUT's a mano.
Web: ZX Projects | Twitter: @zxprojects
- Rafa
- Jack The Nipper
- Mensajes: 181
- Registrado: Lun May 07, 2007 11:59 am
Re: Música 128K desde código máquina.
De acuerdo contigo en todo. Pero la gran ventaja sería que se pueden utilizar las interrupciones para cualquier otra cosa.
RANDOMIZE USR 0
- Metalbrain
- Freddy Hardest
- Mensajes: 592
- Registrado: Lun May 07, 2007 8:17 am
- Ubicación: Sevilla
- Contactar:
Re: Música 128K desde código máquina.
¿Y por que no puedes hacer dos cosas con las interrupciones? Primero actualizas la música, y luego haces lo que quieras hacer... la música suele cambiar poco en 0,02 segundos, a menos que estés haciendo una locura como el DIGISID. Además tienes que tener en cuenta que muchas veces el tiempo de ejecución de un código no es fijo: depende de los datos, variables...
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Música 128K desde código máquina.
O primero haces lo que tengas que hacer (sobre todo si está relacionado con actualizar la pantalla), y después empleas un par de docenitas de T-estados en actualizar los registros del AY.
Y si quieres más velocidad y no te basta con actualizarlos 50 veces por segundo, siempre puedes sincronizarte con el barrido horizontal de la pantalla usando el famoso IN 255...
Y si quieres más velocidad y no te basta con actualizarlos 50 veces por segundo, siempre puedes sincronizarte con el barrido horizontal de la pantalla usando el famoso IN 255...
Web: ZX Projects | Twitter: @zxprojects
- na_th_an
- Nonamed
- Mensajes: 1889
- Registrado: Lun May 07, 2007 10:16 am
- Ubicación: Andalucía
Re: Música 128K desde código máquina.
mcleod_ideafix escribió:Y si quieres más velocidad y no te basta con actualizarlos 50 veces por segundo, siempre puedes sincronizarte con el barrido horizontal de la pantalla usando el famoso IN 255...
¿El que no funciona en +2A y +3?
- mcleod_ideafix
- Johnny Jones
- Mensajes: 3985
- Registrado: Vie Sep 21, 2007 1:26 am
- Ubicación: Jerez de la Frontera
- Contactar:
Re: Música 128K desde código máquina.
... a menos que sueldes la famosa resistencia entre los bit 7 de cada banco...
Pero sí, vaya, que si se va a usar el AY es porque el hard es un +2/+3 y ahí no puedes contar conque exista ese hack... Nada, nada, a usar la interrupción de los 50 Hz
Pero sí, vaya, que si se va a usar el AY es porque el hard es un +2/+3 y ahí no puedes contar conque exista ese hack... Nada, nada, a usar la interrupción de los 50 Hz
Web: ZX Projects | Twitter: @zxprojects
- TrueVideo
- Jack The Nipper
- Mensajes: 195
- Registrado: Mié May 23, 2007 8:34 am
- Ubicación: BCN
- Contactar:
Re: Música 128K desde código máquina.
Tal como te han dicho la solución pasa por usar interrupciones. Podrás seguir utilizando las interrupciones para lo que quieras porque por suerte la actualización de los registros necesarios es una cuestión trivial. En el caso de los efectos incluso puedes permitirte el lujo de incluir un pequeño procesador parametrizable para hacer perrerías varias en tiempo real (LFO's, tremolos, vibratos locos...) con una inversión mínima de t-estados.
Respecto a la sincronización da igual que lo hagas antes o después de los accesos a pantalla, porque siendo para 128 supongo que utilizarás la pantalla virtual, no?
Respecto a la sincronización da igual que lo hagas antes o después de los accesos a pantalla, porque siendo para 128 supongo que utilizarás la pantalla virtual, no?
¿Quién está conectado?
Usuarios navegando por este Foro: Bing [Bot] y 25 invitados