Buscando una Covox / LPT-DAC

Emulación de sistemas DOS, Windows, DR-DOS, OS/2, Linux y sus sabores. Desde 8088 hasta Pentium 3.
Avatar de Usuario
Guillian
Commodore 128
Commodore 128
Mensajes: 102
Registrado: 16 Mar 2010, 12:54

Re: Buscando una Covox / LPT-DAC

Mensajepor Guillian » 04 Oct 2013, 10:23

Yo tengo unos cuantos DACs de 8 bits (R2R encapsulados) por si os interesan:

Imagen

Los pines son GND, 8 bits y salida.

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Buscando una Covox / LPT-DAC

Mensajepor na_th_an » 04 Oct 2013, 11:20

mcleod_ideafix escribió:Tengo en la recámara un proyecto que llevo postergando desde hace años, muchos años: una implementación del chip Paula de Amiga, para el Spectrum. Es decir, un chisme que permite al Spectrum reproducir 4 canales de audio digital independientes, y con el soft adecuado, reproducir MOD's.


Me suena infinito que alguien ha hecho / idease /estuviese haciendo algo parecido basado en un Z80 esclavo con su propia RAM en una placa externa. Me suena a ruso y puede que esté mezclando cosas... De todos modos, este tipo de proyectos es muy interesante - aunque, como siempre digo: para que tengan éxito necesitan software, y para que tengan software necesitan ser emulados. Fue lo que ocurrió con la ULA+... Además de ser sencillo, fue rápidamente emulado por varios emuladores, lo que nos permitió desarrollar fácilmente. Un chisme como el que describes sería un flipón, pero claro, hay que ponerselo sencillo a los que tenemos que desarrollar para él.

@Guillian: ¿Eso que muestras ahí sería el equivalente al pifostio de resistencias y condensador que he visto por ahí? ¿Se conectarían los pines GND/salida al jack y GND/8 bits a LPT y obtendríamos lo que necesitamos? Eso sí me parece más asequible para manazas como yo.

Avatar de Usuario
Guillian
Commodore 128
Commodore 128
Mensajes: 102
Registrado: 16 Mar 2010, 12:54

Re: Buscando una Covox / LPT-DAC

Mensajepor Guillian » 04 Oct 2013, 12:32

na_th_an escribió:@Guillian: ¿Eso que muestras ahí sería el equivalente al pifostio de resistencias y condensador que he visto por ahí? ¿Se conectarían los pines GND/salida al jack y GND/8 bits a LPT y obtendríamos lo que necesitamos? Eso sí me parece más asequible para manazas como yo.


Sí, más o menos. Esa red de resistencias encapsuladas equivaldría al pifostio de 16 resistencias R2R.
El condensador lo tendrías que poner tú (no sé si conectándolo sin él directamente a un ampli/mezclador ya se haría cargo)

Si quieres, pásame tu dirección por privado y te mando un par de ellos para que pruebes.
Si te valen bien y si no se los metes a un colega en un regaliz negro para gastarle una broma.

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Buscando una Covox / LPT-DAC

Mensajepor na_th_an » 04 Oct 2013, 12:38

No te preocupes, Guillian, casi no tengo tiempo y se iban a quedar olvidados en un rincón. Además, ya he pedido el de retrocables.

Muchas gracias de todos modos :)

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Buscando una Covox / LPT-DAC

Mensajepor mcleod_ideafix » 04 Oct 2013, 13:56

na_th_an escribió:
mcleod_ideafix escribió:Tengo en la recámara un proyecto que llevo postergando desde hace años, muchos años: una implementación del chip Paula de Amiga, para el Spectrum. Es decir, un chisme que permite al Spectrum reproducir 4 canales de audio digital independientes, y con el soft adecuado, reproducir MOD's.


Me suena infinito que alguien ha hecho / idease /estuviese haciendo algo parecido basado en un Z80 esclavo con su propia RAM en una placa externa. Me suena a ruso y puede que esté mezclando cosas...

Sí. Hace ya bastantes años que se hizo una placa de sonido usando un Z80 esclavo con RAM propia, todo diseñado para reproducir MOD's sin ayuda del Z80 del Spectrum, y que valía para los clones rusos, ya que usaba este otro tipo de bus de expansión que no recuerdo como se llama, y que está presente sólo en esos clones.

