Added basic functions of emulation menu

This commit is contained in:
Matthew Budd 2020-07-11 11:58:11 -04:00
parent b830e0aae5
commit 74afb50949
6 changed files with 126 additions and 37 deletions

View File

@ -293,13 +293,49 @@ void consoleWin_t::createMainMenu(void)
optMenu->addAction(fullscreen); optMenu->addAction(fullscreen);
//-----------------------------------------------------------------------
// Emulation
emuMenu = menuBar()->addMenu(tr("Emulation"));
// Emulation -> Power
powerAct = new QAction(tr("Power"), this);
//powerAct->setShortcut( QKeySequence(tr("Ctrl+P")));
powerAct->setStatusTip(tr("Power On Console"));
connect(powerAct, SIGNAL(triggered()), this, SLOT(powerConsoleCB(void)) );
emuMenu->addAction(powerAct);
// Emulation -> Reset
resetAct = new QAction(tr("Reset"), this);
//resetAct->setShortcut( QKeySequence(tr("Ctrl+R")));
resetAct->setStatusTip(tr("Reset Console"));
connect(resetAct, SIGNAL(triggered()), this, SLOT(consoleHardReset(void)) );
emuMenu->addAction(resetAct);
// Emulation -> Soft Reset
sresetAct = new QAction(tr("Soft Reset"), this);
//sresetAct->setShortcut( QKeySequence(tr("Ctrl+R")));
sresetAct->setStatusTip(tr("Soft Reset of Console"));
connect(sresetAct, SIGNAL(triggered()), this, SLOT(consoleSoftReset(void)) );
emuMenu->addAction(sresetAct);
// Emulation -> Pause
pauseAct = new QAction(tr("Pause"), this);
pauseAct->setShortcut( QKeySequence(tr("Pause")));
pauseAct->setStatusTip(tr("Pause Console"));
connect(pauseAct, SIGNAL(triggered()), this, SLOT(consolePause(void)) );
emuMenu->addAction(pauseAct);
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
// Help // Help
helpMenu = menuBar()->addMenu(tr("Help")); helpMenu = menuBar()->addMenu(tr("Help"));
aboutAct = new QAction(tr("About"), this); aboutAct = new QAction(tr("About"), this);
aboutAct->setStatusTip(tr("About Qplot")); aboutAct->setStatusTip(tr("About FCEUX"));
connect(aboutAct, SIGNAL(triggered()), this, SLOT(aboutQPlot(void)) ); connect(aboutAct, SIGNAL(triggered()), this, SLOT(aboutFCEUX(void)) );
helpMenu->addAction(aboutAct); helpMenu->addAction(aboutAct);
}; };
@ -761,9 +797,41 @@ void consoleWin_t::toggleFullscreen(void)
} }
} }
void consoleWin_t::aboutQPlot(void) void consoleWin_t::powerConsoleCB(void)
{ {
printf("About QPlot\n"); fceuWrapperLock();
FCEUI_PowerNES();
fceuWrapperUnLock();
return;
}
void consoleWin_t::consoleHardReset(void)
{
fceuWrapperLock();
fceuWrapperHardReset();
fceuWrapperUnLock();
return;
}
void consoleWin_t::consoleSoftReset(void)
{
fceuWrapperLock();
fceuWrapperSoftReset();
fceuWrapperUnLock();
return;
}
void consoleWin_t::consolePause(void)
{
fceuWrapperLock();
fceuWrapperTogglePause();
fceuWrapperUnLock();
return;
}
void consoleWin_t::aboutFCEUX(void)
{
printf("About FCEUX\n");
return; return;
} }

View File

@ -49,6 +49,7 @@ class consoleWin_t : public QMainWindow
protected: protected:
QMenu *fileMenu; QMenu *fileMenu;
QMenu *optMenu; QMenu *optMenu;
QMenu *emuMenu;
QMenu *helpMenu; QMenu *helpMenu;
QAction *openROM; QAction *openROM;
@ -69,6 +70,10 @@ class consoleWin_t : public QMainWindow
QAction *fullscreen; QAction *fullscreen;
QAction *aboutAct; QAction *aboutAct;
QAction *state[10]; QAction *state[10];
QAction *powerAct;
QAction *resetAct;
QAction *sresetAct;
QAction *pauseAct;
QTimer *gameTimer; QTimer *gameTimer;
emulatorThread_t *emulatorThread; emulatorThread_t *emulatorThread;
@ -92,7 +97,7 @@ class consoleWin_t : public QMainWindow
void quickLoad(void); void quickLoad(void);
void quickSave(void); void quickSave(void);
void closeROMCB(void); void closeROMCB(void);
void aboutQPlot(void); void aboutFCEUX(void);
void openGamePadConfWin(void); void openGamePadConfWin(void);
void openGameSndConfWin(void); void openGameSndConfWin(void);
void openGameVideoConfWin(void); void openGameVideoConfWin(void);
@ -112,6 +117,10 @@ class consoleWin_t : public QMainWindow
void changeState9(void); void changeState9(void);
void loadLua(void); void loadLua(void);
void takeScreenShot(void); void takeScreenShot(void);
void powerConsoleCB(void);
void consoleHardReset(void);
void consoleSoftReset(void);
void consolePause(void);
}; };

View File

