PAL60 mode on the propeller

Wuerfel_21Wuerfel_21 Posts: 383
edited 2018-09-04 - 22:36:08 in Propeller 1
Have you heard about PAL60? It is the weird hybrid of PAL and NTSC that was/is used by some DVD players and many game consoles to display 60 or 30 FPS content (practically anything produced for TV display in the USA and Japan, basically) in PAL regions: It has the same frame/line timing as NTSC, but the color coding is like it is in PAL. This makes most TVs that can only display NTSC in grayscale display a color image at 60Hz. (infact, the color resolution is actually higher than NTSC's). Now I'm trying to get it working on the Prop. (specifically, i'm trying it with my work-in-progress driver (stay tuned on this one, i think it might turn out to be one of the best for a single prop), which is based on the Ranquest driver, which is in turn based on TV.spin. NTSC and regular ol' 50hz PAL work fine). Now to achieve this, I needed to change both the CONstants at the top of the object (fpal, lpal and spal) as well as the table near the end of the DAT section (which makes use of the constants). After fiddling around a bunch, i came up with these values that should work with anything derived from TV.spin:

  fntsc         = 3_579_545     'NTSC color frequency
  lntsc         = 3640          'NTSC color cycles per line * 16
  sntsc         = 624           'NTSC color cycles per sync * 16

  fpal          = 4_433_618     'PAL color frequency
  lpal          = {4540}4508    'PAL color cycles per line * 16
  spal          = {848}773      'PAL color cycles per sync * 16
' NTSC/PAL metrics tables
'                               ntsc                    pal
'                               ----------------------------------------------
wtab                    word    lntsc - sntsc,          lpal - spal     'hvis
                        word    lntsc / 2 - sntsc,      lpal / 2 - spal 'hrest
                        word    lntsc / 2,              lpal / 2        'hhalf
                        word    243,                    243{286}         'vvis
                        word    10,                     10{18}           'vinv
                        word    6,                      5{5}            'vrep
                        word    $02_8A,                 $02_AA          'burst
ltab                    long    fntsc                                   'fcolor
                        long    fpal
                        long    sntsc >> 4 << 12 + sntsc                'sync_scale1
                        long    spal >> 4 << 12 + spal
                        long    67 << 12 + lntsc / 2 - sntsc            'sync_scale2
                        long    79 << 12 + lpal / 2 - spal
                        long    %0101_00000000_01_10101010101010_0101   'sync_normal
                        long    %010101_00000000_01_101010101010_0101
This is prob. far from standard-compliant, but it works with both TVs i tried, one that supports both NTSC and PAL and a PAL-only one. I find it odd that vrep needs to be 5 for PAL, otherwise it won't sync correctly....
Does anyone have a digital (i.e. flatscreen/HD) TV to test this on? (all my TVs seem to be around the same age or older than myself, what a nerd I am)

EDIT: Also, you'll want to increase the hx (clocks per pixel) value of the TV parameters by about 20% to fill the screen horizontally.
Sign In or Register to comment.