Jump to content

Forcing 60 Hz mode on PAL Jaguars

Recommended Posts

Zerosquare    10

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.



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

Share this post

Link to post
Share on other sites
Matthias    0



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



Share this post

Link to post
Share on other sites
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoticons maximum are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.