Esa tarjeta de sonido no me gusta porque es demasiado independiente: desde el Spectrum sólo le podías enviar comandos del tipo "play", "pause", "stop", etc. Sería como comandar un CD-Audio desde un DivIDE (que se puede, por cierto).

Esto que tengo planeado es "sólo" darle al Spectrum lo mismo que se le da al Amiga: un chip con 4 canales de DMA a memoria "chip", cada canal a una velocidad programable, y la señal de audio generada poder variarla en volumen en 64 pasos. ¿El software? Pues lo que tengo medio hecho es un reproductor de MOD's y un conjunto de funciones para usar esto desde Z88DDK. Son funciones del estilo:

Código: Seleccionar todo

void SetDMAAddress     (char channel, char *paddress);
void SetDMALength      (char channel, int  wlength);
void SetDMALoopAddress (char channel, char *paddress);
void SetDMALoopLength  (char channel, int  wlength);
void SetDMAPlayRate    (char channel, int  period);
void SetDMAVolume      (char channel, char volume);
void SetDMAState       (char channel, char state);

Reproducir un MOD se "limita" a interpretar lo que hay en el fichero MOD y actualizar el estado del chip 50 veces por segundo usando las funciones arriba mencionadas. Esto sería lo que haría el Z80 del Spectrum.

Como la memoria para samples no se coge de la memoria RAM del Spectrum (se podría hacer, pero sólo podría usarse con la memoria no contenida, y eso me limitaría a 32KB en un Spectrum 48K, o 64KB en un Spectrum 128K), este chisme tiene su propia memoria RAM (1MB) que se maneja con las siguientes funciones:

Código: Seleccionar todo

void CopyFromSpectrum (char *paddressto, char *from,         int nwords);
void CopyToSpectrum   (char *to,         char *paddressfrom, int nwords);

Se puede comprobar que estas funciones son un calco de lo que hay que hacer con el 8364 (Paula) del Amiga cuando se programa. Hay más información de ello en las páginas 33 y siguientes del PDF de mi proyecto de fin de carrera. Cuando tengo que manejar direcciones de memoria de la memoria para samples estoy usando un puntero que apunta al valor de la dirección (3 bytes = 24 bits -> 16MB), no un puntero cuyo valor es la dirección (que sólo podría manejar 2 bytes = 16 bits -> 64KB). Las longitudes están expresadas en palabras de 16 bits, no en bytes, con lo que se pueden expresar hasta casi casi 128KB. El periodo es un valor de 16 bits que va directamente al registro de periodo del canal. La frecuencia a la que se reproduce un canal se calcula de la misma forma que en el Amiga, lo cual viene documentado en la página 36 del mencionado PDF.

A muchos se les habrá encendido la lucecita de: "¡eeeeeh! pero ¿cómo voy a meter un MOD de 100-200KB en mi juego? ¡¡El fichero TAP se haría eterno para cargar!!"
Obviamente, si piensas meter un MOD con samples que ocupen tanto (o más), es desesperante usar carga de cinta. Afortunadamente tenemos disponible la carga rápida mediante el DivIDE o el +3e.
¿Que no quieres que tu juego necesite un chisme de estos para poder ser cargado y aún así poder incorporar sonido digital? Pues tienes dos opciones:
- Hacer un MOD con samples "chip": samples de muy poca longitud que sólo tienen una forma de onda. Hay MOD's que ocupan tan poquito como 5KB, y aunque los cargues en memoria de Spectrum, una vez copiados los samples a la memoria de samples, la memoria del Spectrum queda libre para que la sobreescribas con cualquier otro código del juego.
- Usar samples procedurales, es decir, tener al principio del juego una rutina que se encargue de crear los samples que usará el juego (pueden ser una onda cuadrada, una onda triangular, en diente de sierra, una sinosoide, ruido blanco a base de meter valores aleatorios, etc) y luego hacer los efectos de sonido usando estos samples repetidos hasta la saciedad (para eso pueden hacer loop continuo si quieres) a la frecuencia y volumen que quieras.

Sobre la emulación... hace unos años salió en WOS una encuesta sobre qué cosas se echaban en falta en FUSE: yo comenté que para los desarrolladores de hardware sería estupendo contar con algún sistema de plugins que nos permitiera crear dispositivos virtualizados y añadirlos a FUSE como el que pincha un periférico a su Spectrum sólo cuando lo va a usar. Un sistema así tendría que tener una interfaz de aplicación específica, y nos ahorraría tener que empollar todo el código fuente de FUSE para ver cómo hacer "casar" nuestro periférico con el resto del emulador.

