📄 t118.asm
字号:
.PAGE0
m_bPanelClose ds 1
m_cStandard ds 1
m_cChroma ds 1
m_cBuff ds 5
.CODE
PATTERN_CTRL equ $91
PSYNC_STR equ $10
IGNORE_VSYNC equ $02
DEINTERLACE equ $02
ENYPbPr equ $40
S_NTSC equ $02
S_PAL equ $04
S_SECAM equ $08
S_NTSC_4 equ $10
S_PAL_M equ $20
S_PAL_CN equ $40
S_END equ $80
%Load_TV_P0 .MACRO addr
lda addr
sta T2
jsr Get_P0_TVData
lda T1
.endm
%Store_TV_P0 .MACRO addr,data
lda addr
sta T2
lda data
sta T3
jsr Set_P0_TVData
.endm
%Load_TV_P2 .MACRO addr
lda addr
sta T2
jsr Get_P4_TVData
lda T1
.endm
%Save_TV_P2 .MACRO addr,dat
lda addr
sta T2
lda dat
sta T3
jsr Set_P4_TVData
.endm
%Load_P0_Tbl .MACRO addr,data,cnt
lda #<addr
sta T5+0
lda #>addr
sta T5+1
lda #<data
sta T7+0
lda #>data
sta T7+1
lda #cnt
jsr LoadTbl_P0
.endm
%Load_P1_Tbl .MACRO addr,data,cnt
lda #<addr
sta T5+0
lda #>addr
sta T5+1
lda #<data
sta T7+0
lda #>data
sta T7+1
lda #cnt
jsr LoadTbl_P1
.endm
%Load_P2_Tbl .MACRO addr,data,cnt
lda #<addr
sta T5+0
lda #>addr
sta T5+1
lda #<data
sta T7+0
lda #>data
sta T7+1
lda #cnt
jsr LoadTbl_P2
.endm
PwrDn_T118:
%Store_TV_P0 #$0f,#$30
%Store_TV_P0 #$ca,#$21
%Store_TV_P0 #$e0,#$4e
%Store_TV_P0 #$e3,#$ff
%Store_TV_P0 #$e5,#$80
rts
Init_T118:
lda #S_NTSC
sta m_cStandard
sta m_cChroma
jsr InitT10x
jsr TconInit
lda #00
sta m_bPanelClose
jsr ClosePanel
jsr SourceSelect
lda #00
sta m_bPanelClose
jsr ClosePanel
lda #$C5
sta T2
lda #$00
sta T3
jsr Set_P0_TVData
lda #$C7
sta T2
lda #$04
sta T3
jsr Set_P0_TVData
jsr SetSignalStd
jsr SetOPTiming
%DelayTimer #10
jsr DetectSignalStd
jsr OpenPanel
rts
Dump_P0_P2_Ram:
lda #0
sta T5
sta T6
Dump_P0_Ram_Lp:
%Load_TV_P0 T5
ldx T6
sta Dump_Ram,x
inc T5
inc T6
inx
cpx #16
bne Dump_P0_Ram_Lp
lda #0
sta T6
lda T5
bne Dump_P0_Ram_Lp
lda #0
sta T5
sta T6
Dump_P2_Ram_Lp:
%Load_TV_P2 T5
ldx T6
sta Dump_Ram,x
inc T5
inc T6
inx
cpx #16
bne Dump_P2_Ram_Lp
lda #0
sta T6
lda T5
bne Dump_P2_Ram_Lp
rts
AutoSwitch_NTSCPAL:
%GetTimer #0
bne AutoSwitch_NTSCPAL_End
jsr DetectSignalStd
;; jsr Dump_P0_P2_Ram
%SetTimer #100,#0
AutoSwitch_NTSCPAL_End:
rts
NoDetectSignalStd:
%Store_TV_P0 #$11,#$0e
DetectSignalStd_End:
rts
DetectSignalStd:
lda m_cStandard
sta m_cBuff+0
%Load_TV_P2 #$3A
and #$06
cmp #$06
bne NoDetectSignalStd
%Load_TV_P2 #$7b
cmp #$10+1
bcc DetectSignalStd_2
%Load_TV_P0 #$59
cmp #$d6+1
bcc DetectSignalStd_0_NTSC
DetectSignalStd_0_PAL:
lda #S_PAL
Jmp DetectSignalStd_0
DetectSignalStd_0_NTSC:
lda #S_NTSC
DetectSignalStd_0:
sta m_cBuff+0
cmp m_cStandard
bne DetectSignalStd_1
lda m_bPanelClose
beq DetectSignalStd_End
DetectSignalStd_1:
lda m_cBuff+0
sta m_cStandard
sta m_cChroma
jsr SetOPTiming
jsr SetSignalStd
%DelayTimer #05
jsr OpenPanel
%DelayTimer #05
jmp DetectSignalStd_End
DetectSignalStd_2:
%Load_TV_P0 #$59
cmp #$d6+1
bcc DetectSignalStd_2_NTSC
DetectSignalStd_2_PAL:
lda #S_PAL
Jmp DetectSignalStd_3
DetectSignalStd_2_NTSC:
lda #S_NTSC
DetectSignalStd_3:
sta m_cBuff+0
cmp m_cStandard
beq DetectSignalStd_4
jsr ClosePanel
%DelayTimer #03
lda m_cBuff+0
sta m_cStandard
jsr SetOPTiming
DetectSignalStd_4:
lda m_cChroma
sta m_cBuff+4
%DelayTimer #03
%Load_TV_P0 #$59
cmp #$d6+1
bcc DetectSignalStd_4_NTSC
DetectSignalStd_4_PAL:
%Save_TV_P2 #$83,#$39
Jmp DetectSignalStd_5
DetectSignalStd_4_NTSC:
%Save_TV_P2 #$83,#$37
DetectSignalStd_5:
%DelayTimer #03
%Load_TV_P0 #$59
cmp #$d6+1
bcc DetectSignalStd_5_NTSC
DetectSignalStd_5_PAL:
lda #0
sta m_cBuff+2
lda m_cChroma
sta m_cBuff+1
%DelayTimer #03
DetectSignalStd_5_PAL_Lp:
lda m_cChroma
cmp #S_PAL
bne DetectSignalStd_5_PAL_Lp_1
%Load_TV_P2 #$3a
and #$08
beq DetectSignalStd_5_PAL_Lp_1
%Load_TV_P2 #$3c
and #$01
bne DetectSignalStd_6
DetectSignalStd_5_PAL_Lp_1:
lda #S_PAL
sta m_cChroma
jsr ClosePanel
%DelayTimer #03
jsr SetSignalStd
%DelayTimer #03
inc m_cBuff+2
lda m_cBuff+2
cmp #04
bcc DetectSignalStd_5_PAL_Lp
jmp DetectSignalStd_6
DetectSignalStd_5_NTSC:
lda #0
sta m_cBuff+2
lda m_cChroma
sta m_cBuff+1
%DelayTimer #03
DetectSignalStd_5_NTSC_Lp:
;;S_NTSC equ $02
;;S_PAL equ $04
;;S_SECAM equ $08
;;S_NTSC_4 equ $10
;;S_PAL_M equ $20
;;S_PAL_CN equ $40
;;S_END equ $80
;;
;;
;;
;;
;; lda m_cChroma
;; cmp #S_NTSC_4
;; bne DetectSignalStd_5_NTSC_Lp_1
;; %Load_TV_P2 #$3a
;; and #$08
;; bne DetectSignalStd_6
;;DetectSignalStd_5_NTSC_Lp_1:
lda m_cChroma
cmp #S_NTSC
bne DetectSignalStd_5_NTSC_Lp_1
%Load_TV_P2 #$3a
and #$08
bne DetectSignalStd_6
DetectSignalStd_5_NTSC_Lp_1:
lda #S_NTSC
sta m_cChroma
jsr ClosePanel
%DelayTimer #03
jsr SetSignalStd
%DelayTimer #03
inc m_cBuff+2
lda m_cBuff+2
cmp #04
bcc DetectSignalStd_5_NTSC_Lp
DetectSignalStd_6:
lda m_cBuff+1
cmp m_cChroma
beq DetectSignalStd_7
%Load_TV_P2 #$3a
and #$08
beq DetectSignalStd_6_1
lda m_cChroma
sta m_cBuff+4
DetectSignalStd_6_1:
lda m_cBuff+1
sta m_cChroma
DetectSignalStd_7:
lda m_cBuff+4
cmp m_cChroma
beq DetectSignalStd_8
sta m_cChroma
lda m_cStandard
sta m_cBuff+0
%Load_TV_P0 #$59
cmp #$d6+1
bcc DetectSignalStd_7_NTSC
DetectSignalStd_7_PAL:
lda #S_PAL
Jmp DetectSignalStd_7_1
DetectSignalStd_7_NTSC:
lda #S_NTSC
DetectSignalStd_7_1:
sta m_cBuff+0
cmp m_cStandard
beq DetectSignalStd_7_2
sta m_cStandard
jsr SetOPTiming
DetectSignalStd_7_2:
;; jsr OpenPanel
DetectSignalStd_8:
jsr OpenPanel
%Store_TV_P0 #$11,#$0c
Jmp DetectSignalStd_End
InitT10x:
ldy #0
InitT10x_0_Lp:
lda stInitT10xP0_Adr,y
sta T2
cmp #$30
bne InitT10x_0_Lp_1
InitT10x_0_Lp_0:
jsr Get_P0_TVData
lda T1
ora #$01
sta T3
jsr Set_P0_TVData
jsr Get_P0_TVData
lda T1
and #~$02
ora #DEINTERLACE
sta T3
jsr Set_P0_TVData
jmp InitT10x_0_Lp_2
InitT10x_0_Lp_1:
lda stInitT10xP0_Dat,y
sta T3
jsr Set_P0_TVData
InitT10x_0_Lp_2:
iny
cpy #(stInitT10xP0_Adr_End-stInitT10xP0_Adr)
bne InitT10x_0_Lp
ldy #0
InitT10x_2_Lp:
lda stInitT10xP2_Adr,y
sta T2
cmp #$01
bne InitT10x_2_Lp_1
InitT10x_2_Lp_0:
jsr Get_P4_TVData
lda T1
ora #$01
sta T3
jsr Set_P4_TVData
jmp InitT10x_2_Lp_2
InitT10x_2_Lp_1:
lda stInitT10xP2_Dat,y
sta T3
jsr Set_P4_TVData
InitT10x_2_Lp_2:
iny
cpy #(stInitT10xP2_Adr_End-stInitT10xP2_Adr)
bne InitT10x_2_Lp
%Load_P0_Tbl ucaPanelSpecAdrP0,ucaPanelSpecDataP0,(ucaPanelSpecAdrP0_End-ucaPanelSpecAdrP0)
%Load_P2_Tbl ucaPanelSpecAdrP2,ucaPanelSpecDataP2,(ucaPanelSpecAdrP2_End-ucaPanelSpecAdrP2)
rts
SetOPTiming:
lda m_cStandard
cmp #S_NTSC
bne SetPAL_OPTiming
SetNTSC_OPTiming:
%Load_P0_Tbl ucaZoomAdrP0,ucaZoomDataP0_NTSC,(ucaZoomAdrP0_End-ucaZoomAdrP0)
%Load_P2_Tbl ucaZoomAdrP2,ucaZoomDataP2_NTSC,(ucaZoomAdrP2_End-ucaZoomAdrP2)
jmp SetOPTiming_End
SetPAL_OPTiming:
%Load_P0_Tbl ucaZoomAdrP0,ucaZoomDataP0_PAL,(ucaZoomAdrP0_End-ucaZoomAdrP0)
%Load_P2_Tbl ucaZoomAdrP2,ucaZoomDataP2_PAL,(ucaZoomAdrP2_End-ucaZoomAdrP2)
SetOPTiming_End:
%TW101_I2CWrite #$e2,#$11
rts
SetSignalStd:
lda #$3f
sta T2
lda #$01
sta T3
jsr Set_P4_TVData
lda m_cChroma
cmp #S_NTSC
bne SetPAL_SignalStd
SetNTSC_SignalStd:
%Load_P2_Tbl ucaSignalStdRegP2,ucaSignalStdValP2_NTSC,(ucaSignalStdReg_End-ucaSignalStdRegP2)
jmp SetSignalStd_2
SetPAL_SignalStd:
%Load_P2_Tbl ucaSignalStdRegP2,ucaSignalStdValP2_PAL,(ucaSignalStdReg_End-ucaSignalStdRegP2)
SetSignalStd_2:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -