Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Productions > PAL/NTSC detect
2003-01-29 18:35
Dr. Jay
Account closed

Registered: Jan 2003
Posts: 32
PAL/NTSC detect

Just wanted to share a quick routine that detects PAL/NTSC WITHOUT using interrupts or latches.

;pal/NTSC detect - 0 = PAL, non-zero = NTSC

palntsc
sei ; disable interrupts
wait
lda $d012
bne wait ; wait for rasterline 0 or 256
wait1
lda $d011 ; Is rasterbeam in the area
bpl wait1 ; 0-255? if yes, wait
wait2
ldy #$00
synch1 lda $d012
cmp #$37 ; top PAL rasterline
bne synch1
lda $d012 ; if next is 0, then PAL
synch2 cmp $d012
beq synch2
lda $d012
cli ; enable interrupts
rts ; return
 
... 67 posts hidden. Click here to view all posts....
 
2009-02-14 12:15
Devia

Registered: Oct 2004
Posts: 401
So the shortest/fastes routine for reliable detection would be something like:

PALNTSC
	sei
	lda	$01
	pha
	lda	#<INT_NMI
	sta	$fffa
	lda	#>INT_NMI
	sta	$fffb
	lda	#$35
	sta	$01

;---important stuff start
:	bit	$d011
	bpl	:-
:	lda	$d012
	cmp	#<263
	bcs	:+	;Result >= 0 then PAL
	bit	$d011
	bmi	:-
	clc		;NTSC	
:
;---important stuff end

	pla
	sta	$01
	rts

INT_NMI
	rti


2009-02-14 12:25
tlr

Registered: Sep 2003
Posts: 1787
I came to basically the same conclusion:
http://codebase64.org/doku.php?id=bae:dtv_detect (scroll down)
2009-02-14 13:54
Devia

Registered: Oct 2004
Posts: 401
ahh... The first lda $d011, bmi *-3 seems obsolete, though - unless I'm missing something?
Is there any particular reason for waiting for line 288?

2009-02-14 14:24
TNT
Account closed

Registered: Oct 2004
Posts: 189
Quote: ahh... The first lda $d011, bmi *-3 seems obsolete, though - unless I'm missing something?
Is there any particular reason for waiting for line 288?



2009-02-14 17:15
Frantic

Registered: Mar 2003
Posts: 1647
Just wanted to say that TLR missed one letter in his link to codebase... the link is:

http://codebase64.org/doku.php?id=base:dtv_detect

Also, don't hesitate to update the current NTSC/PAL detection routine if you come up something better:

http://codebase64.org/doku.php?id=base:detect_pal_ntsc
2009-02-14 17:37
tlr

Registered: Sep 2003
Posts: 1787
Quote: ahh... The first lda $d011, bmi *-3 seems obsolete, though - unless I'm missing something?
Is there any particular reason for waiting for line 288?



So what happens if your version starts within 6 cycles of the raster counter wrapping to 0? ;)

288 is just about halfway between the max number of raster lines on PAL and NTSC respectively.
2009-02-14 21:22
Devia

Registered: Oct 2004
Posts: 401
Quote: So what happens if your version starts within 6 cycles of the raster counter wrapping to 0? ;)

288 is just about halfway between the max number of raster lines on PAL and NTSC respectively.


Well in that case it's apparently an NTSC machine ;-)

So, yes..

:	bit	$d011
	bmi	:-
:	bit	$d011
	bpl	:-
:	lda	$d012
	cmp	#<263
	bcs	:+	;Result >= 0 then PAL
	bit	$d011
	bmi	:-
	clc		;NTSC	
:


Any more pitfalls then?
2009-02-15 13:41
TNT
Account closed

Registered: Oct 2004
Posts: 189
WTF happened to my post above? Well, tlr pointed out the need for extra check.

Can anyone find something wrong with this approach:
.w	ldx	$d012
	cpx	$d012
	beq	*-3
	lda	$d012
	bne	.w
	inx
	beq	.w
	cpx	#20

2009-02-15 16:35
tlr

Registered: Sep 2003
Posts: 1787
Quote: WTF happened to my post above? Well, tlr pointed out the need for extra check.

Can anyone find something wrong with this approach:
.w	ldx	$d012
	cpx	$d012
	beq	*-3
	lda	$d012
	bne	.w
	inx
	beq	.w
	cpx	#20



Nice approach using just $d012 to avoid the race condition!
I think that will work.
2009-02-15 17:03
j0x

Registered: Mar 2004
Posts: 215
l1 lda $d012
l2 cmp $d012
   beq l2
   bmi l1
   cmp #$20
   bcc ntsc


Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Rebok/BOOM!/Tropyx
Black Beard
REBEL 1/HF
HBH.ZTH/Abnormal
wil
serato/Finnish Gold
Guests online: 120
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 The Demo Coder  (9.6)
7 What Is The Matrix 2  (9.6)
8 Uncensored  (9.6)
9 Wonderland XIV  (9.6)
10 Comaland 100%  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Party Elk 2  (9.6)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.6)
5 Libertongo  (9.5)
6 Rainbow Connection  (9.5)
7 Onscreen 5k  (9.5)
8 Morph  (9.5)
9 Dawnfall V1.1  (9.5)
10 It's More Fun to Com..  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Nostalgia  (9.3)
5 Triad  (9.2)
Top Original Suppliers
1 Derbyshire Ram  (9.7)
2 Fungus  (9.3)
3 Black Beard  (9.2)
4 Baracuda  (9.2)
5 hedning  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.05 sec.