Curiosamente, el emulador QemuLator, que emula un QL, ha incorporado un sistema de este estilo, y así he podido crear una versión virtualizada (con algunas limitaciones eso sí) de la interface QLSD para poder desarrollar el driver en el PC y probarlo rápidamente en QemuLator.

Fíjate si llevo tiempo con el tema, que ya desde el año 2009 que lo tenía barruntando en la cabeza, e incluso hice alguna prueba usando un único canal emulando cuatro, usando la misma técnica que usé en el proyecto de fin de carrera, y sacando la salida también por un DAC con resistencias metido dentro del Spectrum usando el mismo puerto del SpecDrum :)
http://foro.speccy.org/viewtopic.php?f= ... 345#p18345

Esa plaquita la diseñé y la puse dentro de un +2A. Varias personas se interesaron, e hice una pequeña tirada para que quien la quisiera, tuviera una:
Cómo comenzó todo. http://foro.speccy.org/viewtopic.php?f=6&t=1549#p18314
Descripción de la placa, montaje, etc. http://foro.speccy.org/viewtopic.php?f=8&t=1570

Lo de reproducir MOD's en el Spectrum es en realidad una espinita que tengo clavada desde el año 1995, cuando presenté el proyecto de fin de carrera. De alguna forma, quisiera "cerrar el círculo" ;)



¿Y por qué 1 MB para memoria de samples? Porque me hace mucha ilusión escuchar el MOD de "What is love, de Haddaway" que ocupa unos 700KB, en el Spectrum :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
na_th_an
Amiga 1200
Amiga 1200
Mensajes: 1273
Registrado: 10 Oct 2012, 11:17
Sistema Favorito: (Otro)
primer_sistema: Spectrum +2
consola_favorita: Sony PlayStation 1
Primera consola: Sega Master System
Gracias dadas: 18 veces
Gracias recibidas: 15 veces

Re: Buscando una Covox / LPT-DAC

Mensajepor na_th_an » 04 Oct 2013, 14:16

Hay MODs geniales que no ocupan más de 8Kb. Yo mismo tengo algunos propios. Samples cortos, que sean simplemente representaciones de formas de onda, y jugar con los arpeggiadores. Lo veo totalmente factible.

¿Sería viable usarlo con ZX-One o, incluso ya soñando despierto, que se incluyese de fábrica?

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Buscando una Covox / LPT-DAC

Mensajepor mcleod_ideafix » 04 Oct 2013, 14:31

na_th_an escribió:¿Sería viable usarlo con ZX-One o, incluso ya soñando despierto, que se incluyese de fábrica?

No sé cuánta FPGA quedará libre después de implementar en ella todo un Spectrum, pero en caso de que sea suficiente, sí que se puede incluir. Hay 512KB de memoria en el ZX-Uno. 64KB van para implementar las 4 ROM's de un +2A/+3, 128KB van para implementar la RAM, así que quedan... 320KB para memoria exclusiva de samples, lo cual no está nada mal :)

Con esa memoria podría escuchar otro de mis MOD's favoritos: Elysium:
http://www.youtube.com/watch?v=zTtjvbAvsys
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
DistWave
Atari 1040 STf
Atari 1040 STf
Mensajes: 748
Registrado: 15 Ene 2011, 09:08
Sistema Favorito: PC
primer_sistema: PC
consola_favorita: Nintendo SNES
Primera consola: Atari 2600
Ubicación: Zaragoza
Gracias dadas: 2 veces
Gracias recibidas: 51 veces

Re: Buscando una Covox / LPT-DAC

Mensajepor DistWave » 04 Oct 2013, 19:10

mcleod_ideafix escribió:Con esa memoria podría escuchar otro de mis MOD's favoritos: Elysium:
http://www.youtube.com/watch?v=zTtjvbAvsys


Coincido, es uno del los mods de 4 canales que mas me gusta. Ademas es uno de los primeros mods que consegui, y creo recordar que incluso venia en uno de los diskettes de la revista pcmania, formando parte de una minidemo que mostraba un efecto de plasma / llamas por la pantalla.


Volver a “PC Clásico”

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 10 invitados