]> git.sur5r.net Git - cc65/commitdiff
Improved tv timing detection for the c64. 608/head
authorMarco van den Heuvel <blackystardust68@yahoo.com>
Fri, 9 Mar 2018 00:06:33 +0000 (16:06 -0800)
committerMarco van den Heuvel <blackystardust68@yahoo.com>
Fri, 9 Mar 2018 00:06:33 +0000 (16:06 -0800)
asminc/get_tv.inc
include/cbm.h
libsrc/c64/get_tv.s

index 47e0d9c2abbf52182bf84748546c973df306d764..2d4b5b2533f651b8b6618764cd7809278e2ec862 100644 (file)
@@ -11,6 +11,8 @@
 .enum TV
     NTSC
     PAL
+    NTSC_OLD
+    PAL_N
     OTHER
 .endenum
 
index 1395f700f51568363ba4effcfb27087e75dbc1e4..b121050af6d82b1ce6bc4c66eb7a567a5f903c15 100644 (file)
@@ -150,7 +150,9 @@ struct cbm_dirent {
 
 #define TV_NTSC         0
 #define TV_PAL          1
-#define TV_OTHER        2
+#define TV_NTSC_OLD     2
+#define TV_PAL_N        3
+#define TV_OTHER        4
 
 unsigned char get_tv (void);
 /* Return the video mode the machine is using. */
index 4f46b8d64fbd0e2391be7c130d6ec2e1f64735b7..8c73f6fa48cebe3ddba30e29ae8e06a5dc4dddfd 100644 (file)
@@ -3,6 +3,11 @@
 ;
 ; unsigned char get_tv (void);
 ; /* Return the video mode the machine is using */
+;
+; Changed to actually detect the mode instead of using a flag
+; Marco van den Heuvel, 2018-03-08
+;
+; The detection goes wrong on accelerated machines for now.
 ;
 
         .include        "c64.inc"
 
 .proc   _get_tv
 
-        lda     PALFLAG
-        ldx     #0
+        php
+        sei
+timing_loop_0:
+        lda     VIC_HLINE
+timing_loop_1:
+        cmp     VIC_HLINE
+        beq     timing_loop_1
+        bmi     timing_loop_0
+        and     #$03
+        cmp     #$01
+        bne     check_ntsc
+        lda     #TV::NTSC_OLD         ; NTSC OLD constant
+        bne     detected
+check_ntsc:
+        cmp     #$03
+        bcc     ntsc
+
+; check for PAL and PAL-N
+
+        ldx     #$00
+        lda     #$10
+timing_loop_2:
+        inx
+        cmp     VIC_HLINE
+        bne     timing_loop_2
+        lda     #TV::PAL              ; PAL constant
+        cpx     #$70
+        bcc     detected
+        lda     #TV::PAL_N            ; PAL-N constant
+detected:
+        ldx     #$00
+        plp
         rts
 
+ntsc:
+        lda     #TV::NTSC             ; NTSC constant
+        beq     detected
+
 .endproc