📄 ms_func.lst
字号:
C51 COMPILER V7.50 MS_FUNC 03/18/2008 22:29:09 PAGE 9
void mstSetDCTI(BYTE DCTIValue)
{
BYTE ucTemp;
mstWriteByte(GEN_00_REGBK, REGBANKADC);
ucTemp = mstReadByte(BK1_7D_CTI) & 0xE7;
ucTemp |= ((DCTIValue&0x03) << 3);
mstWriteByte(BK1_7D_CTI, ucTemp);
mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
}
void mstSetBlackExtension(BYTE BEValue)
{
BYTE ucTemp;
mstWriteByte(GEN_00_REGBK, REGBANKADC);
ucTemp = mstReadByte(BK1_7E_VIP_Y_CTRL) & 0xFE;
ucTemp |= (BEValue&0x01) ;
mstWriteByte(BK1_7E_VIP_Y_CTRL, ucTemp);
mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
}
void mstSetWhiteExtension(BYTE WEValue)
{
BYTE ucTemp;
mstWriteByte(GEN_00_REGBK, REGBANKADC);
ucTemp = mstReadByte(BK1_7E_VIP_Y_CTRL) & 0xFD;
ucTemp |= ((WEValue&0x01) << 1);
mstWriteByte(BK1_7E_VIP_Y_CTRL, ucTemp);
mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
}
void mstSetFavorColor(BYTE FCValue)
{
mstWriteByte(GEN_00_REGBK, REGBANKADC);
if (FCValue != 0)
mstWriteByte(BK1_76_FCC_CTRL, 0xFF); //Forte 0x5B
else
mstWriteByte(BK1_76_FCC_CTRL, 0x00);
mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
}
#endif //USE_ALLMACEOSD
535
536 void mstSetMACE(BYTE MACEValue)
537 {
538 1 mstWriteByte(GEN_00_REGBK, REGBANKADC);
539 1
540 1 if (MACEValue != 0)
541 1 {
542 2 mstWriteByte(BK1_76_FCC_CTRL, 0x89); //gan 0x4f to 0x89
543 2 mstWriteByte(BK1_77_APP_CTRL, 0x78);
544 2 //mstWriteByte(BK1_7E_VIP_Y_CTRL, 0x00);
545 2 }
546 1 else
547 1 {
548 2 mstWriteByte(BK1_76_FCC_CTRL, 0x00);
549 2 mstWriteByte(BK1_77_APP_CTRL, 0x00);
C51 COMPILER V7.50 MS_FUNC 03/18/2008 22:29:09 PAGE 10
550 2 //mstWriteByte(BK1_7E_VIP_Y_CTRL, 0x00);
551 2 }
552 1
553 1 mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
554 1 }
555
556 void mstSetScalingMode(BYTE ucScalingMode)
557 {
558 1
559 1 #if (PANEL_TYPE_SEL == PNL_HITACHI26_L)
BYTE ucTemp;
ucTemp = ucScalingMode;
return;
#else
564 1
565 1 #if 0 //Not Ready
DWORD ulV_Scaling_Factor;
WORD uwInput_V_Resol;
#endif
569 1 DWORD ulH_Scaling_Factor,ulNewHsize;
570 1 WORD uwInput_H_Resol,uwTemp,uwCutOffNum;
571 1 BYTE ucLace_status;
572 1 DWORD ulTemp;
573 1 BYTE ucTemp;
574 1
575 1 if (tOSDSourcSELSequence[Display.ucSourceSEL] == VGA) // If VGA input HZOOM by table
576 1 return;
577 1
578 1 mstWriteByte(GEN_00_REGBK, REGBANKSCALER); //Switch to Bank 0
579 1
580 1 if( g_ucSyncStatus & INTERLANCE_MODE_B)
581 1 ucLace_status = 2;//Interlace
582 1 else
583 1 ucLace_status = 1;//Progracive
584 1
585 1 //Cal H scaling factor
586 1 uwInput_H_Resol = mstReadWord(BK0_0C_SPRHDC_H);//Get Input H resolution
587 1
588 1 ulH_Scaling_Factor = (DWORD)PANEL_WIDTH <<20 ;// The max available panel H_resolution is 0xFFF(4095).
589 1
590 1 uwCutOffNum =(uwInput_H_Resol*SCAL_CUTOFF_H_PER)/SCAL_CUTOFF_RESOL;
591 1
592 1 mstWriteWord(BK0_08_SPRHST_H, g_uwHStar + uwCutOffNum/2);//Capture H Start //BK0_07_SPRHST_L,BK0_08_SPRHS
-T_H
593 1
594 1 if(ucScalingMode == FULL) // 16:9
595 1 {
596 2 mstWriteByte(BK0_38_NLDTI, 0x00); // Disable Nonlinear scaling function
597 2 ulH_Scaling_Factor /= uwInput_H_Resol- uwCutOffNum;
598 2
599 2 //MsSetScalingHImage();
600 2
601 2 mstWriteWord(BK0_49_SIHST_H,PANEL_HSTART);// Start //BK0_48_SIHST_L, BK0_49_SIHST_H
602 2 mstWriteWord(BK0_4D_SIHEND_H,PANEL_HSTART+PANEL_WIDTH);// End //BK0_4C_SIHEND_L, BK0_4D_SIHEND_H
603 2 //1 robbie fixed the parameter only for the panasonic panel 2006-01-12
604 2 #if PANEL_TYPE_SEL==PNL_LTA07_AT
mstWriteWord(BK0_4D_SIHEND_H,0x02c6);// End //BK0_4C_SIHEND_L, BK0_4D_SIHEND_H
#endif//robbie added only for panasonic 2006-01-12
607 2 ulH_Scaling_Factor += 0xC00;//0xc00 get from fine tune
608 2
609 2 }
610 1 else if(ucScalingMode == LETTERBOX) // 4:3
C51 COMPILER V7.50 MS_FUNC 03/18/2008 22:29:09 PAGE 11
611 1 {
612 2 mstWriteByte(BK0_38_NLDTI, 0x00); // Disable Nonlinear scaling function
613 2
614 2 // Get the new H image size
615 2 //ulNewHsize=(((PANEL_HEIGHT*Dot_H)/Dot_W*4)/3)/3;//X*4/3=>4:3,X/3=>3dot in 1 pixel
616 2 ulNewHsize=PANEL_DOT_HEIGHT;//X*4/3=>4:3,X/3=>3dot in 1 pixel
617 2 ulNewHsize=ulNewHsize*PANEL_HEIGHT;
618 2 ulNewHsize=ulNewHsize/PANEL_DOT_WIDTH;
619 2 ulNewHsize=(ulNewHsize*SCAL_RATIO_NUMERATOR)/(SCAL_RATIO_DENOMINATOR*3);
620 2
621 2 //New start point
622 2 uwTemp = PANEL_HSTART + (PANEL_WIDTH - ulNewHsize )/2;
623 2 mstWriteWord(BK0_49_SIHST_H,uwTemp);//new Start //BK0_48_SIHST_L, BK0_49_SIHST_H
624 2
625 2 // New end point
626 2 mstWriteWord(BK0_4D_SIHEND_H,uwTemp+ulNewHsize);//new End //BK0_4C_SIHEND_L, BK0_4D_SIHEND_H
627 2
628 2 // Get new scaling factor
629 2 ulH_Scaling_Factor = (DWORD)ulNewHsize <<20 ;
630 2 ulTemp = (DWORD)uwInput_H_Resol*(SCAL_CUTOFF_RESOL - SCAL_CUTOFF_H_PER);
631 2 ulH_Scaling_Factor /= (ulTemp/SCAL_CUTOFF_RESOL);
632 2
633 2
634 2 // Mask the front and back block
635 2 mstWriteWord(BK0_5D_FRAME_COLOR_2,0);//BK0_5C_FRAME_COLOR_1, BK0_5D_FRAME_COLOR_2
636 2
637 2 ulH_Scaling_Factor += 0xC00;//0xc00 get from fine tune
638 2 }
639 1 else if(ucScalingMode == PARANOMA) // Nonlinear 1 // Patten,Widerscreen Enhanced Circle Hatch 100 IRE
640 1 {
641 2 // New H. scaling factor
642 2 ulH_Scaling_Factor /= SCAL_NON_LINEAR_RESOL;
643 2 ulH_Scaling_Factor *= SCAL_NON_LINEAR_RATIO;
644 2
645 2 ulH_Scaling_Factor /= uwInput_H_Resol; //F0
646 2 ulH_Scaling_Factor += 0x1a00;
647 2 // Size of the count0,count1 and count2
648 2 uwTemp = uwInput_H_Resol /10 ;
649 2 ucTemp = (BYTE)uwTemp/2;
650 2 mstWriteByte(BK0_3B_NLDC0, ucTemp*2); // Counter0
651 2 mstWriteByte(BK0_3C_NLDC1, ucTemp*2); // Counter1
652 2 mstWriteByte(BK0_3D_NLDC2, (uwInput_H_Resol/4)-ucTemp*4 ); // Counter2
653 2 // Enable nonlinear scaling,C0:C1:C2=2:2:1
654 2 //Offset=5*(Pan_H/In_H)*((1/2)-(a/2b))
655 2 ulTemp=5*PANEL_WIDTH;
656 2 ulTemp *= (SCAL_NON_LINEAR_RESOL - SCAL_NON_LINEAR_RATIO)>>1;
657 2 ulTemp /= SCAL_NON_LINEAR_RESOL;
658 2 ulTemp = (ulTemp<<7) / uwInput_H_Resol;
659 2 mstWriteByte(BK0_38_NLDTI, 0x80 + (BYTE)ulTemp); //[7]Nonlinear enable/disable.[6:0]Offset Initial
660 2
661 2 // To get Delta
662 2 ulTemp = ulTemp<< 8;
663 2 ulTemp /= (4*2*ucTemp) ;
664 2
665 2 mstWriteByte(BK0_39_NLDT0, (BYTE)ulTemp); //Deltar0.[7]sign of the offset initial value,[6:0]Delta valu
-e
666 2 mstWriteByte(BK0_3A_NLDT1, (BYTE)ulTemp); //Delta1
667 2
668 2 // Set Display H image size End and Start
669 2 mstWriteWord(BK0_49_SIHST_H,PANEL_HSTART); //Start //BK0_48_SIHST_L, BK0_49_SIHST_H
670 2 mstWriteWord(BK0_4D_SIHEND_H,PANEL_HSTART+PANEL_WIDTH);//End //BK0_4C_SIHEND_L, BK0_4D_SIHEND_H
671 2
C51 COMPILER V7.50 MS_FUNC 03/18/2008 22:29:09 PAGE 12
672 2 ulH_Scaling_Factor += 0x800;//0xc00 get from fine tune
673 2
674 2 }
675 1 if((uwInput_H_Resol-uwCutOffNum) > PANEL_WIDTH)
676 1 {
677 2 sysWriteString("H-Scaling Rate:");
678 2 sysWriteUartHex4((WORD)(ulH_Scaling_Factor>>16),0);
679 2 sysWriteUartHex4((WORD)(ulH_Scaling_Factor),0);
680 2 sysWriteString(tChangeLine);
681 2
682 2 #if 0 //(MARIA_TYPE_SEL == MARIA_2)
mstWriteWord(BK0_31_SRH_M,(unsigned int)(ulH_Scaling_Factor) );//BK0_30_SRH_L,BK0_31_SRH_M
mstWriteByte(BK0_32_SRH_H,(unsigned char)((ulH_Scaling_Factor&0x0F0000)>>16)+0xC0);
#else
686 2 mstWriteWord(BK0_31_SRH_M,(unsigned int)(ulH_Scaling_Factor&0xFFF000) );//BK0_30_SRH_L,BK0_31_SRH_M
687 2 mstWriteByte(BK0_32_SRH_H,(unsigned char)((ulH_Scaling_Factor&0x0F0000)>>16)+0xC0);
688 2 #endif
689 2 }
690 1 else
691 1 {
692 2 mstWriteWord(BK0_08_SPRHST_H, g_uwHStar);
693 2 mstWriteByte(BK0_32_SRH_H, 0x00);
694 2 }
695 1
696 1
697 1
698 1 #if 0 //Not Ready
//Cal V scaling factor
uwInput_V_Resol = mstReadWord(BK0_0A_SPRVDC_H)-SCAL_CUTOFF_V_NUM;//Get Input V resolution
if((uwInput_V_Resol / PANEL_HEIGHT)>1)
{
ulV_Scaling_Factor = (DWORD)uwInput_V_Resol <<20; // The max available panel H_resolution is 0xFFF(4
-095).
ulV_Scaling_Factor /= PANEL_HEIGHT*ucLace_status;//*2=>interlace
mstWriteWord(BK0_34_SRV_M,(unsigned int)ulV_Scaling_Factor);
*((BYTE pdata*) BK0_35_SRV_H) = (unsigned char)((ulV_Scaling_Factor&0x3F0000)>>16)+0x80;
}
else
*((BYTE pdata*) BK0_35_SRV_H) = 0x00;
#endif
714 1 //1 robbie fixed the parameter only for the panasonic panel 2006-01-12
715 1 #if PANEL_TYPE_SEL==PNL_LTA07_AT
if((g_ucSyncStatus & PAL_MODE_B) != 0)
{
mstWriteWord(BK0_31_SRH_M,0x6000);//
mstWriteByte(BK0_32_SRH_H,0xCB);
}//
#endif//robbie added only for panasonic 2006-01-12
722 1 #endif
723 1 }
724
725 /*void mstSetScalingHImage(void)
726 {
727 //mstWriteByte(BK0_48_SIHST_L, IMAGE_HSTAR); //Start
728 mstWriteByte(BK0_48_SIHST_L, PANEL_HSTART); // Start
729 mstWriteByte(BK0_49_SIHST_H, 0);
730 mstWriteByte(BK0_4C_SIHEND_L, PANEL_HSTART+PANEL_WIDTH); // End
731 mstWriteByte(BK0_4D_SIHEND_H, ((PANEL_HSTART+PANEL_WIDTH)&0xFF00)>>8);
732 }*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -