void Window::vOnFileClose() { if (m_eCartridge != CartridgeNone) { soundPause(); vStopEmu(); vSetDefaultTitle(); vDrawDefaultScreen(); vSaveBattery(); vSaveCheats(); m_stEmulator.emuCleanUp(); m_eCartridge = CartridgeNone; emulating = 0; vUpdateGameSlots(); for (std::list<Gtk::Widget *>::iterator it = m_listSensitiveWhenPlaying.begin(); it != m_listSensitiveWhenPlaying.end(); it++) { (*it)->set_sensitive(false); } m_poFilePauseItem->set_active(false); } }
void Window::vOnDirectories() { DirectoriesConfigDialog oDialog(m_poDirConfig); oDialog.set_transient_for(*this); oDialog.run(); // Needed if saves dir changed vUpdateGameSlots(); }
bool Window::bLoadROM(const std::string& _rsFile) { vOnFileClose(); // clear cheat list cheatsDeleteAll(false); gbCheatRemoveAll(); m_sRomFile = _rsFile; const char* csFile = _rsFile.c_str(); IMAGE_TYPE eType = utilFindType(csFile); if (eType == IMAGE_UNKNOWN) { vPopupError(_("Unknown file type %s"), csFile); return false; } bool bLoaded = false; if (eType == IMAGE_GB) { bLoaded = gbLoadRom(csFile); if (bLoaded) { m_eCartridge = CartridgeGB; m_stEmulator = GBSystem; useBios = m_poCoreConfig->oGetKey<bool>("gb_use_bios_file"); gbGetHardwareType(); if (gbHardware & 5) { gbCPUInit(m_poCoreConfig->sGetKey("gb_bios_file").c_str(), useBios); } // If the bios file was rejected by gbCPUInit if (m_poCoreConfig->oGetKey<bool>("gb_use_bios_file") && !useBios) { m_poCoreConfig->vSetKey("gb_bios_file", ""); } gbReset(); } } else if (eType == IMAGE_GBA) { int iSize = CPULoadRom(csFile); bLoaded = (iSize > 0); if (bLoaded) { m_eCartridge = CartridgeGBA; m_stEmulator = GBASystem; vApplyPerGameConfig(); useBios = m_poCoreConfig->oGetKey<bool>("use_bios_file"); CPUInit(m_poCoreConfig->sGetKey("bios_file").c_str(), useBios); CPUReset(); // If the bios file was rejected by CPUInit if (m_poCoreConfig->oGetKey<bool>("use_bios_file") && !useBios) { m_poCoreConfig->vSetKey("bios_file", ""); } } } if (!bLoaded) { return false; } vLoadBattery(); vLoadCheats(); vUpdateScreen(); emulating = 1; m_bWasEmulating = false; vApplyConfigSoundSampleRate(); vUpdateGameSlots(); vHistoryAdd(_rsFile); for (std::list<Gtk::Widget*>::iterator it = m_listSensitiveWhenPlaying.begin(); it != m_listSensitiveWhenPlaying.end(); it++) { (*it)->set_sensitive(); } if (m_poCoreConfig->oGetKey<bool>("load_game_auto")) { vOnLoadGameMostRecent(); } // reserve rewind space for write operation // this is used as work space // actual state blocks are reserved in bOnEmuSaveStateRewind() // when resulted size is known // if (m_state_count_max > 0 && m_psavestate == NULL) { m_psavestate = new char[SZSTATE]; } vStartEmu(); return true; }
void Window::vOnSaveGame(int _iSlot) { int i = _iSlot - 1; m_stEmulator.emuWriteState(m_astGameSlot[i].m_sFile.c_str()); vUpdateGameSlots(); }