diff --git a/simple64-gui/main.cpp b/simple64-gui/main.cpp index ba6a1ef..79f632c 100644 --- a/simple64-gui/main.cpp +++ b/simple64-gui/main.cpp @@ -16,8 +16,10 @@ int main(int argc, char *argv[]) parser.addHelpOption(); QCommandLineOption verboseOption({"v", "verbose"}, "Verbose mode. Prints out more information to log."); QCommandLineOption noGUIOption("nogui", "Disable GUI elements."); + QCommandLineOption testOption("test", "Run debug tests.", "number_of_frames"); parser.addOption(verboseOption); parser.addOption(noGUIOption); + parser.addOption(testOption); parser.addPositionalArgument("ROM", QCoreApplication::translate("main", "ROM to open.")); parser.process(a); const QStringList args = parser.positionalArguments(); @@ -29,6 +31,8 @@ int main(int argc, char *argv[]) w->setVerbose(); if (parser.isSet(noGUIOption)) w->setNoGUI(); + if (parser.isSet(testOption)) + w->setTest(parser.value(testOption).toInt()); if (args.size() > 0) w->openROM(args.at(0), "", 0, 0); else diff --git a/simple64-gui/mainwindow.cpp b/simple64-gui/mainwindow.cpp index b48e847..e70d065 100644 --- a/simple64-gui/mainwindow.cpp +++ b/simple64-gui/mainwindow.cpp @@ -239,6 +239,7 @@ MainWindow::MainWindow(QWidget *parent) : { verbose = 0; nogui = 0; + run_test = 0; ui->setupUi(this); this->setWindowTitle("simple64 build: " + QStringLiteral(GUI_VERSION).mid(0,7)); @@ -485,6 +486,16 @@ int MainWindow::getNoGUI() return nogui; } +void MainWindow::setTest(int value) +{ + run_test = value; +} + +int MainWindow::getTest() +{ + return run_test; +} + int MainWindow::getVerbose() { return verbose; @@ -1104,8 +1115,34 @@ void MainWindow::addFrameCount() ++frame_count; } +void MainWindow::simulateInput() +{ + int keyValue = 225; // Shift/A + if (run_test % 2) + (*CoreDoCommand)(M64CMD_SEND_SDL_KEYDOWN, keyValue, NULL); + else + { + (*CoreDoCommand)(M64CMD_SEND_SDL_KEYUP, keyValue, NULL); + if (keyValue = 225) + keyValue = 40; // Enter/Start + else + keyValue = 225; + } + printf("%u\n", frame_count); + if (run_test == 1) + { + if (frame_count == 0) + abort(); + else + (*CoreDoCommand)(M64CMD_STOP, 0, NULL); + } + --run_test; +} + void MainWindow::updateFrameCount() { + if (run_test) + simulateInput(); QString FPS = QString("%1 FPS").arg(frame_count); FPSLabel->setText(FPS); frame_count = 0; diff --git a/simple64-gui/mainwindow.h b/simple64-gui/mainwindow.h index da76e3e..acda2fc 100644 --- a/simple64-gui/mainwindow.h +++ b/simple64-gui/mainwindow.h @@ -47,6 +47,8 @@ public: int getVerbose(); void setNoGUI(); int getNoGUI(); + void setTest(int value); + int getTest(); void updatePlugins(); void resetCore(); m64p_dynlib_handle getCoreLib(); @@ -138,10 +140,12 @@ private: void loadPlugins(); void closeCoreLib(); void closePlugins(); + void simulateInput(); Ui::MainWindow *ui; QMenu * OpenRecent; int verbose; int nogui; + int run_test; uint32_t frame_count; QMessageBox *download_message = nullptr;