DK'sound

Cualquier tema relacionado con la serie Amstrad PCW (Personal Computer Word processor) que no esté englobado en otra categoría.
vcoraba
Lechoncillo
Lechoncillo
Posts: 24
Joined: Sat 15 Oct , 2011 12:01 am

Re: DK'sound

Postby vcoraba » Thu 05 Jan , 2012 8:50 pm

Hola Syx gracias por tus molestias....
A nivel software lo tengo claro, mi problema esta en la capa hardware...
ESCRITURA en el AY:
como comenta Habi, con un comparador y vigilando iorq y M1, seleccionamos uno tanto en Bdir como BC1, para que se escriba el dato en el AY.
(aunque me queda pensar como reducir los bits por que el 74hct688 solo tiene 8 entradas, y me salen 10)
LECTURA del AY:
ni idea de que usar para cambiar el bus de direcciones.... ¿quiza no hace falta y basta con poner los datos en d0 d7?
pero como lo codifico para cambiar al estado correcto Bdir 1 BC1 0 , ¿y una vez puesto como le digo al PCW que ya puede leer?
Ademas la verdad es que teniendo ya Habi la solucion, no quiero pisarle la sorpresa del proyecto tan chulo.
yo como de momento no quiero pasarlo a placa, a lo mejor aprovecho y pic16f84 que tengo por hay muerto de risa de otro proyecto.
saludos

User avatar
Habi
Forum Addict
Forum Addict
Posts: 381
Joined: Wed 17 Aug , 2011 1:15 pm
Contact:

Re: DK'sound

Postby Habi » Thu 05 Jan , 2012 9:18 pm

No hay que decodificar todo A[7-0], los dos bits más bajos (A0 y A1) son para seleccionar la función como bien cuenta Syx:
El AY del DK'Tronics usa 3 puertos:
1.- En $AA seleccionamos el registro del AY que vamos a leer ó escribir (salida). El registro $0E ó 14 es el "Puerto A de Entrada/Salida del AY", que es por donde se lee el joystick... el mismo por el que se lee el teclado en el CPC

2.- En $A9 leemos el valor que contiene el registro del AY anteriormente indicado (entrada). Aquí es donde obtenemos el estado del joystick.

3.- En $AB escribimos un valor en el registro del AY anteriormente indicado (salida).

Y eso es todo, no hay nada más, y el reproductor del Arkos ó cualquier otro reproductor de CPC funcionan de miedo ya que el AY va también a 1 MHz
Teniendo en cuenta eso, a mi me salen 8. :wink:
Ademas la verdad es que teniendo ya Habi la solucion, no quiero pisarle la sorpresa del proyecto tan chulo.
No te preocupes por eso, dale caña si te apetece. Yo lo hago por hobby, como tu.

Y todavía le queda a la solución: tengo todo en breadboard, no tengo un mísero transistor para hacer la amplificación (espero no dañar el AY), y por supuesto no tengo ni interfaz a DAC ni joystick. Vamos, que le queda.

User avatar
syx
Master of The Forum
Master of The Forum
Posts: 1354
Joined: Wed 02 Sep , 2009 9:55 am

Re: DK'sound

Postby syx » Thu 05 Jan , 2012 10:43 pm

Por si queréis echarle un vistazo al YM2610 os dejo el datasheet... lo malo es que está en japo, pero el google translator hace un buen trabajo pasándolo al inglés (y en caso de dudas refrescaré mi japonés) y las figuras se entienden bien.

No se cuan complicado es de montar una tarjeta para el PCW con él, son 64 patillas, va a 5V y los registros 0-13 son compatibles con el AY (SSG según Yamaha), ya que el chip integra uno ;) ... más los 4 canales de FM, 1 de ruido y 6 canales de ADPCM de 4 bits a 18 Khz :P

vcoraba
Lechoncillo
Lechoncillo
Posts: 24
Joined: Sat 15 Oct , 2011 12:01 am

