Пример #1
0
void Func_SaveGame()
{
  if(!flashramWritten && !sramWritten && !eepromWritten && !mempakWritten) {
    menu::MessageBox::getInstance().setMessage("Nothing to save");
    return;
  }
	switch (nativeSaveDevice)
  {
  	case NATIVESAVEDEVICE_SD:
  	case NATIVESAVEDEVICE_USB:
  		// Adjust saveFile pointers
  		saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_SD) ? &saveDir_libfat_Default:&saveDir_libfat_USB;
  		saveFile_readFile  = fileBrowser_libfat_readFile;
  		saveFile_writeFile = fileBrowser_libfat_writeFile;
  		saveFile_init      = fileBrowser_libfat_init;
  		saveFile_deinit    = fileBrowser_libfat_deinit;
  		break;
  	case NATIVESAVEDEVICE_CARDA:
  	case NATIVESAVEDEVICE_CARDB:
  		// Adjust saveFile pointers
  		saveFile_dir       = (nativeSaveDevice==NATIVESAVEDEVICE_CARDA) ? &saveDir_CARD_SlotA:&saveDir_CARD_SlotB;
  		saveFile_readFile  = fileBrowser_CARD_readFile;
  		saveFile_writeFile = fileBrowser_CARD_writeFile;
  		saveFile_init      = fileBrowser_CARD_init;
  		saveFile_deinit    = fileBrowser_CARD_deinit;
  		break;
  }

	// Try saving everything
	int amountSaves = flashramWritten + sramWritten + eepromWritten + mempakWritten;
	int result = 0;
	saveFile_init(saveFile_dir);
	result += saveEeprom(saveFile_dir);
	result += saveSram(saveFile_dir);
	result += saveMempak(saveFile_dir);
	result += saveFlashram(saveFile_dir);
	saveFile_deinit(saveFile_dir);

	if (result==amountSaves) {	
		switch (nativeSaveDevice)
		{
			case NATIVESAVEDEVICE_SD:
				menu::MessageBox::getInstance().setMessage("Saved game to SD card");
				break;
			case NATIVESAVEDEVICE_USB:
				menu::MessageBox::getInstance().setMessage("Saved game to USB device");
				break;
			case NATIVESAVEDEVICE_CARDA:
				menu::MessageBox::getInstance().setMessage("Saved game to memcard in Slot A");
				break;
			case NATIVESAVEDEVICE_CARDB:
				menu::MessageBox::getInstance().setMessage("Saved game to memcard in Slot B");
				break;
		}
		sramWritten = eepromWritten = mempakWritten = flashramWritten = false;
	}
	else		menu::MessageBox::getInstance().setMessage("Failed to Save");
}
Пример #2
0
	// NOTE: I assume an even item # = Slot A, OW = B
	static char* saveGameSD_func(int item_num){
		// Adjust saveFile pointers
		saveFile_dir = &saveDir_libfat_Default;
		saveFile_readFile  = fileBrowser_libfat_readFile;
		saveFile_writeFile = fileBrowser_libfat_writeFile;
		saveFile_init      = fileBrowser_libfat_init;
		saveFile_deinit    = fileBrowser_libfat_deinit;
		
		// Try loading everything
		int result = 0;
		saveFile_init(saveFile_dir);
		result += saveEeprom(saveFile_dir);
		result += saveSram(saveFile_dir);
		result += saveMempak(saveFile_dir);
		result += saveFlashram(saveFile_dir);
		
		return result ? "Saved game to SD card" : "Nothing to save";
	}
Пример #3
0
	static char* saveGameWiiFS_func(){
		// Adjust saveFile pointers
		saveFile_dir       = &saveDir_WiiFS;
		saveFile_readFile  = fileBrowser_WiiFS_readFile;
		saveFile_writeFile = fileBrowser_WiiFS_writeFile;
		saveFile_init      = fileBrowser_WiiFS_init;
		saveFile_deinit    = fileBrowser_WiiFS_deinit;
		
		// Try loading everything
		int result = 0;
		saveFile_init(saveFile_dir);
		result += saveEeprom(saveFile_dir);
		result += saveSram(saveFile_dir);
		result += saveMempak(saveFile_dir);
		result += saveFlashram(saveFile_dir);
		saveFile_deinit(saveFile_dir);
		
		return result ? "Saved game to filesystem" : "Nothing to save";
	}
Пример #4
0
	static char* saveGameCARD_func(int item_num){
		// Adjust saveFile pointers
		saveFile_dir = (item_num%2) ? &saveDir_CARD_SlotB : &saveDir_CARD_SlotA;
		saveFile_readFile  = fileBrowser_CARD_readFile;
		saveFile_writeFile = fileBrowser_CARD_writeFile;
		saveFile_init      = fileBrowser_CARD_init;
		saveFile_deinit    = fileBrowser_CARD_deinit;
		
		// Try loading everything
		int result = 0;
		saveFile_init(saveFile_dir);
		result += saveEeprom(saveFile_dir);
		result += saveSram(saveFile_dir);
		result += saveMempak(saveFile_dir);
		result += saveFlashram(saveFile_dir);
		saveFile_deinit(saveFile_dir);
		
		return result ? "Saved game to memcard" : "Nothing to save";
	}
