base:detect_pal_ntsc
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
base:detect_pal_ntsc [2016-09-27 17:49] – sokrates | base:detect_pal_ntsc [2019-05-15 20:11] – [Detect NTSC/PAL] silverdr | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Detect PAL/NTSC ====== | + | ====== Detect |
- | + | ||
- | Since you cannot rely on $02a6 to detect PAL/NTSC, you better do the check yourself. The theory behind these checks is simply that PAL and NTSC systems have different ammounts of rasterlines, | + | |
+ | Since you cannot rely on $02a6 to detect NTSC/PAL, you better do the check yourself. The theory behind these checks is simply that PAL and NTSC systems have different amounts of rasterlines, | ||
===== J0x variant ===== | ===== J0x variant ===== | ||
Line 67: | Line 66: | ||
< | < | ||
+ | SEI | ||
LDX #$00 | LDX #$00 | ||
w0 LDA $D012 | w0 LDA $D012 | ||
Line 611: | Line 611: | ||
; eof | ; eof | ||
</ | </ | ||
+ | |||
+ | |||
+ | ===== TWW's Variant ===== | ||
+ | |||
+ | Count' | ||
+ | |||
+ | < | ||
+ | // | ||
+ | // Detect PAL/NTSC | ||
+ | // | ||
+ | // 312 rasterlines -> 63 cycles per line PAL => 312 * 63 = 19656 Cycles / VSYNC => #> | ||
+ | // 262 rasterlines -> 64 cycles per line NTSC V1 => 262 * 64 = 16768 Cycles / VSYNC => #> | ||
+ | // 263 rasterlines -> 65 cycles per line NTSC V2 => 263 * 65 = 17095 Cycles / VSYNC => #> | ||
+ | // 312 rasterlines -> 65 cycles per line PAL DREAN => 312 * 65 = 20280 Cycles / VSYNC => #> | ||
+ | |||
+ | DetectC64Model: | ||
+ | |||
+ | // Use CIA #1 Timer B to count cycled in a frame | ||
+ | lda #$ff | ||
+ | sta $dc06 | ||
+ | sta $dc07 // Latch #$ffff to Timer B | ||
+ | |||
+ | bit $d011 | ||
+ | bpl *-3 // Wait untill Raster > 256 | ||
+ | bit $d011 | ||
+ | bmi *-3 // Wait untill Raster = 0 | ||
+ | |||
+ | ldx #%00011001 | ||
+ | stx $dc0f // Start Timer B (One shot mode (Timer stops automatically when underflow)) | ||
+ | |||
+ | bit $d011 | ||
+ | bpl *-3 // Wait untill Raster > 256 | ||
+ | bit $d011 | ||
+ | bmi *-3 // Wait untill Raster = 0 | ||
+ | |||
+ | sec | ||
+ | sbc $dc07 // Hibyte number of cycles used | ||
+ | and #%00000011 | ||
+ | rts | ||
+ | </ | ||
+ | |||
===== Older routine ===== | ===== Older routine ===== |
base/detect_pal_ntsc.txt · Last modified: 2020-11-11 01:49 by copyfault