Generar sonidos con el SID parece realmente sencillo, pero yo creo que lo interesante es poder aprovechar los archivos PSID existentes, especialmente porque como no se pase por aquí Modulay y nos componga las melodías, no cuenten conmigo, que tengo un oído pésimo.
El problema es que los PSID están en ensamblador. Ya estudié el desemsamblado que publicó aitopes anteriormente, y aunque no me acuerdo de todo, sí he visto que no sería fácil extraer de ahí los valores de los registros, pero que sería incluso más difícil saber cuándo debemos grabar esos valores en los registros. No descarto esta vía porque me parece la más desafiante...
Pero me temo que no hay más narices que emular el 6502 completito y, para eso, comenzaré con alguno de los emuladores ya existentes en forma de librería (para C o Java) e intentaré modificarlo para que nos dé el valor de los registros del SID y, sobre todo, cuándo deben adquirir esos valores.
De momento, lo que más me preocupa es cómo saber cuándo escribir en el SID. Sólo se puede escribir en el semiciclo positivo del reloj, que dura, 0.5us, de modo que se me ocurren tres posibilidades a priori:
1. Utilizar un timer del PIC para provocar una interrupción cuando se producen los semiciclos positivos y escribir los registros en ese momento. En lugar habría que detectar el flanco de bajada para preparar los datos...
2. Conectar el reloj del SID a una patilla del PIC con interrupción de cambio de estado, o a una de interrupción externa para saber el estado del ciclo en todo momento.
3. Olvidarnos de cómo esté el reloj y mantener los datos en el búffer de escritura durante al menos 2us, para tener la certeza de que solapamos completamente una ventana de semiciclo positivo de reloj, aunque esto es lo que menos me convence...
Perdón por el follón... son sólo notas que me escribo para que luego no se me olviden

Por cierto, va a hacer falta mucha ayuda de Leon para que explique cómo se hacía en el MPlab para saber cuándo tiempo consumía un programa/instrucción.