⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 底层驱动开发
💻 C
📖 第 1 页 / 共 5 页
字号:
/* $XFree86$ *//* $XdotOrg$ *//* * Mode initializing code (CRT1 section) for * for SiS 300/305/540/630/730, *     SiS 315/550/[M]650/651/[M]661[FGM]X/[M]74x[GX]/330/[M]76x[GX], *     XGI Volari V3XT/V5/V8, Z7 * (Universal module for Linux kernel framebuffer and X.org/XFree86 4.x) * * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria * * If distributed as part of the Linux kernel, the following license terms * apply: * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the named License, * * or any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA * * Otherwise, the following license terms apply: * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted provided that the following conditions * * are met: * * 1) Redistributions of source code must retain the above copyright * *    notice, this list of conditions and the following disclaimer. * * 2) Redistributions in binary form must reproduce the above copyright * *    notice, this list of conditions and the following disclaimer in the * *    documentation and/or other materials provided with the distribution. * * 3) The name of the author may not be used to endorse or promote products * *    derived from this software without specific prior written permission. * * * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Author: 	Thomas Winischhofer <thomas@winischhofer.net> * * Formerly based on non-functional code-fragements for 300 series by SiS, Inc. * Used by permission. */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include "init.h"#ifdef SIS300#include "300vtbl.h"#endif#ifdef SIS315H#include "310vtbl.h"#endif#if defined(ALLOC_PRAGMA)#pragma alloc_text(PAGE,SiSSetMode)#endif/*********************************************//*         POINTER INITIALIZATION            *//*********************************************/#if defined(SIS300) || defined(SIS315H)static voidInitCommonPointer(struct SiS_Private *SiS_Pr){   SiS_Pr->SiS_SModeIDTable  = SiS_SModeIDTable;   SiS_Pr->SiS_StResInfo     = SiS_StResInfo;   SiS_Pr->SiS_ModeResInfo   = SiS_ModeResInfo;   SiS_Pr->SiS_StandTable    = SiS_StandTable;   SiS_Pr->SiS_NTSCTiming     = SiS_NTSCTiming;   SiS_Pr->SiS_PALTiming      = SiS_PALTiming;   SiS_Pr->SiS_HiTVSt1Timing  = SiS_HiTVSt1Timing;   SiS_Pr->SiS_HiTVSt2Timing  = SiS_HiTVSt2Timing;   SiS_Pr->SiS_HiTVExtTiming  = SiS_HiTVExtTiming;   SiS_Pr->SiS_HiTVGroup3Data = SiS_HiTVGroup3Data;   SiS_Pr->SiS_HiTVGroup3Simu = SiS_HiTVGroup3Simu;#if 0   SiS_Pr->SiS_HiTVTextTiming = SiS_HiTVTextTiming;   SiS_Pr->SiS_HiTVGroup3Text = SiS_HiTVGroup3Text;#endif   SiS_Pr->SiS_StPALData   = SiS_StPALData;   SiS_Pr->SiS_ExtPALData  = SiS_ExtPALData;   SiS_Pr->SiS_StNTSCData  = SiS_StNTSCData;   SiS_Pr->SiS_ExtNTSCData = SiS_ExtNTSCData;   SiS_Pr->SiS_St1HiTVData = SiS_StHiTVData;   SiS_Pr->SiS_St2HiTVData = SiS_St2HiTVData;   SiS_Pr->SiS_ExtHiTVData = SiS_ExtHiTVData;   SiS_Pr->SiS_St525iData  = SiS_StNTSCData;   SiS_Pr->SiS_St525pData  = SiS_St525pData;   SiS_Pr->SiS_St750pData  = SiS_St750pData;   SiS_Pr->SiS_Ext525iData = SiS_ExtNTSCData;   SiS_Pr->SiS_Ext525pData = SiS_ExtNTSCData;   SiS_Pr->SiS_Ext750pData = SiS_Ext750pData;   SiS_Pr->pSiS_OutputSelect = &SiS_OutputSelect;   SiS_Pr->pSiS_SoftSetting  = &SiS_SoftSetting;   SiS_Pr->SiS_LCD1280x720Data      = SiS_LCD1280x720Data;   SiS_Pr->SiS_StLCD1280x768_2Data  = SiS_StLCD1280x768_2Data;   SiS_Pr->SiS_ExtLCD1280x768_2Data = SiS_ExtLCD1280x768_2Data;   SiS_Pr->SiS_LCD1280x800Data      = SiS_LCD1280x800Data;   SiS_Pr->SiS_LCD1280x800_2Data    = SiS_LCD1280x800_2Data;   SiS_Pr->SiS_LCD1280x854Data      = SiS_LCD1280x854Data;   SiS_Pr->SiS_LCD1280x960Data      = SiS_LCD1280x960Data;   SiS_Pr->SiS_StLCD1400x1050Data   = SiS_StLCD1400x1050Data;   SiS_Pr->SiS_ExtLCD1400x1050Data  = SiS_ExtLCD1400x1050Data;   SiS_Pr->SiS_LCD1680x1050Data     = SiS_LCD1680x1050Data;   SiS_Pr->SiS_StLCD1600x1200Data   = SiS_StLCD1600x1200Data;   SiS_Pr->SiS_ExtLCD1600x1200Data  = SiS_ExtLCD1600x1200Data;   SiS_Pr->SiS_NoScaleData          = SiS_NoScaleData;   SiS_Pr->SiS_LVDS320x240Data_1   = SiS_LVDS320x240Data_1;   SiS_Pr->SiS_LVDS320x240Data_2   = SiS_LVDS320x240Data_2;   SiS_Pr->SiS_LVDS640x480Data_1   = SiS_LVDS640x480Data_1;   SiS_Pr->SiS_LVDS800x600Data_1   = SiS_LVDS800x600Data_1;   SiS_Pr->SiS_LVDS1024x600Data_1  = SiS_LVDS1024x600Data_1;   SiS_Pr->SiS_LVDS1024x768Data_1  = SiS_LVDS1024x768Data_1;   SiS_Pr->SiS_LVDSCRT1320x240_1     = SiS_LVDSCRT1320x240_1;   SiS_Pr->SiS_LVDSCRT1320x240_2     = SiS_LVDSCRT1320x240_2;   SiS_Pr->SiS_LVDSCRT1320x240_2_H   = SiS_LVDSCRT1320x240_2_H;   SiS_Pr->SiS_LVDSCRT1320x240_3     = SiS_LVDSCRT1320x240_3;   SiS_Pr->SiS_LVDSCRT1320x240_3_H   = SiS_LVDSCRT1320x240_3_H;   SiS_Pr->SiS_LVDSCRT1640x480_1     = SiS_LVDSCRT1640x480_1;   SiS_Pr->SiS_LVDSCRT1640x480_1_H   = SiS_LVDSCRT1640x480_1_H;#if 0   SiS_Pr->SiS_LVDSCRT11024x600_1    = SiS_LVDSCRT11024x600_1;   SiS_Pr->SiS_LVDSCRT11024x600_1_H  = SiS_LVDSCRT11024x600_1_H;   SiS_Pr->SiS_LVDSCRT11024x600_2    = SiS_LVDSCRT11024x600_2;   SiS_Pr->SiS_LVDSCRT11024x600_2_H  = SiS_LVDSCRT11024x600_2_H;#endif   SiS_Pr->SiS_CHTVUNTSCData = SiS_CHTVUNTSCData;   SiS_Pr->SiS_CHTVONTSCData = SiS_CHTVONTSCData;   SiS_Pr->SiS_PanelMinLVDS   = Panel_800x600;    /* lowest value LVDS/LCDA */   SiS_Pr->SiS_PanelMin301    = Panel_1024x768;   /* lowest value 301 */}#endif#ifdef SIS300static voidInitTo300Pointer(struct SiS_Private *SiS_Pr){   InitCommonPointer(SiS_Pr);   SiS_Pr->SiS_VBModeIDTable = SiS300_VBModeIDTable;   SiS_Pr->SiS_EModeIDTable  = SiS300_EModeIDTable;   SiS_Pr->SiS_RefIndex      = SiS300_RefIndex;   SiS_Pr->SiS_CRT1Table     = SiS300_CRT1Table;   if(SiS_Pr->ChipType == SIS_300) {      SiS_Pr->SiS_MCLKData_0 = SiS300_MCLKData_300; /* 300 */   } else {      SiS_Pr->SiS_MCLKData_0 = SiS300_MCLKData_630; /* 630, 730 */   }   SiS_Pr->SiS_VCLKData      = SiS300_VCLKData;   SiS_Pr->SiS_VBVCLKData    = (struct SiS_VBVCLKData *)SiS300_VCLKData;   SiS_Pr->SiS_SR15  = SiS300_SR15;   SiS_Pr->SiS_PanelDelayTbl     = SiS300_PanelDelayTbl;   SiS_Pr->SiS_PanelDelayTblLVDS = SiS300_PanelDelayTbl;   SiS_Pr->SiS_ExtLCD1024x768Data   = SiS300_ExtLCD1024x768Data;   SiS_Pr->SiS_St2LCD1024x768Data   = SiS300_St2LCD1024x768Data;   SiS_Pr->SiS_ExtLCD1280x1024Data  = SiS300_ExtLCD1280x1024Data;   SiS_Pr->SiS_St2LCD1280x1024Data  = SiS300_St2LCD1280x1024Data;   SiS_Pr->SiS_CRT2Part2_1024x768_1  = SiS300_CRT2Part2_1024x768_1;   SiS_Pr->SiS_CRT2Part2_1024x768_2  = SiS300_CRT2Part2_1024x768_2;   SiS_Pr->SiS_CRT2Part2_1024x768_3  = SiS300_CRT2Part2_1024x768_3;   SiS_Pr->SiS_CHTVUPALData  = SiS300_CHTVUPALData;   SiS_Pr->SiS_CHTVOPALData  = SiS300_CHTVOPALData;   SiS_Pr->SiS_CHTVUPALMData = SiS_CHTVUNTSCData;    /* not supported on 300 series */   SiS_Pr->SiS_CHTVOPALMData = SiS_CHTVONTSCData;    /* not supported on 300 series */   SiS_Pr->SiS_CHTVUPALNData = SiS300_CHTVUPALData;  /* not supported on 300 series */   SiS_Pr->SiS_CHTVOPALNData = SiS300_CHTVOPALData;  /* not supported on 300 series */   SiS_Pr->SiS_CHTVSOPALData = SiS300_CHTVSOPALData;   SiS_Pr->SiS_LVDS848x480Data_1   = SiS300_LVDS848x480Data_1;   SiS_Pr->SiS_LVDS848x480Data_2   = SiS300_LVDS848x480Data_2;   SiS_Pr->SiS_LVDSBARCO1024Data_1 = SiS300_LVDSBARCO1024Data_1;   SiS_Pr->SiS_LVDSBARCO1366Data_1 = SiS300_LVDSBARCO1366Data_1;   SiS_Pr->SiS_LVDSBARCO1366Data_2 = SiS300_LVDSBARCO1366Data_2;   SiS_Pr->SiS_PanelType04_1a = SiS300_PanelType04_1a;   SiS_Pr->SiS_PanelType04_2a = SiS300_PanelType04_2a;   SiS_Pr->SiS_PanelType04_1b = SiS300_PanelType04_1b;   SiS_Pr->SiS_PanelType04_2b = SiS300_PanelType04_2b;   SiS_Pr->SiS_CHTVCRT1UNTSC = SiS300_CHTVCRT1UNTSC;   SiS_Pr->SiS_CHTVCRT1ONTSC = SiS300_CHTVCRT1ONTSC;   SiS_Pr->SiS_CHTVCRT1UPAL  = SiS300_CHTVCRT1UPAL;   SiS_Pr->SiS_CHTVCRT1OPAL  = SiS300_CHTVCRT1OPAL;   SiS_Pr->SiS_CHTVCRT1SOPAL = SiS300_CHTVCRT1SOPAL;   SiS_Pr->SiS_CHTVReg_UNTSC = SiS300_CHTVReg_UNTSC;   SiS_Pr->SiS_CHTVReg_ONTSC = SiS300_CHTVReg_ONTSC;   SiS_Pr->SiS_CHTVReg_UPAL  = SiS300_CHTVReg_UPAL;   SiS_Pr->SiS_CHTVReg_OPAL  = SiS300_CHTVReg_OPAL;   SiS_Pr->SiS_CHTVReg_UPALM = SiS300_CHTVReg_UNTSC;  /* not supported on 300 series */   SiS_Pr->SiS_CHTVReg_OPALM = SiS300_CHTVReg_ONTSC;  /* not supported on 300 series */   SiS_Pr->SiS_CHTVReg_UPALN = SiS300_CHTVReg_UPAL;   /* not supported on 300 series */   SiS_Pr->SiS_CHTVReg_OPALN = SiS300_CHTVReg_OPAL;   /* not supported on 300 series */   SiS_Pr->SiS_CHTVReg_SOPAL = SiS300_CHTVReg_SOPAL;   SiS_Pr->SiS_CHTVVCLKUNTSC = SiS300_CHTVVCLKUNTSC;   SiS_Pr->SiS_CHTVVCLKONTSC = SiS300_CHTVVCLKONTSC;   SiS_Pr->SiS_CHTVVCLKUPAL  = SiS300_CHTVVCLKUPAL;   SiS_Pr->SiS_CHTVVCLKOPAL  = SiS300_CHTVVCLKOPAL;   SiS_Pr->SiS_CHTVVCLKUPALM = SiS300_CHTVVCLKUNTSC;  /* not supported on 300 series */   SiS_Pr->SiS_CHTVVCLKOPALM = SiS300_CHTVVCLKONTSC;  /* not supported on 300 series */   SiS_Pr->SiS_CHTVVCLKUPALN = SiS300_CHTVVCLKUPAL;   /* not supported on 300 series */   SiS_Pr->SiS_CHTVVCLKOPALN = SiS300_CHTVVCLKOPAL;   /* not supported on 300 series */   SiS_Pr->SiS_CHTVVCLKSOPAL = SiS300_CHTVVCLKSOPAL;}#endif#ifdef SIS315Hstatic voidInitTo310Pointer(struct SiS_Private *SiS_Pr){   InitCommonPointer(SiS_Pr);   SiS_Pr->SiS_EModeIDTable  = SiS310_EModeIDTable;   SiS_Pr->SiS_RefIndex      = SiS310_RefIndex;   SiS_Pr->SiS_CRT1Table     = SiS310_CRT1Table;   if(SiS_Pr->ChipType >= SIS_340) {      SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_340;  /* 340 + XGI */   } else if(SiS_Pr->ChipType >= SIS_761) {      SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_761;  /* 761 - preliminary */   } else if(SiS_Pr->ChipType >= SIS_760) {      SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_760;  /* 760 */   } else if(SiS_Pr->ChipType >= SIS_661) {      SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_660;  /* 661/741 */   } else if(SiS_Pr->ChipType == SIS_330) {      SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_330;  /* 330 */   } else if(SiS_Pr->ChipType > SIS_315PRO) {      SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_650;  /* 550, 650, 740 */   } else {      SiS_Pr->SiS_MCLKData_0 = SiS310_MCLKData_0_315;  /* 315 */   }   if(SiS_Pr->ChipType >= SIS_340) {      SiS_Pr->SiS_MCLKData_1 = SiS310_MCLKData_1_340;   } else {      SiS_Pr->SiS_MCLKData_1 = SiS310_MCLKData_1;   }   SiS_Pr->SiS_VCLKData      = SiS310_VCLKData;   SiS_Pr->SiS_VBVCLKData    = SiS310_VBVCLKData;   SiS_Pr->SiS_SR15  = SiS310_SR15;   SiS_Pr->SiS_PanelDelayTbl     = SiS310_PanelDelayTbl;   SiS_Pr->SiS_PanelDelayTblLVDS = SiS310_PanelDelayTblLVDS;   SiS_Pr->SiS_St2LCD1024x768Data   = SiS310_St2LCD1024x768Data;   SiS_Pr->SiS_ExtLCD1024x768Data   = SiS310_ExtLCD1024x768Data;   SiS_Pr->SiS_St2LCD1280x1024Data  = SiS310_St2LCD1280x1024Data;   SiS_Pr->SiS_ExtLCD1280x1024Data  = SiS310_ExtLCD1280x1024Data;   SiS_Pr->SiS_CRT2Part2_1024x768_1  = SiS310_CRT2Part2_1024x768_1;   SiS_Pr->SiS_CHTVUPALData  = SiS310_CHTVUPALData;   SiS_Pr->SiS_CHTVOPALData  = SiS310_CHTVOPALData;   SiS_Pr->SiS_CHTVUPALMData = SiS310_CHTVUPALMData;   SiS_Pr->SiS_CHTVOPALMData = SiS310_CHTVOPALMData;   SiS_Pr->SiS_CHTVUPALNData = SiS310_CHTVUPALNData;   SiS_Pr->SiS_CHTVOPALNData = SiS310_CHTVOPALNData;   SiS_Pr->SiS_CHTVSOPALData = SiS310_CHTVSOPALData;   SiS_Pr->SiS_CHTVCRT1UNTSC = SiS310_CHTVCRT1UNTSC;   SiS_Pr->SiS_CHTVCRT1ONTSC = SiS310_CHTVCRT1ONTSC;   SiS_Pr->SiS_CHTVCRT1UPAL  = SiS310_CHTVCRT1UPAL;   SiS_Pr->SiS_CHTVCRT1OPAL  = SiS310_CHTVCRT1OPAL;   SiS_Pr->SiS_CHTVCRT1SOPAL = SiS310_CHTVCRT1OPAL;   SiS_Pr->SiS_CHTVReg_UNTSC = SiS310_CHTVReg_UNTSC;   SiS_Pr->SiS_CHTVReg_ONTSC = SiS310_CHTVReg_ONTSC;   SiS_Pr->SiS_CHTVReg_UPAL  = SiS310_CHTVReg_UPAL;   SiS_Pr->SiS_CHTVReg_OPAL  = SiS310_CHTVReg_OPAL;   SiS_Pr->SiS_CHTVReg_UPALM = SiS310_CHTVReg_UPALM;   SiS_Pr->SiS_CHTVReg_OPALM = SiS310_CHTVReg_OPALM;   SiS_Pr->SiS_CHTVReg_UPALN = SiS310_CHTVReg_UPALN;   SiS_Pr->SiS_CHTVReg_OPALN = SiS310_CHTVReg_OPALN;   SiS_Pr->SiS_CHTVReg_SOPAL = SiS310_CHTVReg_OPAL;   SiS_Pr->SiS_CHTVVCLKUNTSC = SiS310_CHTVVCLKUNTSC;   SiS_Pr->SiS_CHTVVCLKONTSC = SiS310_CHTVVCLKONTSC;   SiS_Pr->SiS_CHTVVCLKUPAL  = SiS310_CHTVVCLKUPAL;   SiS_Pr->SiS_CHTVVCLKOPAL  = SiS310_CHTVVCLKOPAL;   SiS_Pr->SiS_CHTVVCLKUPALM = SiS310_CHTVVCLKUPALM;   SiS_Pr->SiS_CHTVVCLKOPALM = SiS310_CHTVVCLKOPALM;   SiS_Pr->SiS_CHTVVCLKUPALN = SiS310_CHTVVCLKUPALN;   SiS_Pr->SiS_CHTVVCLKOPALN = SiS310_CHTVVCLKOPALN;   SiS_Pr->SiS_CHTVVCLKSOPAL = SiS310_CHTVVCLKOPAL;}#endifBOOLEANSiSInitPtr(struct SiS_Private *SiS_Pr){   if(SiS_Pr->ChipType < SIS_315H) {#ifdef SIS300      InitTo300Pointer(SiS_Pr);#else      return FALSE;#endif   } else {#ifdef SIS315H      InitTo310Pointer(SiS_Pr);#else      return FALSE;#endif   }   return TRUE;}/*********************************************//*            HELPER: Get ModeID             *//*********************************************/#ifndef SIS_XORG_XF86static#endifunsigned shortSiS_GetModeID(int VGAEngine, unsigned int VBFlags, int HDisplay, int VDisplay,		int Depth, BOOLEAN FSTN, int LCDwidth, int LCDheight){   unsigned short ModeIndex = 0;   switch(HDisplay)   {	case 320:		if(VDisplay == 200) ModeIndex = ModeIndex_320x200[Depth];		else if(VDisplay == 240) {			if((VBFlags & CRT2_LCD) && (FSTN))				ModeIndex = ModeIndex_320x240_FSTN[Depth];			else				ModeIndex = ModeIndex_320x240[Depth];		}		break;	case 400:		if((!(VBFlags & CRT1_LCDA)) || ((LCDwidth >= 800) && (LCDwidth >= 600))) {			if(VDisplay == 300) ModeIndex = ModeIndex_400x300[Depth];		}		break;	case 512:		if((!(VBFlags & CRT1_LCDA)) || ((LCDwidth >= 1024) && (LCDwidth >= 768))) {			if(VDisplay == 384) ModeIndex = ModeIndex_512x384[Depth];		}		break;	case 640:		if(VDisplay == 480)      ModeIndex = ModeIndex_640x480[Depth];		else if(VDisplay == 400) ModeIndex = ModeIndex_640x400[Depth];		break;	case 720:		if(VDisplay == 480)      ModeIndex = ModeIndex_720x480[Depth];		else if(VDisplay == 576) ModeIndex = ModeIndex_720x576[Depth];		break;	case 768:		if(VDisplay == 576) ModeIndex = ModeIndex_768x576[Depth];		break;	case 800:		if(VDisplay == 600)      ModeIndex = ModeIndex_800x600[Depth];		else if(VDisplay == 480) ModeIndex = ModeIndex_800x480[Depth];		break;	case 848:		if(VDisplay == 480) ModeIndex = ModeIndex_848x480[Depth];		break;	case 856:		if(VDisplay == 480) ModeIndex = ModeIndex_856x480[Depth];		break;	case 960:		if(VGAEngine == SIS_315_VGA) {			if(VDisplay == 540)      ModeIndex = ModeIndex_960x540[Depth];			else if(VDisplay == 600) ModeIndex = ModeIndex_960x600[Depth];		}		break;	case 1024:		if(VDisplay == 576)      ModeIndex = ModeIndex_1024x576[Depth];		else if(VDisplay == 768) ModeIndex = ModeIndex_1024x768[Depth];		else if(VGAEngine == SIS_300_VGA) {			if(VDisplay == 600) ModeIndex = ModeIndex_1024x600[Depth];		}		break;	case 1152:		if(VDisplay == 864) ModeIndex = ModeIndex_1152x864[Depth];		if(VGAEngine == SIS_300_VGA) {			if(VDisplay == 768) ModeIndex = ModeIndex_1152x768[Depth];		}		break;	case 1280:		switch(VDisplay) {			case 720:				ModeIndex = ModeIndex_1280x720[Depth];				break;			case 768:				if(VGAEngine == SIS_300_VGA) {					ModeIndex = ModeIndex_300_1280x768[Depth];				} else {					ModeIndex = ModeIndex_310_1280x768[Depth];				}				break;			case 800:				if(VGAEngine == SIS_315_VGA) {					ModeIndex = ModeIndex_1280x800[Depth];				}				break;			case 854:				if(VGAEngine == SIS_315_VGA) {					ModeIndex = ModeIndex_1280x854[Depth];				}				break;			case 960:				ModeIndex = ModeIndex_1280x960[Depth];				break;			case 1024:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -