Jump to content


Recommended Posts

Hello all...


I think C64 is my next victim. However, after watching a whole lot of videos (I'm totally not prepared for this), I'm confused about PAL and NTSC. I live in NTSC territory, but I understand most of the best games are PAL (I'll bet someone will disagree with this). How is this remedied? Does 1084 monitor solve these problems and/or a power converter? This is a lot more difficult than I thought it would be. For instance, let's say I load up a Euro tape game...will it work on NA equip? Thanks!


Link to comment
Share on other sites

The hardware is different, in the same way as say a NES is different between the US and Europe. The C64 has a specific video chip for NTSC and PAL, which runs at different speeds. You really have two options: import a PAL C64 and get the PAL display output on a compatible device, or download NTSC fixed versions of PAL games (of which they are quite a lot). However the latter option is still not 100% because you can get timing and graphic issues still, the code is often very heavily tied into the precise timing of a PAL system.


Many modern C64 homebrews coded in Europe won't really run properly on NTSC because the CPU has more cycles available to process aside from the display due to the 50Hz refresh rate. So if run on NTSC systems. you'd get glitches and slowdown.


I haven't even gotten into originals here yet... quite often copy protection routines were tied into the timing of the disk drive and computer, so many PAL disks won't load on NTSC systems, and vice versa.

Link to comment
Share on other sites

  • 2 weeks later...

I don't know specifically about the C=64, by in my platform of choice (the mighty Intellivision), there is the same issue: there are two distinct machines with different video circuitry, one for NTSC and one for PAL. The CPU speed is also altered to match the difference in video frame-rate (since the shared clock needs to tick at different speeds).


Like Mayhem suggested, coding for one may result in timing issues on the other; which can cause glitches at best, or system crashes at worst. Moreover (at least on the Intellivision) the sound chip is tuned differently (due to the same clock speed changes mentioned above). Consequently music and sound effects coded for one, sound detuned on the other.


The typical solution on the Intellivision is to compromise: code your underlying framework to detect the CPU speed (or query the circuitry if that is available), and ensure your kernel runs at 50 Hz regardless, which fits both models. This means that when the game runs on NTSC, it will be essentially throwing away one out of every six frames. However, this "extra" frame can be utilized for pre-computing other things, like adjusting the frequencies fed to the sound chip so that they are in tune with the PAL version. Thus, PAL becomes the "baseline" (natively running at 50 Hz), while NTSC is "adjusted" to fit that frame-rate.


If your game needs timing-senstive critical sections, then the approach I would take is to abstract the engine's timer so that a "tick" represents a "game engine cycle" rather than any specific hardware-dependant signal. For instance, use a counter that ticks on every game-engine cycle, adjusting the tick amount fractionally depending on whether you are in the "native" PAL or the "adjusted" NTSC. Use this counter as a reference for all time-related functions.


I suppose that the above description is "high level" enough to apply as well to the C=64, though there may be some specific techniques on that platform that could make it easier to do.



Edited by DZ-Jay
  • Like 1
Link to comment
Share on other sites

Loading from tape is tied to CPU clock frequency. Due to reasons, there is a small difference between NTSC (1.0227 MHz) and PAL (0.9852 MHz) C64.


The PAL VIC-20 runs at 1.1084 MHz while the NTSC one runs at the same 1.0227 MHz. I seem to recall that when loading VIC programs on the C64 (both PAL machines) or vice versa, only one direction would work but I can't remember if it was loading signals saved at a higher frequency (VIC) to a computer running a lower frequency (C64) or the other way around.


In any case, 1.1084 - 0.9852 = difference of a whopping 0.1232 MHz, compared to a difference between NTSC and PAL C64 of 1.0227 - 0.9852 = 0.0375 MHz. Possibly the smaller difference would not make any difference, as per the original question you asked.

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji 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.


  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...