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

📄 vgb.c

📁 知名gba模拟器vgba代码
💻 C
📖 第 1 页 / 共 2 页
字号:
                  DefineColorScheme (atoi(argv[N+1]),
                                     argv[N+2],
                                     argv[N+3],
                                     argv[N+4],
                                     argv[N+5]);
                  N+=5;
                 }
                 else
                  misparm=1;
                 break;
        case 26:  N++;
                 if(N<argc) ColorNames[4]=argv[N];
                 else misparm=1;
                 break;
        case 27: N++;
                 if(N<argc) ColorNames[5]=argv[N];
                 else misparm=1;
                 break;
        case 28: N++;
                 if(N<argc) ColorNames[6]=argv[N];
                 else misparm=1;
                 break;
        case 29: N++;
                 if(N<argc) ColorNames[7]=argv[N];
                 else misparm=1;
                 break;
        case 30: N++;
                 if(N<argc)
                  SelectSpriteColorScheme (atoi(argv[N]));
                 else
                  misparm=1;
                 break;
        case 31: N++;
                 if(N<argc)
                  brightness=spritebrightness=atoi(argv[N]);
                 else
                  misparm=1;
                 break;
        case 32: N++;
                 if(N<argc)
                  spritebrightness=atoi(argv[N]);
                 else
                  misparm=1;
                 break;
        case 33: N++;
                 if(N<argc)
                  windowbrightness=atoi(argv[N]);
                 else
                  misparm=1;
                 break;
        case 34: N++;
                 if(N<argc)
                  SelectWindowColorScheme (atoi(argv[N]));
                 else
                  misparm=1;
                 break;
        case 35: N++;
                 if(N<argc) ColorNames[8]=argv[N];
                 else misparm=1;
                 break;
        case 36: N++;
                 if(N<argc) ColorNames[9]=argv[N];
                 else misparm=1;
                 break;
        case 37: N++;
                 if(N<argc) ColorNames[10]=argv[N];
                 else misparm=1;
                 break;
        case 38: N++;
                 if(N<argc) ColorNames[11]=argv[N];
                 else misparm=1;
                 break;
        case 39: N++;
                 if(N<argc) stereomode=atoi(argv[N]);
                 else misparm=1;
                 break;
        case 40: N++;
                 if(N<argc)
                  SelectBackgroundColorScheme (atoi(argv[N]));
                 else
                  misparm=1;
                 break;
        case 41: N++;
                 if(N<argc) ColorNames[0]=argv[N];
                 else misparm=1;
                 break;
        case 42: N++;
                 if(N<argc) ColorNames[1]=argv[N];
                 else misparm=1;
                 break;
        case 43: N++;
                 if(N<argc) ColorNames[2]=argv[N];
                 else misparm=1;
                 break;
        case 44: N++;
                 if(N<argc) ColorNames[3]=argv[N];
                 else misparm=1;
                 break;
        case 45: N++;
                 if(N<argc) AutoA=atoi(argv[N]);
                 else misparm=1;
                 break;
        case 46: N++;
                 if(N<argc) AutoB=atoi(argv[N]);
                 else misparm=1;
                 break;
        case 47: N++;
                 if(N<argc) SndName=argv[N];
                 else misparm=1;
                 break;
        case 48: N++;
                 if(N<argc) szKeys=argv[N];
                 else misparm=1;
                 break;
        case 49: N++;
                 if(N<argc)
                  backgroundbrightness=atoi(argv[N]);
                 else
                  misparm=1;
                 break;
#endif
        default: printf("Wrong option '%s'\n",argv[N]);
                 return 0;
      }
    }
    if (misparm)
    {
     printf ("%s: missing parameter\n",argv[N-1]);
     return 0;
    }
  }
  return 1;
}

