timersLa frecuencia de barrido de NTSC (commodore en EE.UU) es de 60 veces por segundo. La PAL-B (europa) es de 50-veces por segundo.
O sea, que el barrido en la NTSC es más rápido... asi que usar el raster-IRQ para tocar música no es muy buena idea.
Entonces ¿si queres hacer un jueguito que funcione en NTSC y PAL, y que la música corra a la misma velocidad que haces?
Podes cambiar el código de la música, pero algo más fácil es usar los timers de la CIA, y programar uno para que se ejecute 50 veces por segundo.
Programarlos es relativamente sencillo, pero lo que hay que tener en cuenta es que cuando el timer llega a 0, se genera una IRQ.
Entonces si uno ya tiene instalado un vector con el raster-IRQ, hay que diferenciar cuando la IRQ es de raster y cuando es de timer.
Es se puede hacer comprobando si $d019 esta en uno para saber si fue una interrupción por raster, o similar.
Si la IRQ es por timer, entonces solo ahí uno tiene que tocar la música... y de esa manera la música va a sonar a la misma velocidad tanto en NTSC como en PAL.
Quizás lo complicado es saber que valores hay que usar en el timer, porque la duración de un ciclo en NTSC y PAL son distintos... lo bueno es que todo esto ya fue hecho hace muchos años... entonces solo hay que usar, por ejemplo, estos números para programar el timer:
http://codebase64.org/doku.php?id=base:playing_music_on_pal_and_ntscAca tengo código que lo usa (el scroller es el mismo del jueguito que estoy haciendo, pero fijense en la parte que dice "sync50hz" )
https://github.com/ricardoquesada/c64-casual-connect-15/blob/master/src/intro.sy aca esta un .prg para que prueben