Exemplo n.º 1
0
static void msg_command( struct mg_connection* nc, const char* p, int len )
{
  const char* cmd      = p;
  int         cmd_len =  param_len( p, len );

  if ( cmd_len == -1 )
  {
    perror("cmd_len == -1");
    return;
  }

  p   += (cmd_len+1);
  len -= (cmd_len+1);

  if ( strncmp( cmd, "SAVE", cmd_len ) == 0 )
  {
    msg_save( p, len );
    return;
  }

  if ( strncmp( cmd, "RM", cmd_len ) == 0 )
  {
    msg_rm( p, len );
    return;
  }

  if ( strncmp( cmd, "JOIN", cmd_len )  == 0)
  {
    send_sources(nc);
    return;
  }

  if ( strncmp( cmd, "ARCHIVE", cmd_len )  == 0)
  {
    save_archive();
    return;
  }

  if ( strncmp( cmd, "SAVE-ALL", cmd_len ) == 0 )
  {
    save_all(nc);
    return;
  }

  printf("UNKNOWN %s\n",cmd);
}
Exemplo n.º 2
0
static
void state_unc_close()
{
	if(mFileZipMode==0)
	{
		fclose(mFile);
	}
	else
	{
		if (mFileRWMode == 1)
			save_archive(mFileName,mFileMem,mFileMemSize);

		free(mFileMem);
		mFileMem=NULL;
		mFileMemSize=0;
		mFileMemPos=0;
		mFileName[0]=0;
	}
}
Exemplo n.º 3
0
void savestate(const char *filename)
{
	int i;
	byte *buf;//[4096];
	byte *bufptr;


	//menu_message("Saving");


	int irl = hw.cgb ? 8 : 2;
	int vrl = hw.cgb ? 4 : 2;
	int srl = mbc.ramsize << 1;
	int bufsize = (1 + irl + vrl + srl) * 4096;

	buf=(byte*)malloc(bufsize);
	bufptr = buf;
	un32 (*header)[2] = (un32 (*)[2])buf;
	un32 d = 0;

	ver = 0x105;
	iramblock = 1;
	vramblock = 1+irl;
	sramblock = 1+irl+vrl;
	wavofs = 4096 - 784;
	hiofs = 4096 - 768;
	palofs = 4096 - 512;
	oamofs = 4096 - 256;


	memset(buf, 0, 4096);

	for (i = 0; svars[i].len > 0; i++)
	{


		header[i][0] = *(un32 *)svars[i].key;

		switch (svars[i].len)
		{
		case 1:
			d = *(byte *)svars[i].ptr;
			break;
		case 2:
			d = *(un16 *)svars[i].ptr;
			break;
		case 4:
			d = *(un32 *)svars[i].ptr;

			break;
		}

		header[i][1] = LIL(d);

	}
	header[i][0] = header[i][1] = 0;


	memcpy(buf+hiofs, ram.hi, sizeof ram.hi);
	memcpy(buf+palofs, lcd.pal, sizeof lcd.pal);
	memcpy(buf+oamofs, lcd.oam.mem, sizeof lcd.oam);
	memcpy(buf+wavofs, snd.wave, sizeof snd.wave);

	bufptr += 4096;

	//fseek(f, iramblock<<12, SEEK_SET);
	memcpy(bufptr, ram.ibank, 4096 * irl);
	bufptr += 4096 * irl;

	//fseek(f, vramblock<<12, SEEK_SET);
	memcpy(bufptr, lcd.vbank, 4096 * vrl);
	bufptr += 4096 * vrl;

	//fseek(f, sramblock<<12, SEEK_SET);
	memcpy(bufptr, ram.sbank, 4096 * srl);
	bufptr += 4096 * srl;

	save_archive(filename, "GBCOID", buf, bufsize);

	free(buf);
}