📄 modedet.c
字号:
// if(FgOverRange)
// {
//algu 1120 ShowOverRange();
// OsdShowMessage(OVER_RANGE_MESSAGE);
// OSDNumber = L9_OVERRANGE;
// if (FgBurnin)
// PromptTimer = TIME_3SEC;
// else
// PromptTimer = TIME_25SEC;
// return;
// }
PromptTimer = 0;
// algu 1130 if( RangeDetect()== Fail_Safe_Mode) //algu 1123 temp
// {
// OSDNumber=L9_FAILSAFE;
// PromptTimer=TIME_1SEC;
// OsdShowMessage(OVER_RANGE_MESSAGE);
// }
// ES=1;
// FgAutoOn=1;
// FgChangeAuto=1;
// #if ZURAC_HWMD
// if( FgShowLogo ) /* Zurac Internal Osd demo */
// {
// if( FgOsdFontLoaded==0 )
// {
// ZuracOsdLoadFont();
// FgOsdFontLoaded = 1;
// }
// ZuracOsdShowFont();
// }
// #else
// if( FgShowLogo ) /* Zurac Internal Osd demo */
// {
// ZuracOsdLoadFont();
// ZuracOsdShowFont();
// }
// #endif
// }
}
}
/************************************************************************/
/* Function : ModeFindMode */
/* Description : Find Mode */
/* Input : None */
/* Output : none */
/************************************************************************/
void ModeFindMode( void )
{
Word IDATA hfreq,vfreq;
Word IDATA htole,vtole;
Byte IDATA pol,inpol;
Bool fgFindMode,fgsmall8;
inpol = ((Byte)CurrentHPol << 1) | CurrentVPol;
ModeCounter = 0;
do
{
fgFindMode = 0;
fgsmall8=0;
// Get Mode Timing
DataPointer = MODE_TIMING_TABLE + (7 * ModeCounter);
pol = *DataPointer;
HIBYTE_REF(hfreq) = *(DataPointer+1);
LOBYTE_REF(hfreq) = *(DataPointer+2);
HIBYTE_REF(vfreq) = *(DataPointer+3);
LOBYTE_REF(vfreq) = *(DataPointer+4);
htole = *(DataPointer+5);
vtole = *(DataPointer+6);
if(CurHFreq >= hfreq) hfreq = CurHFreq - hfreq;
else hfreq = hfreq - CurHFreq;
if(CurVFreq >= vfreq) vfreq = CurVFreq - vfreq;
else vfreq = vfreq - CurVFreq;
if( (hfreq < htole) && (vfreq < vtole) )
{
fgFindMode = 1;
#if (DOUBLE_SAMPLING==1) //algu 1112
if( (InputSource==INPUT_ANALOG) && (ModeCounter<=8) )
{
ModeCounter += NORMAL_MODE_NUMBER;
fgsmall8=1;
}
#endif
#if (DOUBLE_SAMPLING==1) //algu 1112
if( (ModeCounter==NORMAL_MODE_NUMBER) || (ModeCounter==DosModeTable[0][1]) || (ModeCounter == DosModeTable[0][0]) )//alf 2) || (ModeCounter==9) ) //1107
#else
if( (ModeCounter==0) || (ModeCounter==DosModeTable[0][1]) || (ModeCounter == DosModeTable[0][0]) )//alf 2) || (ModeCounter==9) ) //1107
#endif
{
if( inpol != pol ) fgFindMode = 0;
if( ModeCounter==DosModeTable[0][0]) //alf 9 ) //1107
{
if( FgDosMode==1 ) ModeCounter = DosModeTable[0][1];//alf 2; //1107 /* Graphic mode */
fgFindMode = 1;
}
else if( ModeCounter==DosModeTable[0][1])//alf 2 ) //1107
{
if( FgDosMode==0 ) ModeCounter = DosModeTable[0][0]; //alf 9; //1107 /* Graphic mode */
fgFindMode = 1;
}
else if( ModeCounter == 0 && ( FgCompSignal || FgSogSignal) && CurVFreq < 7200)
{
if(FgDosMode1 == 1)
fgFindMode = 1;
}
}
if( (ModeCounter==DosModeTable[1][0]) ||(ModeCounter==DosModeTable[1][1]) )// alf 3) || (ModeCounter==10) ) //1107
{
if( FgDosMode==0 ) ModeCounter = DosModeTable[1][0];//alf 10;//1107 /* Text mode */
else ModeCounter = DosModeTable[1][1];//alf 3; //1107 /* Graphic mode */
}
else if( (ModeCounter==22) || (ModeCounter==24) )
{
if( inpol!=pol )
{
if( ModeCounter==22 ) fgFindMode = 0;
if( ModeCounter==24 ) ModeCounter = 22;
}
}
else if( (ModeCounter==26) || (ModeCounter==28) )
{ /* 1152x864 v.s. 1152x870 */
if( inpol != pol )
{
if( ModeCounter==26 ) fgFindMode = 0;
if( ModeCounter==28 ) ModeCounter = 26;
}
}
else if( (ModeCounter==33) || (ModeCounter==40) )
{ /* 1280x1024 VESA(75) v.s. SUN(76) */
if( inpol != pol )
{
if( ModeCounter==33 ) fgFindMode = 0;
if( ModeCounter==40 ) ModeCounter = 33;
}
}
}
#if (DOUBLE_SAMPLING==1) //Vincent 0108
// if( (InputSource==INPUT_ANALOG) && (ModeCounter>=NORMAL_MODE_NUMBER) && fgFindMode == 0)
if( fgsmall8==1 && fgFindMode == 0)
{
ModeCounter -= NORMAL_MODE_NUMBER;
}
#endif
if( fgFindMode == 0 ) ModeCounter++;
} while ( (!fgFindMode) && (ModeCounter < TOTAL_MODE_NUMBER) );
if( fgFindMode==0 ) // Search unknow mode
{
for(pol=0;pol<TOTAL_UNKNOWMODE && !fgFindMode ; pol++)
{
DataPointer = UnknowMode + (6 * pol);
HIBYTE_REF(hfreq) = *(DataPointer+0);
LOBYTE_REF(hfreq) = *(DataPointer+1);
HIBYTE_REF(vfreq) = *(DataPointer+2);
LOBYTE_REF(vfreq) = *(DataPointer+3);
htole = *(DataPointer+4);
vtole = *(DataPointer+5);
if(CurHFreq >= hfreq) hfreq = CurHFreq - hfreq;
else hfreq = hfreq - CurHFreq;
if(CurVFreq >= vfreq) vfreq = CurVFreq - vfreq;
else vfreq = vfreq - CurVFreq;
if( (hfreq < htole) && (vfreq < vtole) )
fgFindMode = 1;
}
if(fgFindMode)
ModeCounter = TOTAL_MODE_NUMBER;
}
#if 1
if( fgFindMode==0 ) // new mode handling
{
if( HS1frCount > 1100 )
{
}
else if( HS1frCount > 1024 )
{
if( CurVFreq > 8650 ) { }
else if( CurVFreq > 7650 ) ModeCounter = 34;
else if( CurVFreq > 7350 ) ModeCounter = 33;
else if( CurVFreq > 7100 ) ModeCounter = 32;
else if( CurVFreq > 6200 ) ModeCounter = 31;
else if( CurVFreq > 5800 ) ModeCounter = 30;
else /* below 58.00 Hz */ ModeCounter = 30;
}
else if( HS1frCount > 960 )
{
if( CurVFreq < 6200 && CurVFreq > 5800 ) ModeCounter = 29;
}
else if( HS1frCount > 864 )
{
if( CurVFreq > 8650 ) { }
else if( CurVFreq > 7650 ) ModeCounter = 27;
else if( CurVFreq > 7200 ) ModeCounter = 26;
else if( CurVFreq > 5900 ) ModeCounter = 25;
else /* below 59.00 Hz */ ModeCounter = 25;
}
else if( HS1frCount > 768 )
{
if( CurVFreq > 8650 ) { }
else if( CurVFreq > 7650 ) ModeCounter = 23;
else if( CurVFreq > 7350 ) ModeCounter = 22;
else if( CurVFreq > 7100 ) ModeCounter = 21;
else if( CurVFreq > 6200 ) ModeCounter = 20;
else if( CurVFreq > 5800 ) ModeCounter = 19;
else /* below 58.00 Hz */ ModeCounter = 19;
}
else if( HS1frCount > 600 )
{
if( CurVFreq > 8650 ) { }
else if( CurVFreq > 7650 ) ModeCounter = 16;
else if( CurVFreq > 7350 ) ModeCounter = 15;
else if( CurVFreq > 7100 ) ModeCounter = 14;
else if( CurVFreq > 6200 ) ModeCounter = 13;
else if( CurVFreq > 5800 ) ModeCounter = 12;
else if( CurVFreq > 5400 ) ModeCounter = 11;
else /* below 54.00 Hz */ ModeCounter = 11;
}
else if( HS1frCount > 480 )
{
if( CurVFreq > 8650 ) { }
else if( CurVFreq > 7650 ) ModeCounter = 8;
else if( CurVFreq > 7350 ) ModeCounter = 7;
else if( CurVFreq > 6750 ) ModeCounter = 6;
else if( CurVFreq > 6200 ) ModeCounter = 5;
else if( CurVFreq > 5800 ) ModeCounter = 4;
else /* below 58.00 Hz */ ModeCounter = 4;
}
else if( HS1frCount > 400 )
{
if( CurVFreq > 8650 ) { }
else if( CurVFreq > 7200 ) ModeCounter = 10;
else if( CurVFreq > 5800 ) ModeCounter = 9;
else if( CurVFreq > 5400 ) ModeCounter = 1;
else /* below 54.00 Hz */ ModeCounter = 1;
}
}
#endif
#if (DOUBLE_SAMPLING==1)
if( (InputSource==INPUT_ANALOG) && (ModeCounter<=8) )
{
ModeCounter += NORMAL_MODE_NUMBER;
}
#endif
#if (DIGITAL_DOS_MODE==1)
if( InputSource==INPUT_DIGITAL )
{
if( (ModeCounter==0) ||
(ModeCounter==DosModeTable[0][0]) || (ModeCounter==DosModeTable[0][1]) )
{
pol = ModeGetDosMode();
if( pol==2 )
ModeCounter = DosModeTable[0][0]; /* 720x400/70 */
else if( pol==1)
ModeCounter = DosModeTable[0][1]; /* 640x400/70 */
else
ModeCounter = 0; /* 640x350/70 */
}
else if( (ModeCounter==DosModeTable[1][0]) || (ModeCounter==DosModeTable[1][1]) )
{
pol = ModeGetDosMode();
if( pol==2 )
ModeCounter = DosModeTable[1][0]; /* 720x400/85 */
else
ModeCounter = DosModeTable[1][1]; /* 640x400/85 */
}
}
#endif
// algu 1122 if( ModeCounter < TOTAL_MODE_NUMBER ) /* filter out non-supported mode */
// {
// if( ModeSupport[ModeCounter]==0 )
// {
// ModeCounter = TOTAL_MODE_NUMBER; /* make this mode as unknown mode */
// FgOverRange=1; //algu 1107 show out of range message
// }
// else if( ModeSupport[ModeCounter]==2 )
// {
//#if (ADC_IS_48_BIT==0) /* filter out scaling down mode */ //mk0614
// ModeCounter = TOTAL_MODE_NUMBER;
//#endif
// }
// }
return;
}
/**************************************************************/
/* data definition for FreeRunInit() */
/**************************************************************/
#if ( OUTPUT_MODE==OUTPUT_VGA )
Byte RDATA fri_12[] = { 0x80,0x02,0x20,0x03,0x23,0x00,0xe0,0x01,0x0d,0x02,0x20 };
Byte RDATA fri_30[] = { 0x94,0x00,0x80,0x02,0x12,0x00,0xe0,0x01,0x0b,0x02 };
Byte RDATA fri_40[] = { 0x94,0x00,0x14,0x03,0x12,0x00,0xf2,0x01 };
Byte RDATA fri_60[] = { 0x20,0x03,0x20,0x03 };
#elif ( OUTPUT_MODE==OUTPUT_VGAW )
Byte RDATA fri_12[] = { 0x80,0x02,0x20,0x03,0x23,0x00,0xe0,0x01,0x0d,0x02,0x20 };
Byte RDATA fri_30[] = { 0x20,0x00,0x20,0x03,0x10,0x00,0xe0,0x01,0x0b,0x02 };
Byte RDATA fri_40[] = { 0x20,0x00,0x40,0x03,0x10,0x00,0xf0,0x01 };
Byte RDATA fri_60[] = { 0x20,0x04,0x20,0x04 };
#elif ( OUTPUT_MODE==OUTPUT_SVGA )
Byte RDATA fri_12[] = { 0x20,0x03,0x20,0x04,0x1c,0x00,0x58,0x02,0x74,0x02,0x40 };
Byte RDATA fri_30[] = { 0x20,0x00,0x20,0x03,0x10,0x00,0x58,0x02,0x74,0x02 };
Byte RDATA fri_40[] = { 0x20,0x00,0x40,0x03,0x10,0x00,0x68,0x02 };
Byte RDATA fri_60[] = { 0x20,0x04,0x20,0x04 };
#elif ( OUTPUT_MODE==OUTPUT_XGA )
Byte RDATA fri_12[] = { 0x00,0x04,0x38,0x05,0x23,0x00,0x20,0x03,0x20,0x03,0x68 };
Byte RDATA fri_30[] = { 0x20,0x00,0x00,0x04,0x23,0x00,0x00,0x03,0x26,0x03 };
Byte RDATA fri_40[] = { 0x20,0x00,0x20,0x04,0x23,0x00,0x23,0x03 };
Byte RDATA fri_60[] = { 0x40,0x05,0x40,0x05 };
#else /* OUTPUT_MODE==OUTPUT_SXGA */
Byte RDATA fri_12[] = { 0x00,0x05,0x98,0x06,0x23,0x00,0x00,0x04,0x2a,0x04,0x68 };
#if ( PANEL_DEFAULT == PANEL_ACER )
Byte RDATA fri_30[] = { 0xa0,0x00,0x00,0x05,0x20,0x00,0x00,0x04,0x29,0x04 };
Byte RDATA fri_40[] = { 0xa0,0x00,0xa0,0x05,0x20,0x00,0x20,0x04 };
#else
Byte RDATA fri_30[] = { 0x20,0x00,0x00,0x05,0x23,0x00,0x00,0x04,0x2a,0x04 };
Byte RDATA fri_40[] = { 0x20,0x00,0x20,0x05,0x23,0x00,0x23,0x04 };
#endif
Byte RDATA fri_60[] = { 0x98,0x06,0x98,0x06 };
#endif
/**************************************************************/
/**************************************************************/
void FreeRunInit(void)
{
if (FgFreeRun) return; //algu 1122
ResetScaler();
EepromTimingDefault(FREERUN_MODE); // preset default parameter to variables
Ttfc( FREERUN_MODE,2 ); // This is a must. Do not remove it!
ZuracWriteControl(0x12,fri_12,11); // Modify Input window parameters
ZuracWriteControl(0x30,fri_30,10); // Modify Output window parameters
ZuracWriteControl(0x40,fri_40,8); // Modify background window parameters
ZuracWriteControl(0x60,fri_60,4); // Modify Scaling factor
PowerPanel(1); // Panel power-on
}
/************************************************************************/
/* Function : ZuracFreeRun */
/* Description : free running */
/* Input : OSDTitle */
/* Output : none */
/************************************************************************/
void ZuracFreeRun( Byte OSDTitle )
{
if( FgPowerStby )
{
SystemPowerOn();
}
else
{
FreeRunInit();
PowerLedPower(1); // on Power-LED
PowerLedSleep(0); // off Sleep-LED
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -