Mezclador de audio PCM para Atari STE

Atari 520/1040 megaST

Moderador: Fundadores

Responder
Avatar de Usuario
masteries
Aspirante a demonio
Aspirante a demonio
Mensajes: 392
Registrado: 08 Sep 2017, 12:47
Has thanked: 37 times
Been thanked: 34 times

Mezclador de audio PCM para Atari STE

Mensaje por masteries »

Saludos compañer@s,

Os dejo por aquí un ejemplo de algo que ando trasteando últimamente; un mezclador de audio PCM para el sonido por DMA presente en los Atari STE.

La idea es disponerlo en forma de una librería más para las herramientas de programación de videojuegos Atari Game Tools de Douglas Little, librerías para programar en lenguaje C , estupendas que hacen uso del hardware del STE para el scroll, los sprites y te permite disponer de más de 16 colores en pantalla (esto último lo hace sin demandar CPU).

De momento les falta soporte de audio, y ahí es donde he entrado, a darle duro al hardware del STE;
este mezclador de audio no utiliza el chip Yamaha, éste queda libre para reproducir música (sería lo suyo), música in-game desde el Yamaha, y los efectos de sonido con el PCM. El mezclador está diseñado para 3 voces, de momento a 12,5 KHz; por encima sería exagerado (por carga de CPU) para videojuegos.

Editado: No me deja adjuntar archivos, aparece una exclamación amarilla, os dejo el enlace del hilo original en "Retrowiki" y del último post podréis descargarlo, disculpad las molestias:

http://www.retrowiki.es/viewtopic.php?f ... p200110171
Vendo memorias trapdoor para amiga 500 y 500 Plus:
1MB : viewtopic.php?f=50&t=7107
512 KB: viewtopic.php?f=50&t=7022
Avatar de Usuario
masteries
Aspirante a demonio
Aspirante a demonio
Mensajes: 392
Registrado: 08 Sep 2017, 12:47
Has thanked: 37 times
Been thanked: 34 times

Re: Mezclador de audio PCM para Atari STE

Mensaje por masteries »

Hacía mucho que no lograba encontrar tiempo para el STE,

Pero por fin aquí está el mezclador de sonido PCM definitivo para usar en juegos;
he tenido que reescribirlo todo en ensamblador y ha sido bastante horroroso;

Lo bueno es que ahora funciona mucho mejor, empalma los frames de audio sin que se note nada raro.
Admite hasta 3 voces (3 sonidos simultáneos) y los sonidos se pueden reproducir en bucle.

Mezcla a 12,5 KHz y consume el 6,5 % de la CPU disponible en cada fotograma, por lo que te queda mucha CPU para usar en tus juegos.
Más rápido y efectivo que la anterior versión en C.

Adjunto ejecutable .tos a modo de demo y código fuente.

http://www.retrowiki.es/viewtopic.php?f ... p200120801


Editado: Adjunto juego de prueba con audio.
(Funciona bien, pero hay un conflicto entre el Timer A y el D que provoca un fallo en el overscan cada 4 - 5 segundos, ARREGLADO; pero podéis probarlo para escuchar el audio del STE en toda su gloria)

Las teclas son A,W,S,D y shift para disparar. Necesita al menos 2 MB de RAM en el STE

El juego lo podéis descargar del mismo enlace anterior.

Invocado,
WhatIsAMan escribió:
Última edición por masteries el 14 May 2020, 18:35, editado 1 vez en total.
Vendo memorias trapdoor para amiga 500 y 500 Plus:
1MB : viewtopic.php?f=50&t=7107
512 KB: viewtopic.php?f=50&t=7022
Avatar de Usuario
masteries
Aspirante a demonio
Aspirante a demonio
Mensajes: 392
Registrado: 08 Sep 2017, 12:47
Has thanked: 37 times
Been thanked: 34 times

Re: Mezclador de audio PCM para Atari STE

Mensaje por masteries »

Invocado,
WhatIsAMan escribió:
Ya está solucionado el asunto del overscan, ha sido sencillo, pero rarito; se ha añadido una variable que se pone a 1 cuando se ejecuta la interrupción del blanking vertical en la primera línea de la pantalla; cuando llega a la última línea, esta interrupción se vuelve a ejecutar y la variable se pone a 0. Obviamente esta interrupción ya forma parte de las librerías gráficas de las AGT
Ha sido un añadido minúsculo.

Ahora cuando se ejecuta la interrupción del mezclador de audio, se comprueba el valor de esta variable; si es 1 es que estamos cerca de la interrupción de la línea 1 y si es cero estamos demasiado cerca de la interrupción de la última línea.

En la interrupción del mezclador se añade un sample adicional al DMA si el valor es 1, y no se añade nada si es 0; así mantienes la ejecución del mezclador en un intervalo de tiempo seguro donde no se van a perturbar varias interrupciones.

He añadido la correción al defectillo en el post anterior,
Vendo memorias trapdoor para amiga 500 y 500 Plus:
1MB : viewtopic.php?f=50&t=7107
512 KB: viewtopic.php?f=50&t=7022
Avatar de Usuario
masteries
Aspirante a demonio
Aspirante a demonio
Mensajes: 392
Registrado: 08 Sep 2017, 12:47
Has thanked: 37 times
Been thanked: 34 times

Re: Mezclador de audio PCM para Atari STE

Mensaje por masteries »

Actualización gorda:

Dándole vueltas a como mezclar más y mejor, como disponer de más canales de sonido...

Me he decidido a pensar en el procesador del Atari ST/E como realmente lo vendían, como un micro de 32 bits, y sin pensar en si el bus es de 16 bits...
total que he probado una versión del mezclador pensando en un sistema de 32 bits. Sin miramientos...

¡Ahora el mezclador puede mezclar 6 canales de sonido al precio que antes costaban 3!

Con 6 canales ya no tienes límite en lo que a audio se refiere, al menos para juegos 2D.

Lo dejaré así, listo para 6 canales / voces.
Vendo memorias trapdoor para amiga 500 y 500 Plus:
1MB : viewtopic.php?f=50&t=7107
512 KB: viewtopic.php?f=50&t=7022
Responder

Volver a “Atari”