Re: DK'sound

Postby vcoraba » Fri 06 Jan , 2012 2:27 am

No hay que decodificar todo A[7-0], los dos bits más bajos (A0 y A1) son para seleccionar la función como bien cuenta Syx:
Tengo la electrónica de puertas lógicas mas oxidada de lo que yo creía >| y aunque no tenga ningun 74hct688 y al final me toque tirar de pic me hubiera encantado solucionar este rompecabezas.

veamos
tabla.jpg
tabla.jpg (8.53 KiB) Viewed 3676 times
si uso la salida del comparador en bdir y Ax en BC1 siempre hay un estado que no se cumple.
si uso la salida del comparador en BC1 y Ax en Bdir me pasa igual...
que pena doy no me sale ni usando Ax en el enable del 74hct688 y la otra en Bdir o BC1 solo soy capaz de hacer coincidir dos de los tres resultados que necesitamos.
Aunque sea solo por la honrilla debería haberlo sacado... pero no...
Felices reyes a todos y que os traigan muchos y divertidos chismes, cachivaches, y paratos retro....

User avatar
Habi
Forum Addict
Forum Addict
Posts: 381
Joined: Wed 17 Aug , 2011 1:15 pm
Contact:

Re: DK'sound

Postby Habi » Fri 06 Jan , 2012 1:08 pm

que pena doy no me sale ni usando Ax en el enable del 74hct688 y la otra en Bdir o BC1 solo soy capaz de hacer coincidir dos de los tres resultados que necesitamos.
Tranquilo, que todos tenemos días malos. Si yo te contase con qué tontería perdí media tarde hace poco...

Hay varias posibilidades; puedes usar en BC1 un XOR de A1 y A0...

...o puedes dejar de suponer que BC2 = +5V. :wink:

Conectamos A1 y A0 a BDIR y BC2 respectivamente. Si hacemos que BC1 = ¬BDIR tenemos el problema resuelto, mira la tabla del datasheet.

De nuevo, se puede resolver con una puerta NOT...

...pero ¬BDIR no es más que ¬A1 el cual aquí es "equivalente" a /RD en este caso teniendo en cuenta las condiciones de /IOREQ y /M1.

Y hay otras muchas, como por ejemplo decodificar con puertas en vez del comparador y aprovechar alguna de sus salidas.

Por cierto, la salida del comparador la usamos para "habilitar" el integrado por A8. Se conecta /A9 a masa y arreglado (A8 y /A9 del integrado, no del bus de direcciones).
Por si queréis echarle un vistazo al YM2610 os dejo el datasheet
¡Interesante! Pero me parece, si no he entendido mal, que ya no tenemos esos dos puertos IO generales. Es decir, nos quedamos sin el joystick. Pero interesante, en cualquier caso.

¿Se consiguen fácilmente?

User avatar
syx
Master of The Forum
Master of The Forum
Posts: 1354
Joined: Wed 02 Sep , 2009 9:55 am

Re: DK'sound

Postby syx » Fri 06 Jan , 2012 2:03 pm

¡Interesante! Pero me parece, si no he entendido mal, que ya no tenemos esos dos puertos IO generales. Es decir, nos quedamos sin el joystick. Pero interesante, en cualquier caso.
Así es, éste es simplemente para sonido; pero por ejemplo, su padre, el YM2203 (menos canales de FM y sin el ADPCM; pero sigue sonando de miedo), mantiene los dos puertos de e/s y es bastante más "fácil" de conseguir; lo utilizan las Turbo-Sound FM, unas tarjetas de sonido rusas para el Spectrum :)
¿Se consiguen fácilmente?
Vaya, parece que no, al menos solo he visto en ebay a un italiano que se dedica a desguazarlo de placas de Neo Geo estropeadas; y en las tiendas de componentes en que aparece, se encuentra agotado.

