Improved tv timing detection for the c64.
This commit is contained in:
@@ -11,6 +11,8 @@
|
|||||||
.enum TV
|
.enum TV
|
||||||
NTSC
|
NTSC
|
||||||
PAL
|
PAL
|
||||||
|
NTSC_OLD
|
||||||
|
PAL_N
|
||||||
OTHER
|
OTHER
|
||||||
.endenum
|
.endenum
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,9 @@ struct cbm_dirent {
|
|||||||
|
|
||||||
#define TV_NTSC 0
|
#define TV_NTSC 0
|
||||||
#define TV_PAL 1
|
#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);
|
unsigned char get_tv (void);
|
||||||
/* Return the video mode the machine is using. */
|
/* Return the video mode the machine is using. */
|
||||||
|
|||||||
@@ -3,6 +3,11 @@
|
|||||||
;
|
;
|
||||||
; unsigned char get_tv (void);
|
; unsigned char get_tv (void);
|
||||||
; /* Return the video mode the machine is using */
|
; /* 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"
|
.include "c64.inc"
|
||||||
@@ -13,8 +18,42 @@
|
|||||||
|
|
||||||
.proc _get_tv
|
.proc _get_tv
|
||||||
|
|
||||||
lda PALFLAG
|
php
|
||||||
ldx #0
|
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
|
rts
|
||||||
|
|
||||||
|
ntsc:
|
||||||
|
lda #TV::NTSC ; NTSC constant
|
||||||
|
beq detected
|
||||||
|
|
||||||
.endproc
|
.endproc
|
||||||
|
|||||||
Reference in New Issue
Block a user