Autor Tema: SID6581 (sintetizador de audio del Commodore 64)  (Leído 54615 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5102
    • uControl
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #45 en: 23 de Mayo de 2008, 12:25:58 »
Si, mientras lo estaba leyendo me di cuenta  :oops: y yo que pensaba que habia puesto la piedra angular

No, joder! Que todos esos links sirven. No dejes de buscar cosas. Todo suma! :)
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3484
    • Mensajes de la Virgen María
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #46 en: 23 de Mayo de 2008, 12:29:39 »
Tranquilo que no estoy ofendido. Y estoy buscando cosas.

Estoy buscando si hay alguna otra opción de la que posteó Juan, sobre pasar wav a SID
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

-Mi propio Foro de Meteorología
www.meteorologiafacil.com.ar/foros/index.php

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #47 en: 23 de Mayo de 2008, 12:37:22 »
Ánimo chicos, que esto se pone muy interesante...

En esta imagen sacada del foro del  MIDIBox (http://www.midibox.org/forum/index.php?topic=5748.0), apuestan por la opción 3 de las que yo propuse:



Y con esto http://www.midibox.org/forum/index.php/topic,5204.0.html y esto http://www.midibox.org/forum/index.php/topic,2124.0.html ya casi puedo dormir tranquilo. En otras palabras, no pasa nada porque un registro se escriba 2 veces consecutivas, siempre y cuando los datos escritos sean los mismo, pues el SID no reinicia el sonido (la voz) si los datos son iguales.

Leon PIC: ¿El MPLab tiene alguna forma de saber cuánto tiempo consumen un conjunto de instrucciones, verdad? ¿Podrías orientarme un poco en esto?

Voy a ver si puedo recompilar siddump y, si lo consigo, creo que ya tenemos todo lo necesario para empezar. El problema es que nunca he utilizado gcc en Windows.

Me hubiera gustado más usar el SID2MIDI, pero el código no lo encuentro por ningún sitio.


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17670
    • MicroPIC
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #48 en: 23 de Mayo de 2008, 12:48:13 »
Es pequeña explicación, pero aquí puse cómo funciona el stopwatch de mplab para medir tiempos con precisión:
http://www.todopic.com.ar/foros/index.php?topic=20476.msg154104#msg154104
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3484
    • Mensajes de la Virgen María
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #49 en: 23 de Mayo de 2008, 13:00:44 »
Si, justamente como lo explicó Nocturno. Aunque no es necesario iniciar el stopwatch cuando se llega al breakpoints, se puede iniciar desde el principio y luego precionar el botón ZERO para reiniciar la cuenta.


Yo lo haría así, coloco los breakpoints desde el inicio de donde se quiere contar, y colocar el segundo breakpoints hasta dónde contar. Configuro la frecuencia de reloj, para eso ir a DEBUGGER ------> SETTINGS, luego abrir la ventana de STOPWACH en el menú DEBUGGER, Presionar F9 y se detendrá en el primer breakpoints, poner el contador en cero y precionar de nuevo F9 que se detendrá en el segundo breakpoints y mostrará exactamente los ciclos y los tiempos. Lo bueno de esta ventana, es que muestra el valor real. El problema viene después cuando se monta el circuito y ver si el oscilador oscila en la frecuancia deseada.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

-Mi propio Foro de Meteorología
www.meteorologiafacil.com.ar/foros/index.php

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3484
    • Mensajes de la Virgen María
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #50 en: 23 de Mayo de 2008, 13:03:34 »
Un link más

h t t p://usuarios.lycos.es/putusoft/c64/c642pc.htm
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

-Mi propio Foro de Meteorología
www.meteorologiafacil.com.ar/foros/index.php

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #51 en: 23 de Mayo de 2008, 14:07:31 »
Gracias nocturno por el capote, y también a Leon por la aclaración. No acabo de acostumbrarme al MPlab...

Buenas noticias: ya he recompilado el siddump, era tan fácil que me ha llevado un rato hacerlo  :mrgreen:

Consecuentemente, ya podemos extraer de cualquier PSID compatible con siddump (que espero que sean muchos) los valores que deben tener los registros del SID6581 en cada frame/field y almacenarlos en el formato que más nos convenga.

Creo que de momento ahora ya sí lo tenemos todo para empezar  :-/

Habría que elegir un PIC y un lenguaje de programación. ¿Qué proponen? ¿quizas un 18F con USB? y como lenguaje de programación CCS?

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5102
    • uControl
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #52 en: 23 de Mayo de 2008, 14:20:49 »
CCS, definitivamente!

Propon algun PIC, a ver si lo consigo.
Tengo algun PIC18F4520 SMD, pero no tienen USB :(
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #53 en: 24 de Mayo de 2008, 05:57:49 »
Para asegurar un poco más el asunto de la comunicación, ayer pregunté a uno de los líderes de MIDIbox cómo lo hacían ellos, y me respondió que al principio lo hacían con el método 3 (escribir durante 1.2us sin preocuparse del estado de la señal del reloj), pero que luego se dieron cuenta de que daba problemas y lo han cambiado, pero no acabo de enterder en qué consiste el cambio.

Podéis seguir la conversación en http://www.midibox.org/forum/index.php/topic,5204.0.html

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #54 en: 24 de Mayo de 2008, 09:40:29 »
Ya está (medio) claro, primero esperan hasta que el clock está en alto, inmediatamente se ponen a esperar hasta que se pone en bajo, e inmediatamente bajan el CS para enviar los datos y lo mantienen así durante 1.2us. No usan interrupciones para nada.

No obstante, parece ser que hay una cuestión de latencias que no acabo de comprender; espero poder comprobarlo con el osciloscopio...

Mientras tanto, voy animándome a emular el 6502 con el PIC. Aquí un buen recurso: http://fms.komkon.org/EMUL8/HOWTO.html He echado un ojo al código de siddump y realmente no es tan complejo... aunque me temo que harían falta 64KBytes de memoria...

Joer, este señor lo ha emulado en javascript: http://www.6502asm.com/

Más sobre cómo crear un emulador: http://www.cecs.csulb.edu/~hill/cecs497/nestreme/howto.html
« Última modificación: 24 de Mayo de 2008, 09:46:48 por jfmateos2 »

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5102
    • uControl
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #55 en: 24 de Mayo de 2008, 09:53:50 »
Hola!
Recien caigo por aqui!
Estoy mirando el hilo del foro en ingles. Dos cosas:

1) El tio ese la tiene muuuuy clara! , y
2) Que bien manejas el ingles! :)

No esta nada mal emular el 6502 con una memoria externa. Sigue pareciendome que para hacer sonar el SID no es estrictamente necesario, pero para interpretar los archivos en cuestion puede ser un buen enfoque. Peeeero, el tener un emulador del 6502 en un PIC tendria muchas otras aplicaciones!!!!!!!

Creo que a partir de aqui estamos en un nuevo punto de inflexion en el proyecto. El esquema que habia dibujado ya no sirve de nada con este enfoque. Y no se si no nos conviene buscar algo mas potente que un PIC18....no te parece?

(en la que me estoy metiendo!!! Apenas hago cositas con un 16F628, y estoy pensando en saltearme los PIC18!)
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5102
    • uControl
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #56 en: 24 de Mayo de 2008, 10:01:26 »
PD: Excelente el HowTo sobre como escribir un emulador.

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #57 en: 24 de Mayo de 2008, 10:23:44 »
Creo que debemos ir poco a poco. Primero ver si somos capaces de dirigir la "orquesta" que contiene el SID y luego, si se puede, emular el 6502. No me apetece nada tener que programar en ASM, pero parece ser que hay algunas cuestiones de ratardos que pueden darnos la lata y que no sé si podremos gestionar directamente en C.

Creo que tu esquema sí sirve, aunque yo lo reduciría al mínimo, es decir, elegir un PIC básico con PWM, conectarlo a una memoria mayor que la que tú pisiste y al SID (olvidándome de momento del LM336). Lo del USB lo proponía para que resultase más sencillo actualizar el contenido de la memoria, pero también podemos hacerlo por RS232. Otra posibilidad sería hacer un PCB básico para el SID (incluidos sus condensadores, ...) y con unas tiras de pines que nos permitiesen conectarlo al protoboard o a otro PCB con el PIC. Me gusta esta idea, porque de momento lo único que tengo claro es que las conexiones del SID son las que son, mientras que las del PIC...

Si conseguimos que esto funcione, habría que analizar lo del emulador... ¡qué bonito proyecto sería!

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #58 en: 24 de Mayo de 2008, 10:30:11 »
En otro orden de cosas, otro señor de Polonia (swinkels) con el que me estoy posteando me contesta:

Citar
TK already said all about this but i can clear it for you.
If you don't need ultra fast writing speed you don't have to check for the
PWM clock level, just do the following: set data and address to SID bus,
then set WR to 0 and wait more than 1us (maybe 2us to be sure ;) and set WR
to 1.
SidPLAYER from my website uses this scenario and it works correctly.
You can synchronize writing to clock signal but i'm not familar with PIC so
can't tell your more.

SidPlayer es un chisme similar a lo que nosotros queremos hacer pero basado en un ATMEL:

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: SID6581 (sintetizador de audio del Commodore 64)
« Respuesta #59 en: 25 de Mayo de 2008, 07:25:49 »
Se me ha ocurrido la posibilidad de investigar dónde obtener un SID6581 y me he quedado helado...

Resulta que la forma más sencilla es comprando un C64 antiguo, pero parece ser que muchos de los que se venden no contienen el chip verdadero, sino uno remarcado ¡ALUCINANTE! Además, no todos los modelos de C64 incluían un SID.

Por este motivo, hago desde aquí un llamamiento a cualquiera que pueda ayudarme a conseguir un C64... quizás en el mercadillo de vuestra ciudad hayáis visto alguno o sepáis de alguien de confianza que quiera deshacerse del suyo...

Gracias