Пример #5
0
void saveEepromIfNeeded(const char* file)
{
    if (eepromAccess.changed()) {
        saveEeprom(file);
    }
}
Пример #6
0
void Func_PlayGame()
{
	if(!hasLoadedROM)
	{
		menu::MessageBox::getInstance().setMessage("Please load a ROM first");
		return;
	}
	
	//Wait until 'A' button released before play/resume game
	menu::Cursor::getInstance().setFreezeAction(true);
	menu::Focus::getInstance().setFreezeAction(true);
	int buttonHeld = 1;
	while(buttonHeld)
	{
		buttonHeld = 0;
		menu::Gui::getInstance().draw();
		for (int i=0; i<4; i++)
		{
			if(PAD_ButtonsHeld(i) & PAD_BUTTON_A) buttonHeld++;
#ifdef HW_RVL
			WPADData* wiiPad = WPAD_Data(i);
			if(wiiPad->err == WPAD_ERR_NONE && wiiPad->btns_h & (WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A)) buttonHeld++;
#endif
		}
	}
	menu::Cursor::getInstance().setFreezeAction(false);
	menu::Focus::getInstance().setFreezeAction(false);

	menu::Gui::getInstance().gfx->clearEFB((GXColor){0, 0, 0, 0xFF}, 0x000000);
	pause_netinit_thread();
	pauseRemovalThread();
	resumeAudio();
	resumeInput();
	menuActive = 0;
#ifdef DEBUGON
	_break();
#endif
	new_frame();
	new_vi();
	go();
#ifdef DEBUGON
	_break();
#endif
	menuActive = 1;
	pauseInput();
	pauseAudio();

  if(autoSave==AUTOSAVE_ENABLE) {
    if(flashramWritten || sramWritten || eepromWritten || mempakWritten) {  //something needs saving
      switch (nativeSaveDevice)
    	{
    		case NATIVESAVEDEVICE_SD:
    		case NATIVESAVEDEVICE_USB:
    			// Adjust saveFile pointers
    			saveFile_dir = (nativeSaveDevice==NATIVESAVEDEVICE_SD) ? &saveDir_libfat_Default:&saveDir_libfat_USB;
    			saveFile_readFile  = fileBrowser_libfat_readFile;
    			saveFile_writeFile = fileBrowser_libfat_writeFile;
    			saveFile_init      = fileBrowser_libfat_init;
    			saveFile_deinit    = fileBrowser_libfat_deinit;
    			break;
    		case NATIVESAVEDEVICE_CARDA:
    		case NATIVESAVEDEVICE_CARDB:
    			// Adjust saveFile pointers
    			saveFile_dir       = (nativeSaveDevice==NATIVESAVEDEVICE_CARDA) ? &saveDir_CARD_SlotA:&saveDir_CARD_SlotB;
    			saveFile_readFile  = fileBrowser_CARD_readFile;
    			saveFile_writeFile = fileBrowser_CARD_writeFile;
    			saveFile_init      = fileBrowser_CARD_init;
    			saveFile_deinit    = fileBrowser_CARD_deinit;
    			break;
    	}
    	// Try saving everything
    	int amountSaves = flashramWritten + sramWritten + eepromWritten + mempakWritten;
    	int result = 0;
    	saveFile_init(saveFile_dir);
    	result += saveEeprom(saveFile_dir);
    	result += saveSram(saveFile_dir);
    	result += saveMempak(saveFile_dir);
    	result += saveFlashram(saveFile_dir);
    	saveFile_deinit(saveFile_dir);
    	if (result==amountSaves) {  //saved all of them ok	
    		switch (nativeSaveDevice)
    		{
    			case NATIVESAVEDEVICE_SD:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to SD card");
    				break;
    			case NATIVESAVEDEVICE_USB:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to USB device");
    				break;
    			case NATIVESAVEDEVICE_CARDA:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to memcard in Slot A");
    				break;
    			case NATIVESAVEDEVICE_CARDB:
    				menu::MessageBox::getInstance().fadeMessage("Automatically saved to memcard in Slot B");
    				break;
    		}
    		flashramWritten = sramWritten = eepromWritten = mempakWritten = 0;  //nothing new written since save
  		}
  	  else		
  	    menu::MessageBox::getInstance().setMessage("Failed to save game"); //one or more failed to save
      
    }
  }

	continueRemovalThread();
	resume_netinit_thread();
	FRAME_BUTTONS[5].buttonString = FRAME_STRINGS[6];
	menu::Cursor::getInstance().clearCursorFocus();
}