Coping with different Video Standards

As an European myself, I'm naturally biased agains the inferior NTSC system, but even though the US & Canada have a relatively minor Amiga community compared with Europe (Sorry, it's true :-) we should still help them out, even though they've never done a PAL Video Toaster for us (sob!).

You have two options.

Firstly, you could write your code only to use the first 200 display lines, and leave a black border at the bottom. This annoys PAL owners, who rightly expect things to have a full display. It took long enough for European games writers to work out that PAL displays were better.

You could write code that automatically checked which system it is running on and ran the correct code accordingly:

Two pieces of check code are needed. One handles the simple NTSC or PAL differences under Kickstart 1.2/1.3, but under Kickstart 2.0 or higher, everything is complicated by new monitor types...

1.3 Check for NTSC/PAL

	move.l	4.w,a6          ; execbase
	cmp.b	#50,VBlankFrequency(a6)
	beq.s	.pal

     jmp	I'm NTSC
.pal	jmp	I'm PAL

2.x/3.x Check for NTSC/PAL

	move.l  GfxBase,a6
     btst	   #2,gb_DisplayFlags(a6)  ; Check for PAL
	bne.s   .pal

     jmp	I'm NTSC
.pal	jmp	I'm PAL
This test *may* work under 1.3, but the code in Kickstart 1.2/1.3 rom is totally broken, so it can guess wrong about NTSC/PAL quite often!

Check startup.asm for a way to combine the two tests together...

This is fine *EXCEPT* for one thing... It only tells you what video system the system was booted under. If you have a PAL machine and you run a 60hz interlaced workbench (for less flicker) it's fine because the demo still runs in 50hz (as long as your system runs from 50hz power).

However, NTSC owners can lose out, because if their display is capable of PAL (by running a PAL fixer or running a PAL display mode) this code completely ignores them and runs NTSC anyway, however, if NTSC users select PAL from their boot menu (2.x and 3.0 only) then it will work.

For demos and games you'd probably only want to run 50Hz anyway..

Now, if you want to force a machine into the other display system you need some magic pokes: Here you go (beware other bits in $dff1dc can do nasty things. One bit can reverese the polarity on the video sync, not to healthy for some monitors I've heard...)

To turn a NTSC system into PAL (50Hz)
	move.w	#32,$dff1dc		; Magically PAL
To turn a PAL system into NTSC (60Hz)
	move.w	#0,$dff1dc		; Magically NTSC
Remember: Not all displays can handle both display systems! Commdore 1084/1084S, Philips 8833/8852 and multisync monitors will, but very few US TV's will handle PAL signals.

It might be polite for PAL demos to ask NTSC users if they wish to switch to PAL (by the magic poke) or quit.

Main Menu