コード例 #1
0
ファイル: state.c プロジェクト: RuiVarela/rengine
int FCEUSS_LoadFP(FILE *st)
{
  int x;
  uint8 header[16];
  int stateversion;

  fread(&header,1,16,st);
  if(memcmp(header,"FCS",3))
   return(0);

  if(header[3] == 0xFF)
   stateversion = FCEU_de32lsb(header + 8);
  else
   stateversion=header[3] * 100;

  x=ReadStateChunks(st,*(uint32*)(header+4));
  if(stateversion<9500) X.IRQlow=0;

  if(GameStateRestore) GameStateRestore(stateversion);
  if(x)
  {
   FCEUPPU_LoadState(stateversion);
   FCEUSND_LoadState(stateversion);
  }
  return(x);
}
コード例 #2
0
ファイル: saves.cpp プロジェクト: krysanto/desmume
bool savestate_load(EMUFILE* is)
{
	SAV_silent_fail_flag = false;
	char header[16];
	is->fread(header,16);
	if(is->fail() || memcmp(header,magic,16))
		return false;

	u32 ssversion,len,comprlen;
	if(!read32le(&ssversion,is)) return false;
	if(!read32le(&_DESMUME_version,is)) return false;
	if(!read32le(&len,is)) return false;
	if(!read32le(&comprlen,is)) return false;

	if(ssversion != SAVESTATE_VERSION) return false;

	std::vector<u8> buf(len);

   is->fread((char*)&buf[0],len-32);

	//GO!! READ THE SAVESTATE
	//THERE IS NO GOING BACK NOW
	//reset the emulator first to clean out the host's state

	NDS_Reset();

	//reset some options to their old defaults which werent saved
	nds._DebugConsole = FALSE;

	//GPU_Reset(MainScreen.gpu, 0);
	//GPU_Reset(SubScreen.gpu, 1);
	//gfx3d_reset();
	//gpu3D->NDS_3D_Reset();
	//SPU_Reset();

	EMUFILE_MEMORY mstemp(&buf);
	bool x = ReadStateChunks(&mstemp,(s32)len);

	if(!x && !SAV_silent_fail_flag)
	{
		msgbox->error("Error loading savestate. It failed halfway through;\nSince there is no savestate backup system, your current game session is wrecked");
		return false;
	}

	loadstate();

	if(nds.ConsoleType != CommonSettings.ConsoleType) {
		printf("WARNING: forcing console type to: ConsoleType=%d\n",nds.ConsoleType);
	}

	if((nds._DebugConsole!=0) != CommonSettings.DebugConsole) {
			printf("WARNING: forcing console debug mode to: debugmode=%s\n",nds._DebugConsole?"TRUE":"FALSE");
	}


	return true;
}
コード例 #3
0
int FCEUSS_LoadFP(FILE *st, int make_backup)
{
	int x;
	if(st!=NULL)
	{
	 uint8 header[16];

         fread(&header,1,16,st);
         if(memcmp(header,"FCS",3))
         {
          fseek(st,0,SEEK_SET);
          if(!LoadStateOld(st))
           goto lerror;
          goto okload;
         }
         stateversion=header[3];
	 if(stateversion<53)
	 FixOldSaveStateSFreq();
	 x=ReadStateChunks(st);
	 if(GameStateRestore) GameStateRestore(header[3]);
	 if(x)
	 {
	  okload:
          TempAddr=TempAddrT;
          RefreshAddr=RefreshAddrT;

	  SaveStateStatus[CurrentState]=1;
	  FCEU_DispMessage("State %d loaded.",CurrentState);
	  SaveStateStatus[CurrentState]=1;
	 }
	 else
	 {
	  SaveStateStatus[CurrentState]=1;
	  FCEU_DispMessage("Error(s) reading state %d!",CurrentState);
	 }
	}
	else
	{
	 lerror:
	 FCEU_DispMessage("State %d load error.",CurrentState);
	 SaveStateStatus[CurrentState]=0;
	 return 0;
	}
	return 1;
}