void Window::vOnMenuExit() { if (emulating && !m_bPaused) { vStartEmu(); soundResume(); } }
bool Window::on_focus_in_event(GdkEventFocus* _pstEvent) { if (emulating && !m_bPaused) { vStartEmu(); soundResume(); } return false; }
void Window::vOnFilePauseToggled(Gtk::CheckMenuItem* _poCMI) { m_bPaused = _poCMI->get_active(); if (emulating) { if (m_bPaused) { vStopEmu(); soundPause(); } else { vStartEmu(); soundResume(); } } }
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; }