📄 setup.c
字号:
#if defined (SUPPORT_PSCAN_PROMPT_SETUP) || defined (SUPPORT_PSCAN_PROMPT_OSD)
// Brian1.07a, cancel PScan prompt
__bOSDPromptMode = FALSE;
#endif
// Brian0.90 always do these when exit Setup
GDI_ClearRegion(__bCurrentRegionId);
#ifdef GDI_4_BIT_OSD
// reload palette for 4-bit region as early as possible
// this colud save some trouble: the pink-screen-flash problem
GDI_SetGDIPalEntry();
#endif
// Brian0.87, disable one field display when exit Setup
W99AV_WriteDRAMData(W99AV_DRAM_ONE_FIELD, 0x0);
// brian.277a Test Tone
// PCM_SCALE may be set by Test Tone, so we turn it off as it was when we enter Setup
// if we don't turn PCM_SCALE off, there may be noise (on AMP) when it change Audio Output
CHIPS_OpenAudio(FALSE);
//clear the password status if user press KEY_SETUP to exist password page
//_RecoverVariables();
//turn on highlight
HAL_ControlHighlight(HAL_HLI_ACTION_SELECT, __bNowBTNNumber);
HAL_Display(HAL_DISPLAY_SPST, TRUE);
//clear VCD3.0 highlight before leaving SETUP
HAL_VCD30_Area(FALSE);
// Brian2.39a-2
OSD_ShowHighlight(TRUE);
/*
#ifdef SETUP_BLINKING_SELECTION
{
extern DWORD _dwFont[];
// store the palette data back
_dwFont[0] = ((COL_CUR_SEL)| ((DWORD) 0x5A << 24));
OSD_ChangePALEntry(44, _dwFont[0]);
OSD_ChangePALEntry(180, _dwFont[0]);
OSD_ChangePALEntry(212, _dwFont[0]);
}
#endif
*/
//OSD_OUTPUT_MACRO(MSG_SETUP_MAIN_BASE, wParam, 0); // Exit SETUP
__bKey=KEY_NO_KEY;
//__bSetupMode = FALSE;
// to prevent from doing a long time when the the level is changed.
if (_bParentalControlChange)
NV_Setting(SET_PTL_ID_FLD, 0);
//clear OSD highlight
//_ClearAllHighlight();
//Do the recover action before playing
#ifdef SETUP_REDUCE_LUMINANCE
//recover luminance
W99AV_WriteRegW(LAR, W99AV_LAR_VALUE); // DVD_101-2TCH, must use 0x82
#endif
//_SetTVSystemToIC(); // Brian.172r call SETUP_AdjustSetting + OSD_OUTPUT_MACRO ( MSG_TVMODE, __SetupInfo.bTVSystem, 0x0 ) instead
//_SetVideoOutputToIC(); // Brian.172r call SETUP_AdjustSetting instead
SETUP_AdjustSetting(SETUP_SCREEN_VIDEO_OUTPUT);
// Brian0.87, seems unnecessary, and I didn't implement it either
//OSD_OUTPUT_MACRO ( MSG_TVMODE, __SetupInfo.bTVSystem, 0x0 );
// TCC276
SETUP_AdjustSetting(SETUP_SCREEN_TV_TYPE);
// printf("exit setup!\n");//xuli1108
_SetBrightnessToIC(); //xuli1108
_SetContrastToIC(); //xuli1108
// Brian2.78b-2, need do this check anyway
if (_bAudioTypeChange)
{
SETUP_AdjustSetting(SETUP_AUDIO_OUTPUT);
#ifdef SUPPORT_AV_SYSTEM
// Added by KCHong, open DDX when playing test tone
CHIPS_Channel_ReMapping();
// Set volume for normal case
// wyc2.80, rename function name to AMP_SetChannelVolume
for(_bSetupTemp=0;_bSetupTemp<=8;_bSetupTemp++)
AMP_SetChannelVolume(_bSetupTemp,1);
// wyc2.80, rename function name to AMP_mute
AMP_mute(DAC_MUTE_ON);
#endif
}
// Brian0.83
// inform OSD that we are leaving Setup
// OSD module should update _bCurrentUI and _bPreviousUI, recover previous UI
// OSD_Output(MSG_OSDAPP, OSD_APPMODE_EXIT, 0x0);
OSD_OUTPUT_MACRO(MSG_OSDAPP, OSD_APPMODE_EXIT, 0x0); //Brian1.02
#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM //XuLi.230
if((__bPreCountStop==0) ||
(__bProgramStop==TRUE)) //Need resume
{
if(!(__wDiscType & CDROM_M1))
{
UTL_PreStartServo( __dwTimeNow);
CC_DoKeyAction(KEY_RESUME);
__bProgramStop=0;
}
else if (__btPause)
CC_DoKeyAction(KEY_PAUSE);
if (__bAttrPlay == ATTR_JPG) //CoCo2.30, change to next JPEG immediately
{
__bFMStage=STAGE_NEXT_ITEM;
}
}
#else //#ifdef PRESTOP_BEFORE_SETUP_AND_PROGRAM
if (__btPause)
{
//if (_bAudioTypeChange)
// HAL_SetAudioType(__bAudioType);
//CoCo.172q, fix the problem about MP3/LPCM/CD-DA audio is not continuous.
//if (__bAudioType == HAL_AUDIO_AC3) // Brian.172r call SETUP_AdjustSetting instead
// HAL_SetAudioType(__bAudioType);
// Brian2.78b-2, move it out
//if (_bAudioTypeChange)
// SETUP_AdjustSetting(SETUP_AUDIO_OUTPUT);
CC_DoKeyAction(KEY_PAUSE);
}
#endif
// Brian2.78b-2, will always do this check
//else // brian.277a Test Tone
//{ // make sure all the setting is correct, for test tone may have change the dwACR2, ...
// if (_bAudioTypeChange)
// HAL_SetAudioType(__bAudioType);
//}
__bSetupMode = FALSE;
_IdentifyRegionCode(); // brian.161 check region code (show or clear the error message)
// thumbnail has remove this variable
/*
//CoCo.jpeg
if (__bThumbnailMode)
__bThumbnailRepaint = TRUE;
*/
#ifndef NO_DIGEST //LJY1.20, support 4M flash, remove digest
//LJY0.87, enable audio for digest mode
if(__btDIGEST)
CHIPS_OpenAudio( TRUE );
#endif
// Brian0.90
//W99AV_WriteDM (W99AV_DM_UDE_CDDA, 0) ;
//#endif
#endif
}
// ***************************************************************************
// Function : _GetPasswordNumber
// Description : This function will transfer the char password to "number" password.
// Arguments : None.
// Return : The password number.
// Side Effect :
// ***************************************************************************
WORD _GetPasswordNumber(void)
{
WORD wPassword = 0;
#ifndef NO_SETUP
wPassword = (WORD)__bPassword[0]*(WORD)1000;
wPassword += (WORD)__bPassword[1]*(WORD)100;
wPassword += (WORD)__bPassword[2]*(WORD)10;
wPassword += (WORD)__bPassword[3];
#endif
return wPassword;
}
// ***************************************************************************
// Function : _SetMenuEnable
// Description : This function will set __bMenuItemEnable array according to
// bMode.
// Arguments : VCD mode: bMode == 1, Run-time mode: bMode == 2
// Return : none
// Side Effect :
// ***************************************************************************
void _SetMenuEnable(BYTE bMode)
{
#ifndef NO_SETUP
switch (bMode)
{
case 0:
case 1:
case 2:
// enable all items
// Note: take care of the size of _bEnableXXX arry, may not be just 1
_bEnableLanguage[0] = 0xFF;
_bEnableScreen[0] = 0xFF;
_bEnableAudio[0] = 0xFF;
_bEnableCustom[0] = 0xFF;
_bEnableMain[0] = 0xFF;
break;
}
switch (bMode)
{
case 1: //VCD mode
case 2: //Run-time mode
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_LANGUAGE, SETUP_LANGUAGE_MENU, FALSE);
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_LANGUAGE, SETUP_LANGUAGE_AUDIO, FALSE);
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_LANGUAGE, SETUP_LANGUAGE_SUBTITLE, FALSE);
#ifndef REMOVE_SETUP_SPEAKER_TEST
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_SPEAKER_TEST, FALSE);
#endif
// Brian2.79, use __bCountStop to determine the status
// Allow change TV Type when pre-stop, i.e., __bCountStop == 1
if (__bCountStop != 1)
{
//disable "TV TYPE"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_SCREEN, SETUP_SCREEN_TV_TYPE, FALSE);
}
break;
}
switch (bMode)
{
//case 0:
// break;
#ifndef ENABLE_CUSTOM_SETUP
case 1: //VCD mode
#endif
case 2: //Run-time mode
// Brian2.79, use __bCountStop to determine the status
// Allow change CUSTOM SETUP when pre-stop, i.e., __bCountStop == 1
if (__bCountStop != 1)
{
//disable "CUSTOM SETUP"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_MAIN, SETUP_MAIN_CUSTOM, FALSE);
}
else
{ // is in pre-stop and custom setup is enabled, so we also enable Change Password and Angle Mark
//disable Parental Control
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_CUSTOM, SETUP_CUSTOM_PARENTAL, FALSE);
//disable Read Default Value
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_CUSTOM, SETUP_CUSTOM_DEFAULT_VALUE, FALSE);
}
//disabe "AUDIO LPCM"
if (bMode == 2) // VCD mode doesn't disable LPCM
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_LPCM, FALSE);
break;
case 3: //not 5.1 channel
//disabe "AUDIO CENTER"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_CENTER, FALSE);
//disabe "AUDIO REAR"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_REAR, FALSE);
//disabe "AUDIO SUBWOOFER"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_SUBWOOFER, FALSE);
// Brian1.23, only do that when Prologic, otherwise the item has the same ID as SETUP_MENU_AUDIO_WITH_PROLOGIC will be diabled
if (__bSupportFeature & SUPPORT_FEATURE_PROLOGIC)
{
// Brian1.08, disable the Pro Logic item directly
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO_WITH_PROLOGIC, SETUP_AUDIO_PROLOGIC, FALSE);
}
break;
case 4: //5.1 channel
//Enable "AUDIO CENTER"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_CENTER, TRUE);
//Enable "AUDIO REAR"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_REAR, TRUE);
//Enable "AUDIO SUBWOOFER"
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO, SETUP_AUDIO_SUBWOOFER, TRUE);
// Brian1.23, only do that when Prologic, otherwise the item has the same ID as SETUP_MENU_AUDIO_WITH_PROLOGIC will be enabled
if (__bSupportFeature & SUPPORT_FEATURE_PROLOGIC)
{
// Brian1.08, enable the Pro Logic item
OSDMENU_SET_ITEM_ENABLE(SETUP_MENU_AUDIO_WITH_PROLOGIC, SETUP_AUDIO_PROLOGIC, TRUE);
}
break;
default:
break;
}
#endif // #ifndef NO_SETUP
}
// ***************************************************************************
// Function : _SetupBrightnessToIC
// Description : This function will set brightness value to IC.
// Arguments : None.
// Return : None.
// Side Effect :
// ***************************************************************************
void _SetBrightnessToIC(void)
{
#ifndef NO_SETUP
/*
switch (__SetupInfo.bBrightness)
{
case SETUP_SCREEN_BRIGHTNESS_NORMAL:
HAL_AdjustBrightView(HAL_BRIGHTVIEW_NORMAL);
break;
case SETUP_SCREEN_BRIGHTNESS_BRIGHT:
HAL_AdjustBrightView(HAL_BRIGHTVIEW_BRIGHT);
break;
case SETUP_SCREEN_BRIGHTNESS_SOFT:
HAL_AdjustBrightView(HAL_BRIGHTVIEW_SOFT);
break;
default:
break;
}
*/
// Brian1.25
HAL_AdjustBrightView(__SetupInfo.bBrightness-SETUP_SCREEN_BRIGHTNESS_BASE);
#endif // #ifndef NO_SETUP
}
// ***************************************************************************
// Function : _SetupContrastToIC
// Description : This function will set contrast value to IC.
// Arguments : None.
// Return : None.
// Side Effect :
// ***************************************************************************
void _SetContrastToIC(void)
{
#ifndef NO_SETUP
/*
switch (__SetupInfo.bContrast)
{
case SETUP_SCREEN_CONTRAST_MINUS4:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL0);
break;
case SETUP_SCREEN_CONTRAST_MINUS3:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL1);
break;
case SETUP_SCREEN_CONTRAST_MINUS2:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL2);
break;
case SETUP_SCREEN_CONTRAST_MINUS1:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL3);
break;
case SETUP_SCREEN_CONTRAST_0:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL4);
break;
case SETUP_SCREEN_CONTRAST_PLUS1:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL5);
break;
case SETUP_SCREEN_CONTRAST_PLUS2:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL6);
break;
case SETUP_SCREEN_CONTRAST_PLUS3:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL7);
break;
case SETUP_SCREEN_CONTRAST_PLUS4:
HAL_AdjustContrast(HAL_CONTRAST_LEVEL8);
break;
default:
break;
}
*/
// Brian1.25
HAL_AdjustContrast(__SetupInfo.bContrast-SETUP_SCREEN_CONTRAST_BASE);
#endif // #ifndef NO_SETUP
}
// ***************************************************************************
// Function : _SetDNRToIC
// Description : This function will set DNR value to IC. The "dynamics" register
// : w
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -