base:detect_pal_ntsc
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Next revisionBoth sides next revision | ||
base:detect_pal_ntsc [2016-09-27 17:49] – sokrates | base:detect_pal_ntsc [2016-12-27 02:39] – tww_ctr | ||
---|---|---|---|
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