Después de leer el datasheet con más tranquilidad le he encontrado otro defecto, los canales de FM y ADPCM se envían digitalmente y para decodificarlos hace falta engancharlos a un DAC de Yamaha el YM3016 (de los cuales también tiene el dichoso italiano :P).

Pero vamos que a mí ya con el AY y el PCWdrum ya me has ganado :mrgreen:

vcoraba
Lechoncillo
Lechoncillo
Posts: 24
Joined: Sat 15 Oct , 2011 12:01 am

Re: DK'sound

Postby vcoraba » Fri 06 Jan , 2012 4:26 pm

Tranquilo, que todos tenemos días malos. Si yo te contase con qué tontería perdí media tarde hace poco...

Hay varias posibilidades; puedes usar en BC1 un XOR de A1 y A0...

...o puedes dejar de suponer que BC2 = +5V. :wink:

Conectamos A1 y A0 a BDIR y BC2 respectivamente. Si hacemos que BC1 = ¬BDIR tenemos el problema resuelto, mira la tabla del datasheet.

De nuevo, se puede resolver con una puerta NOT...

...pero ¬BDIR no es más que ¬A1 el cual aquí es "equivalente" a /RD en este caso teniendo en cuenta las condiciones de /IOREQ y /M1.

Y hay otras muchas, como por ejemplo decodificar con puertas en vez del comparador y aprovechar alguna de sus salidas.

Por cierto, la salida del comparador la usamos para "habilitar" el integrado por A8. Se conecta /A9 a masa y arreglado (A8 y /A9 del integrado, no del bus de direcciones).

si que estaba espeso yo ayer.... por alguna extraña razón, mi imaginación me hizo entender que únicamente se necesitaban un 74hct688 y los flip-flop D para el reloj.
De hay que no encontrara ninguna solución... aunque suene a escusa barata.
el hecho es que no tengo acceso fácil para los integrados, 150km de coche o pedirlos a RS con los consecuentes gastos de envío y retrasos. así que de momento va a ser un 16f88 que es lo que tengo mas a mano, y así lo intento hacer andar este fin de semana.(si la familia no me pone caras).
Una vez mas muchas gracias

User avatar
Habi
Forum Addict
Forum Addict
Posts: 381
Joined: Wed 17 Aug , 2011 1:15 pm
Contact:

Re: DK'sound

Postby Habi » Fri 06 Jan , 2012 9:53 pm

De nada, para eso estamos. Aunque en efecto no hacen falta más integrados, si usas BC2 y /RD.

Advierto que me parece que he dicho al revés lo de /A9 y A8, pues el 74HC688 tiene la salida negada.

Y también advierto que todo esto es una "chapuzilla" en breadboard para ver si funcionaba: bien podríamos hacer un out a un puerto de lectura y liarla parda (por eso tengo 8 resistencias de 470 Ohm. en el bus de datos).

Lo ideal sería fijar /A9, A8 y BC2 a los valores por defecto y hacer un PAL (o lo que sea) que seleccione 0-0 siempre salvo el caso en que seleccionemos una dirección, /IOREQ y M1 estén a 0 y 1 respectivamente, y además sea en el sentido de la transferencia (/RD - /WR). Y eso será lo que haré cuando haga una placa.

El 16F88 puede ser una buena elección, si no recuerdo mal esos PICs funcionan a 1/4 de la velocidad del oscilador (4 Mhz -> 1Mhz).
Vaya, parece que no, al menos solo he visto en ebay a un italiano que se dedica a desguazarlo de placas de Neo Geo estropeadas; y en las tiendas de componentes en que aparece, se encuentra agotado.
Una pena. Puestos a malas, también se podría hacer un adaptador a ISA de 8 bits (conozco clónicos de Spectrum que lo hacen) y enchufarle alguna antigua tarjeta de sonido de PC. :wink:

User avatar
syx
Master of The Forum
Master of The Forum
Posts: 1354
Joined: Wed 02 Sep , 2009 9:55 am

