Zerosquare 10 Report post Posted July 20, 2012 Yes, PAL Jaguars can do 60 Hz, even without a hardware switch. In fact, the switch doesn't affect the video circuit directly ; it's connected to a general-purpose input pin, whose state is mirrored in bit 4 of the JOYBUTS register. Based on this, the boot ROM initializes the video registers with either the 50 Hz or the 60 Hz timings. That's why nothing happens until the next reset if you toggle the switch when the Jaguar is running. Warning! Forcing 60 Hz on a PAL Jaguar has a few drawbacks you should be aware of: It requires writing to some registers Atari tells you not to touch. To quote the doc:Do not ever write to any of the following registers. The BOOTROM (in a standard retail console) or the STUBULATOR (in a development console) will set them up. Especially the settings in CLK2, CLK3 and HP registers must be correct to make the hardware work at all and prevent dot crawl in particular. We really do mean it: DON'T TOUCH THIS! (yes, this part in in full caps) People whose TV sets/monitors don't support 60 Hz will hate you. Most TV sets and monitors in Europe do, but not all - especially the really old ones. The timings won't match the "real 60 Hz" ones perfectly. That's because NTSC and PAL Jaguars have slightly different clock frequencies (26.590906 MHz vs 26.593900 Mhz, respectively), and the video clock is the same as the system clock. But TV sets/monitors can cope with slight timing errors, so it's probably not going to be a problem (Atari probably wanted to be extra safe by using two different clock frequency for NTSC and PAL, instead of a compromise between the two). Now, the code (ripped from the K series boot ROM): lea $F00000,a0 move #$00B5,$F10012; CLK2 move #$034C,46(a0); HP move #$06B1,48(a0); HBB move #$007D,50(a0); HBE move #$06CD,52(a0); HS move #$028B,54(a0); HVS move #$0310,84(a0); HEQ (the M series boot ROM uses $030E instead of $0310) move #$06A0,60(a0); HDE move #$00A6,56(a0); HDB1 move #$00A6,58(a0); HDB2 move #$020B,62(a0); VP move #$0006,76(a0); VEE move #$0018,66(a0); VBE move #$002E,70(a0); VDB move #$01F0,72(a0); VDE (the M series boot ROM uses $FFFF instead of $01F0) move #$01F4,64(a0); VBB move #$01FF,74(a0); VEB move #$0205,68(a0); VS And if for some reason you'd like to use 50 Hz on a NTSC Jag: lea $F00000,a0 move #$00E2,$F10012; CLK2 move #$0352,46(a0); HP move #$06AF,48(a0); HBB move #$009E,50(a0); HBE move #$06D5,52(a0); HS move #$0259,54(a0); HVS move #$0313,84(a0); HEQ move #$06A0,60(a0); HDE move #$00A6,56(a0); HDB1 move #$00A6,58(a0); HDB2 move #$026F,62(a0); VP move #$0006,76(a0); VEE move #$0022,66(a0); VBE move #$002E,70(a0); VDB move #$020E,72(a0); VDE (the M series boot ROM uses $FFFF instead of $020E) move #$0258,64(a0); VBB move #$0265,74(a0); VEB move #$026A,68(a0); VS Quote Share this post Link to post Share on other sites
Matmook 1 Report post Posted July 22, 2012 Thanks for the tip Zerosquare, I'll do binary for testing ! Quote Share this post Link to post Share on other sites
Matthias 0 Report post Posted July 23, 2012 Hello, there are example sourcefiles for this in the JagServer DevKit, filenames are 50HZ.S and 60HZ.S Bye! Matthias Quote Share this post Link to post Share on other sites
Zerosquare 10 Report post Posted July 23, 2012 Indeed, it can be found here, in the SOURCE folder. I've looked at Roine's code, it does exactly the same thing as the one in the first post, but it's a bit smaller Quote Share this post Link to post Share on other sites
Matthias 0 Report post Posted July 23, 2012 Hello! Indeed, it can be found here, in the SOURCE folder. I've looked at Roine's code, it does exactly the same thing as the one in the first post, but it's a bit smaller But the way you have listed it (values and named registers in one line) makes it much easier to understand Kind regards Matthias Quote Share this post Link to post Share on other sites