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
DK'sound
Re: DK'sound
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:
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.
Teniendo en cuenta eso, a mi me salen 8.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
No te preocupes por eso, dale caña si te apetece. Yo lo hago por hobby, como tu.Ademas la verdad es que teniendo ya Habi la solucion, no quiero pisarle la sorpresa del proyecto tan chulo.
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.
Re: DK'sound
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
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
Re: DK'sound
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.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:
veamos 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....
Re: DK'sound
Tranquilo, que todos tenemos días malos. Si yo te contase con qué tontería perdí media tarde hace poco...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.
Hay varias posibilidades; puedes usar en BC1 un XOR de A1 y A0...
...o puedes dejar de suponer que BC2 = +5V.
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).
¡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.Por si queréis echarle un vistazo al YM2610 os dejo el datasheet
¿Se consiguen fácilmente?
Re: DK'sound
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¡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.
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.¿Se consiguen fácilmente?
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 ).
Pero vamos que a mí ya con el AY y el PCWdrum ya me has ganado
Re: DK'sound
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.
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
Re: DK'sound
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).
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).
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.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.
Re: DK'sound
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
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
Re: DK'sound
¡Wow! Esto me hubiese sido muy útil para probar mi apaño.
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.
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.
- Attachments
-
- Musicas.rar
- Reproductor de músicas
- (21.27 KiB) Downloaded 193 times
Re: DK'sound
Ayysss, dame el toque hombre, que ya sabes que suelo tener rutinillas de todo tipo.¡Wow! Esto me hubiese sido muy útil para probar mi apaño.
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
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 seguridadAl 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.
Re: DK'sound
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.
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.
Re: DK'sound
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.Ayysss, dame el toque hombre, que ya sabes que suelo tener rutinillas de todo tipo.
¡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.Ya he probado a reproducir samples (la primera prueba a 11025 Hz)
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.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
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
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.
Re: DK'sound
He incrementado el límite, ¿puedes probar?
He intentado subir el programa conversor, pero me dice "Disculpe, la cuota de adjuntos del Sitio está a tope".
Salu2,
Arta
Arta
Re: DK'sound
Tienes toda la razón, que no sea yo quien te robe la diversiónNah, 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.
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.¡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.
Je je je, si es que aunque no quieras te salen optimizacionesMá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.
Who is online
Users browsing this forum: No registered users
La Comunidad Española |