Re: DK'sound

Postby syx » Thu 12 Jan , 2012 1:16 pm

Tenia pendiente publicar mi adaptación del reproductor del Arkos Tracker para PCW + DK'Sound ó ampliaciones compatibles, así tenéis algo más para probar que el HoH ;)

Aparte del ejemplo, he incluido los fuentes y he tratado de seguir el artículo de la RUA 4, con lo que también podréis usarlo como guía para el PCW.

¡Qué lo disfrutéis! Y ya sabéis donde enviar las dudas, comentarios y sugerencias :)
Attachments
añade musica a tus programas (pcw).zip
Arkos Player para PCW
(45.27 KiB) Downloaded 188 times

User avatar
Habi
Forum Addict
Forum Addict
Posts: 381
Joined: Wed 17 Aug , 2011 1:15 pm
Contact:

Re: DK'sound

Postby Habi » Thu 12 Jan , 2012 11:07 pm

¡Wow! Esto me hubiese sido muy útil para probar mi apaño. =D>

Al final me hice un programita que me convertía archivos .ym en una forma algo más compacta, y un pequeño programa para el PCW que los tocaba. Adjunto una imagen de disco con el reproductor y unas cuantas músicas para que veáis lo cutre del tema.

Si a alguien le interesa, puedo colgar el conversor; pero mi recomendación es usar ese excelente código de Syx. :wink:
Attachments
Musicas.rar
Reproductor de músicas
(21.27 KiB) Downloaded 193 times

User avatar
syx
Master of The Forum
Master of The Forum
Posts: 1354
Joined: Wed 02 Sep , 2009 9:55 am

Re: DK'sound

Postby syx » Fri 13 Jan , 2012 12:28 am

¡Wow! Esto me hubiese sido muy útil para probar mi apaño. =D>
Ayysss, dame el toque hombre, que ya sabes que suelo tener rutinillas de todo tipo.

Hoy mismo me ha llegado la Digiblaster V3, la típica "escalera de resistencias" para tener un DAC de 8 bits (con signo) usando el puerto de impresora del CPC. Eso significa que el código que prepare, debería ser también útil para tu DAC ;) Ya he probado a reproducir samples (la primera prueba a 11025 Hz) y en los próximos días montaré un decodificador de dpcm ó similar ;)
Al final me hice un programita que me convertía archivos .ym en una forma algo más compacta, y un pequeño programa para el PCW que los tocaba. Adjunto una imagen de disco con el reproductor y unas cuantas músicas para que veáis lo cutre del tema.

Si a alguien le interesa, puedo colgar el conversor; pero mi recomendación es usar ese excelente código de Syx. :wink:
Tu programa es muy útil, estos formatos derivados del YM son perfectos para cuando necesitas que la rutina de música tarde un tiempo fijo, en CPC se suele usar el formato AYC (como comenta Rockriver en su fantástico repaso a los formatos de sonido en la RUA 4). Además, tratándose de tí, seguro que le has añadido alguna mejora que no se le había ocurrido a nadie ;), así que permitenos que te hagamos una copia de seguridad :mrgreen:

vcoraba
Lechoncillo
Lechoncillo
Posts: 24
Joined: Sat 15 Oct , 2011 12:01 am

Re: DK'sound

Postby vcoraba » Fri 13 Jan , 2012 9:04 am

