La teoría es sencilla, el funcionamiento diferente si el juego es PAL o NTSC es debido a que la mayoría de juegos sincronizan alguna (o varias) de sus rutinas con el refresco de pantalla (el famoso raster).
El refresco es diferente en PAL y NTSC, una pantalla PAL se refresca 50 veces por segundo mientras que una NTSC lo hace 60. Por lo tanto si hemos sincronizado el código para que algo se ejecute a determinada velocidad en PAL se verá mas rápido en NTSC y viceversa.
Soluciones hay varias, una es no sincronizar con los raster sino con el timer del CIA que es independiente de si es PAL o NTSC. Otra es detectar al principio del programa si estamos en un sistema PAL o NTSC (y por lo tanto refrescando a 50 o 60 veces por segundo) y tener en cuenta eso a la hora de sincronizar el código.