@ -285,8 +285,6 @@ InitConfig()
//TODO implement this //TODO implement this
config->addOption("periodicsaves", "SDL.PeriodicSaves", 0); config->addOption("periodicsaves", "SDL.PeriodicSaves", 0);
#ifdef _GTK
char* home_dir = getenv("HOME"); char* home_dir = getenv("HOME");
// prefixed with _ because they are internal (not cli options) // prefixed with _ because they are internal (not cli options)
config->addOption("_lastopenfile", "SDL.LastOpenFile", home_dir); config->addOption("_lastopenfile", "SDL.LastOpenFile", home_dir);
@ -294,7 +292,6 @@ InitConfig()
config->addOption("_lastopennsf", "SDL.LastOpenNSF", home_dir); config->addOption("_lastopennsf", "SDL.LastOpenNSF", home_dir);
config->addOption("_lastsavestateas", "SDL.LastSaveStateAs", home_dir); config->addOption("_lastsavestateas", "SDL.LastSaveStateAs", home_dir);
config->addOption("_lastloadlua", "SDL.LastLoadLua", ""); config->addOption("_lastloadlua", "SDL.LastLoadLua", "");
#endif
// fcm -> fm2 conversion // fcm -> fm2 conversion
config->addOption("fcmconvert", "SDL.FCMConvert", ""); config->addOption("fcmconvert", "SDL.FCMConvert", "");

View File

@ -278,6 +278,36 @@ CloseGame(void)
return(1); return(1);
} }
int fceuWrapperSoftReset(void)
{
if ( isloaded )
{
ResetNES();
}
return 0;
}
int fceuWrapperHardReset(void)
{
if ( isloaded )
{
std::string lastFile;
CloseGame();
g_config->getOption ("SDL.LastOpenFile", &lastFile);
LoadGame (lastFile.c_str());
}
return 0;
}
int fceuWrapperTogglePause(void)
{
if ( isloaded )
{
FCEUI_ToggleEmulationPause();
}
return 0;
}
int fceuWrapperInit( int argc, char *argv[] ) int fceuWrapperInit( int argc, char *argv[] )
{ {
int error; int error;
@ -745,7 +775,7 @@ static void DoFun(int frameskip, int periodic_saves)
int32 *sound; int32 *sound;
int32 ssize; int32 ssize;
static int fskipc = 0; static int fskipc = 0;
static int opause = 0; //static int opause = 0;
//TODO peroidic saves, working on it right now //TODO peroidic saves, working on it right now
if (periodic_saves && FCEUD_GetTime() % PERIODIC_SAVE_INTERVAL < 30){ if (periodic_saves && FCEUD_GetTime() % PERIODIC_SAVE_INTERVAL < 30){
@ -762,11 +792,11 @@ static void DoFun(int frameskip, int periodic_saves)
FCEUI_Emulate(&gfx, &sound, &ssize, fskipc); FCEUI_Emulate(&gfx, &sound, &ssize, fskipc);
FCEUD_Update(gfx, sound, ssize); FCEUD_Update(gfx, sound, ssize);
if(opause!=FCEUI_EmulationPaused()) //if(opause!=FCEUI_EmulationPaused())
{ //{
opause=FCEUI_EmulationPaused(); // opause=FCEUI_EmulationPaused();
SilenceSound(opause); // SilenceSound(opause);
} //}
} }
void fceuWrapperLock(void) void fceuWrapperLock(void)
@ -810,7 +840,7 @@ int fceuWrapperUpdate( void )
{ {
fceuWrapperLock(); fceuWrapperLock();
if (GameInfo) if ( GameInfo && !FCEUI_EmulationPaused() )
{ {
DoFun(frameskip, periodic_saves); DoFun(frameskip, periodic_saves);

View File

@ -29,4 +29,7 @@ void fceuWrapperLock(void);
bool fceuWrapperTryLock(int timeout); bool fceuWrapperTryLock(int timeout);
bool fceuWrapperIsLocked(void); bool fceuWrapperIsLocked(void);
void fceuWrapperUnLock(void); void fceuWrapperUnLock(void);
int fceuWrapperSoftReset(void);
int fceuWrapperHardReset(void);
int fceuWrapperTogglePause(void);

View File

@ -248,29 +248,11 @@ void ToggleFS(void)
if(!paused) if(!paused)
FCEUI_ToggleEmulationPause(); FCEUI_ToggleEmulationPause();
int error, fullscreen = s_fullscreen;
// shut down the current video system
KillVideo();
// flip the fullscreen flag // flip the fullscreen flag
g_config->setOption("SDL.Fullscreen", !fullscreen); g_config->setOption("SDL.Fullscreen", !s_fullscreen);
#ifdef _GTK
if(noGui == 0) // TODO Call method to make full Screen
{
if(!fullscreen)
showGui(0);
else
showGui(1);
}
#endif
// try to initialize the video
error = InitVideo(GameInfo);
if(error) {
// if we fail, just continue with what worked before
g_config->setOption("SDL.Fullscreen", fullscreen);
InitVideo(GameInfo);
}
// if we paused to make the switch; unpause // if we paused to make the switch; unpause
if(!paused) if(!paused)
FCEUI_ToggleEmulationPause(); FCEUI_ToggleEmulationPause();