static int GetCartName (int argc,char *argv[])
{
 int N,I,J;
 for(N=1,I=0;N<argc;N++)
 {
  if(*argv[N]!='-')
   switch(I++)
   {
    case 0:  CartName=argv[N];
             break;
    default: return 0;
   }
  else
  {    
   for(J=0;Options[J];J++)
    if(!strcmp(argv[N]+1,Options[J])) break;
   if (!Options[J])
    for(J=0;AbvOptions[J];J++)
     if(!strcmp(argv[N]+1,AbvOptions[J])) break;
   switch(J)
   {
    case 3:  return 0;          /* -help */
    case 0: case 1: case 2: case 13:
    case 9: case 10: case 11: case 12:
    case 18: case 19: case 20: case 21: case 22: case 23: case 24:
    case 26: case 27: case 28: case 29: case 30: case 31: case 32:
    case 33: case 34: case 35: case 36: case 37: case 38: case 39:
    case 40: case 41: case 42: case 43: case 44: case 45: case 46:
    case 47: case 48: case 49:
#ifdef DEBUG
    case 6:
#endif
             N++;
             if (N>=argc)
              return 0;
     break;
    case 25:
             N+=5;
             if (N>=argc)
              return 0;
    case 14: case 15: case 16: case 17:
             break;
    default: return 0;
   }
  }
 }
 return 1;
}

static void LoadConfigFile (char *szFileName,unsigned char *ptr)
{
 FILE *infile;
 infile=fopen (szFileName,"rb");
 if (infile==NULL)
  return;
 fread (ptr,1,MAX_CONFIG_FILE_SIZE,infile);
 fclose (infile);
 while (*ptr)
 {
  while (*ptr && *ptr<=' ')
   ++ptr;
  if (*ptr)
  {
   _argv[_argc++]=ptr;
   while (*ptr && *ptr>' ')
    ++ptr;
   if (*ptr)
    *ptr++='\0';
  }
 }
}

static void FixFileNames (void)
{
 char *p,*q;
 _fixpath (CartName,_CartName);
 strlwr (_CartName);
 CartName=_CartName;
 strcpy (CartNameNoExt,CartName);
 p=CartNameNoExt;
 q=strchr(CartNameNoExt,'/');
 while (q)                      /* get last '/' */
 {
  p=++q;
  q=strchr(q,'/');
 };
 q=NULL;
 while ((p=strchr(p,'.'))!=NULL) /* get last '.' */
 {
  q=p;
  ++p;
 }
 if (q)                         /* remove extension */
  *q='\0';
 else
  strcat (CartName,_DefExt);
}

static void GetPath (char *szFile,char *szPath)
{
 char *p,*q;
 strcpy (szPath,szFile);
 p=szPath;
 q=strchr(p,'/');
 while (q)                      /* get last '/' */
 {
  p=++q;
  q=strchr(q,'/');
 };
 *p='\0';                       /* remove filename */
}

int main(int argc,char *argv[])
{
 TrapBadOps=0;LineDelay=1;CheckCRC=1; 
 VPeriod=69905;UPeriod=0;
 Verbose=1;

 memset (colorschemes,0,sizeof(colorschemes));
 memcpy (colorschemes,defcolorschemes,sizeof(defcolorschemes));
 SelectColorScheme (0);

 memset (MainConfigFile,0,sizeof(MainConfigFile));
 memset (SubConfigFile,0,sizeof(SubConfigFile));
 strlwr (argv[0]);
 GetPath (argv[0],ProgramPath);
 _argc=1;
 _argv[0]=argv[0];
/* Load Config Files */
 strcpy (szTempFileName,ProgramPath);
 strcat (szTempFileName,"vgb-dos.cfg");
 strcpy (szGifFile,ProgramPath);
 strcat (szGifFile,"vgb-dos.gif");
 LoadConfigFile (szTempFileName,MainConfigFile);
 if (!ParseOptions(_argc,_argv))
  return 1;
 GetCartName (argc,argv);
 FixFileNames ();
 strcpy (_SaveName,CartNameNoExt);
 strcat (_SaveName,".sav");
 SaveName=_SaveName;
 strcpy (szTempFileName,CartNameNoExt);
 strcat (szTempFileName,".cfg");
 _argc=1;
 LoadConfigFile (szTempFileName,SubConfigFile);
 if (!ParseOptions(_argc,_argv))
  return 1;
 if (!ParseOptions(argc,argv))
  return 1;

 IntSync=1;
 if (!IFreq)
 {
  IFreq=60;
  IntSync=0;
  if (!UPeriod) UPeriod=2;
 }
 if (IFreq<5) IFreq=5;
 if (IFreq>500) IFreq=500;

 StartGB(CartName);
 TrashGB();
 return(0);
}

⌨️ 快捷键说明

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