nd2003grad Posted June 11, 2016 Share Posted June 11, 2016 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! Quote Link to comment Share on other sites More sharing options...
Mayhem Posted June 11, 2016 Share Posted June 11, 2016 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. Quote Link to comment Share on other sites More sharing options...
+DZ-Jay Posted June 25, 2016 Share Posted June 25, 2016 (edited) 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. -dZ. Edited June 25, 2016 by DZ-Jay 1 Quote Link to comment Share on other sites More sharing options...
carlsson Posted June 26, 2016 Share Posted June 26, 2016 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. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.