Re: [stella] PAL/NTSC Auto-Detect - Cleaned Up with Source

Subject: Re: [stella] PAL/NTSC Auto-Detect - Cleaned Up with Source
From: Christopher Tumber <christophertumber@xxxxxxxxxx>
Date: Fri, 15 Nov 2002 18:47:01 -0500
Call me unable to leave well enough alone, but here it is cleaned up. It may still be possible to remove some extraneous code but I think it's down to the essentials (The auto-detect routine is 126 bytes; Code to draw the PAL/NTSC text is considerably longer...)


Chris...
;NTSC/PAL Auto-Detect
;Nov, 15 2002 
;by Christopher L Tumber
;
;Result winds up in $80 but you certainly don't have to do it that way

	processor 6502
	include vcs.h

VDEL01  =  $26


	org $F000

Start
	LDX  #$FF
	TXS  ;Set stack to beginning

      jsr FindPALorNTSC
      jmp DrawStatus



FindPALorNTSC:

	LDA  #2
	STA  VSYNC ;Begin vertical sync.
	STA  WSYNC ; First line of VSYNC
	STA  WSYNC ; Second line of VSYNC.

	LDA  #41
	STA  TIM64T
	LDA  #0
	STA  CXCLR
	STA  WSYNC ; Third line of VSYNC.
	STA  VSYNC ; (0)
DrawScreen
	LDA INTIM
	BNE DrawScreen
	STA WSYNC
	STA VBLANK  ;End the VBLANK period with a zero.

      STA    WSYNC   
      STA    HMCLR   
      JSR    LF03D   

      lda CXPPMM
      and #128
      sta $80  ;Save result of NTSC/PAL check
      rts


LF000: .byte $02
LF03D: LDA #$00
       STA    WSYNC   
       STA    HMOVE   
       STA    COLUBK  
       STA    CTRLPF  
       LDA    #$D0    
       STA    HMP0    
       LDA    #$20    
       STA    HMP1    
       LDY    LF000   
LF066: NOP            
       DEY            
       BNE    LF066   
       STA    RESP0   
       STA    RESP1   
       LDA    #$01    
       STA    VDELP0  
       STA    VDEL01  

       STA    WSYNC   
       STA    HMOVE   
       STA    GRP0    
       STA    GRP1    
       STA    GRP0    
       LDA    #$03    
       STA    NUSIZ0  
       STA    NUSIZ1  
       STA    HMCLR   
       LDA    #$ff

       STA    WSYNC   
       STA    HMOVE   
       STY    $BD     
       STA    GRP0    
       NOP
       sta    $2e ;Waste 3 cycles
       STA    GRP1    
       NOP
       sta    $2e ;Waste 3 cycles
       STA    GRP0    

       LDA    #$00    
       STA    WSYNC   
       STA    VDELP0  
       STA    VDEL01  
       RTS            




















DrawStatus:
	LDX  #0
	LDA  #2

	STA  VSYNC ;Begin vertical sync.
	STA  WSYNC ; First line of VSYNC
	STA  WSYNC ; Second line of VSYNC.

	LDA  #41
	STA  TIM64T
	LDA #0
	STA CXCLR
	STA  WSYNC ; Third line of VSYNC.
	STA  VSYNC ; (0)
DrawScreen2
	LDA INTIM
	BNE DrawScreen2
	STA WSYNC
	STA VBLANK  ;End the VBLANK period with a zero.

      ldy #7
      lda $80
      beq DrawPAL
      ldy #15
DrawPAL:      

      sta WSYNC      
      lda #$00
      sta GRP0
      sta GRP1
      lda #0
      sta COLUBK
      lda #$ff
      sta COLUPF
      sta COLUP0
      sta COLUP1
      lda #3
      sta NUSIZ0
      sta NUSIZ1
      sta RESP0      
      sta RESP1

nextrow:
      sta WSYNC      
      lda char1,y
      sta GRP0
      lda char2,y
      sta GRP1
      nop
      nop
      nop
      nop
      nop
      nop
      nop
      lda char3,y
      ldx char4,y
      sta GRP0
      stx GRP1
      lda #0
      sta GRP0
      sta GRP1
      dey
      bmi donedraw
      cpy #7
      beq donedraw
      jmp nextrow
donedraw:

      sta WSYNC      
      lda #$00
      sta GRP0
      sta GRP1

      ldy #186
nextblankline2:
      sta WSYNC
      dey
      bne nextblankline2

	LDA #2
	STA WSYNC  ;Finish this scanline.
	STA VBLANK ; Make TIA output invisible,
      lda #35
      sta TIM64T

OverScanWait2:
      lda     INTIM
      bne     OverScanWait2

      jmp DrawStatus

   org $fa00       
char1: .byte 66,70,78,90,114,98,66,66
       .byte 64,64,64,64,126,66,66,126
char2: .byte 24,24,24,24,24,24,24,126
       .byte 66,66,66,66,126,66,66,126
char3: .byte 126,2,2,126,126,64,64,126
       .byte 126,64,64,64,64,64,64,64
char4: .byte 126,64,64,64,64,64,64,126
       .byte 0,0,0,0,0,0,0,0



	org $FFFC
	.word Start
	.word Start

Attachment: NTSCPAL3.BIN
Description: Binary data

Current Thread