Estupendo!!
Yo estoy deseando juntar un poco de tiempo para poder retomar el tema, pero sospecho que este fin de semana tampoco va a ser posible :(
saludos.

User avatar
Habi
Forum Addict
Forum Addict
Posts: 381
Joined: Wed 17 Aug , 2011 1:15 pm
Contact:

Re: DK'sound

Postby Habi » Fri 13 Jan , 2012 1:22 pm

Ayysss, dame el toque hombre, que ya sabes que suelo tener rutinillas de todo tipo.
Nah, te hubiese obligado a hacerlo antes de tiempo. Y además, ya sabes que me va la marcha: fueron un par de horitas divertidas, con la recompensa de aprender cómo es el formato YM y el escuchar el Zynaps en el PCW. :D
Ya he probado a reproducir samples (la primera prueba a 11025 Hz)
¡Interesantísimo! ¿No come demasiada CPU reproducir a 11Khz? Deben ser más de 130K ciclos sólo en outs, se nos dispara dentro de un bucle. Me parece mucho para un juego.
Además, tratándose de tí, seguro que le has añadido alguna mejora que no se le había ocurrido a nadie , así que permitenos que te hagamos una copia de seguridad
Más que mejora, cutrefacción: hacer el reproductor lo más simple posible (el listado iba dentro del dsk que subí), y ahorrar indicando sólo los registros que uso en vez de volcar los 16.

De hecho, la rutina de reproducción es sólo esto:

Code: Select all

Ld Hl, Musica
Bucle50Hz:
;Cada 50 Hz -> 6 interrupciones; válido para PAL y NTSC
REPT 6
Halt
ENDM
BucleRegs:
Ld A, (Hl)
Inc Hl
Cp 14
Jr Z, Bucle50Hz
Cp 15
Ret Z
Out ($AA), A
Ld A,(Hl)
Inc Hl
Out ($AB), A
Jr BucleRegs
He intentado subir el programa conversor, pero me dice "Disculpe, la cuota de adjuntos del Sitio está a tope". :?

Edito: He ahorrado unos ciclos en la rutina (usaba los out (C) porque antes leía directamente los ficheros YM y utilizaba otros registros en vez del acumulador) y subido el programa conversor.
Attachments
YM-Fuentes.rar
Fuentes del conversor
(88.15 KiB) Downloaded 203 times
YM.rar
Programa conversor
(510.92 KiB) Downloaded 214 times
Last edited by Habi on Fri 13 Jan , 2012 9:29 pm, edited 2 times in total.

User avatar
Artaburu
Trasteador
Trasteador
Posts: 8420
Joined: Fri 07 Oct , 2005 6:18 pm
Location: En tu pantalla

Re: DK'sound

Postby Artaburu » Fri 13 Jan , 2012 3:08 pm


He intentado subir el programa conversor, pero me dice "Disculpe, la cuota de adjuntos del Sitio está a tope". :?
He incrementado el límite, ¿puedes probar?
Salu2,
Arta

User avatar
syx
Master of The Forum
Master of The Forum
Posts: 1354
Joined: Wed 02 Sep , 2009 9:55 am

Re: DK'sound

Postby syx » Fri 13 Jan , 2012 4:25 pm

Nah, te hubiese obligado a hacerlo antes de tiempo. Y además, ya sabes que me va la marcha: fueron un par de horitas divertidas, con la recompensa de aprender cómo es el formato YM y el escuchar el Zynaps en el PCW. :D
Tienes toda la razón, que no sea yo quien te robe la diversión :mrgreen:
¡Interesantísimo! ¿No come demasiada CPU reproducir a 11Khz? Deben ser más de 130K ciclos sólo en outs, se nos dispara dentro de un bucle. Me parece mucho para un juego.
Por supuesto, sin interrupciones por timer ó dma es excesivo para un juego (312 * 64 * 50 = 998.400 nops por segundo en el CPC / 11.025 Hz = 90 nops para montar la rutina, que es más que suficiente para "descomprimir" el sample y enviarlo), pero para acompañar al AY durante el menú ó alguna escena estática ó para los samplecillos que usaba code master, cumple de manera más que correcta, jejeje.
Más que mejora, cutrefacción: hacer el reproductor lo más simple posible (el listado iba dentro del dsk que subí), y ahorrar indicando sólo los registros que uso en vez de volcar los 16.
Je je je, si es que aunque no quieras te salen optimizaciones ;)


Who is online

Users browsing this forum: No registered users


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic