예제 #1
0
MainWindow::MainWindow(QWidget *parent)
    :QMainWindow(parent)
    ,_recentFiles()
    ,_ui(new Ui::MainWindow())
    ,_console(0)
    ,_emulator(new Hackathon::Emulator())
    ,_program(0)
{
    _ui->setupUi(this);

    setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
    QWidget* widget = _ui->containerWidget;
    QHBoxLayout* layout = new QHBoxLayout();
    widget->setLayout(layout);

    _console = new Hackathon::FastConsole(40, 25);
    layout->addWidget(_console);

    Hackathon::KeyboardWatcher* watcher = new Hackathon::KeyboardWatcher();
    watcher->setParent(this);
    _console->installEventFilter(watcher);
    connect(&_emulator->Memory(), SIGNAL(signalSetClearColor(QColor)),                  _console, SLOT(slotSetClearColor(QColor)), Qt::QueuedConnection);
    connect(&_emulator->Memory(), SIGNAL(signalSetChar(int,int,char,QColor,QColor)),    _console, SLOT(SetChar(int,int,char,QColor,QColor)), Qt::QueuedConnection);
    connect(this, SIGNAL(signalSetMemory(ushort,quint8)),                   &_emulator->Memory(), SLOT(slotSetMemory(ushort,quint8)), Qt::QueuedConnection);
    connect(watcher, SIGNAL(signalKeyPressed(int)),     _emulator, SLOT(KeyPressed(int)), Qt::QueuedConnection);
    connect(this, SIGNAL(RunEmulator()),                _emulator, SLOT(Run()), Qt::QueuedConnection);

    LoadRecentFiles();
}
예제 #2
0
파일: main.cpp 프로젝트: Nebuleon/fba-sdl
int main(int argc, char **argv )
{
	char path[MAX_PATH];

	BurnLibInit();		// init Burn core
	BurnPathsInit();	// init paths or create them if needed
/*
	if (argc < 2) {
		int c;
		printf ("Usage: %s <path to rom><shortname>.zip\n"
			"   ie: %s ./uopoko.zip\n"
			" Note: Path and .zip extension are mandatory.\n\n", argv[0], argv[0]);
		printf ("Supported (but not necessarily working) roms:\n\n");

		for(nBurnDrvSelect[0] = 0; nBurnDrvSelect[0] < nBurnDrvCount; nBurnDrvSelect[0]++) {
			nBurnDrvActive = nBurnDrvSelect[0];
			printf("%-20s ", BurnDrvGetTextA(DRV_NAME));
			c++;
			if(c == 3) {
				c = 0;
				printf("\n");
			}
		}
		printf ("\n\n");
		CreateCapexLists(); // generate rominfo.fba and zipname.fba
		return 0;
	}
*/
	ConfigGameDefault();

	// alter cfg if any param is given
	if (argc >= 2)
		parse_cmd(argc, argv, path);

	ConfigAppLoad();

	if((SDL_Init(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE)) < 0) {
		printf("Sdl failed to init\n");
		exit(0);
	}

	if (argc < 2)
		GuiRun();
	else {
		int drv;

		if((drv = FindDrvByFileName(path)) >= 0)
			RunEmulator(drv);
	}

	BurnLibExit();

	if (argc < 2)
		ConfigAppSave();
	SDL_Quit();

	return 0;
}
예제 #3
0
void DisplayMenu()
{
  int i;
  pl_menu_item *item;

  /* Menu loop */
  do
  {
    ResumeEmulation = 0;

    /* Set normal clock frequency */
    pl_psp_set_clock_freq(222);
    /* Set buttons to autorepeat */
    pspCtrlSetPollingMode(PSP_CTRL_AUTOREPEAT);

    do
    {
      /* Display appropriate tab */
      switch (TabIndex)
      {
      case TAB_STATE:
        DisplayStateTab();
        break;
      case TAB_CONTROL:
        /* Load current button mappings */
        for (item = ControlUiMenu.Menu.items, i = 0; item; item = item->next, i++)
          pl_menu_select_option_by_value(item, (void*)ActiveConfig.ButtonMap[i]);

        ControlsModified = 0;
        pspUiOpenMenu(&ControlUiMenu, NULL);

        if (ControlsModified)
          SaveButtonConfig();

        break;
      case TAB_QUICKLOAD:
        pspUiOpenBrowser(&QuickloadBrowser,
                        (GAME_LOADED) ? CURRENT_GAME : GamePath);
        break;
      case TAB_SYSTEM:
        item = pl_menu_find_item_by_id(&SystemUiMenu.Menu, SYSTEM_VERT_STRIP);
        pl_menu_select_option_by_value(item, (void*)Options.VertStrip);
        pspUiOpenMenu(&SystemUiMenu, NULL);
        break;
      case TAB_OPTION:
        /* Init menu options */
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_DISPLAY_MODE);
        pl_menu_select_option_by_value(item, (void*)Options.DisplayMode);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_SYNC_FREQ);
        pl_menu_select_option_by_value(item, (void*)Options.UpdateFreq);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_FRAMESKIP);
        pl_menu_select_option_by_value(item, (void*)(int)Options.Frameskip);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_VSYNC);
        pl_menu_select_option_by_value(item, (void*)Options.VSync);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_CLOCK_FREQ);
        pl_menu_select_option_by_value(item, (void*)Options.ClockFreq);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_SHOW_FPS);
        pl_menu_select_option_by_value(item, (void*)Options.ShowFps);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_CONTROL_MODE);
        pl_menu_select_option_by_value(item, (void*)Options.ControlMode);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_ANIMATE);
        pl_menu_select_option_by_value(item, (void*)UiMetric.Animate);
        item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_AUTOFIRE);
        pl_menu_select_option_by_value(item, (void*)Options.AutoFire);

        if ((item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_REWIND_SAVE_RATE)))
          pl_menu_select_option_by_value(item, (void*)Options.RewindSaveRate);
        if ((item = pl_menu_find_item_by_id(&OptionUiMenu.Menu, OPTION_REWIND_REPLAY_DELAY)))
          pl_menu_select_option_by_value(item, (void*)Options.RewindReplayDelay);

        pspUiOpenMenu(&OptionUiMenu, NULL);
        break;
      case TAB_ABOUT:
        pspUiSplashScreen(&SplashScreen);
        break;
      }
    } while (!ExitPSP && !ResumeEmulation);

    if (!ExitPSP)
    {
      /* Set clock frequency during emulation */
      pl_psp_set_clock_freq(Options.ClockFreq);
      /* Set buttons to normal mode */
      pspCtrlSetPollingMode(PSP_CTRL_NORMAL);

      /* Resume emulation */
      if (ResumeEmulation)
      {
        if (UiMetric.Animate) pspUiFadeout();
        RunEmulator();
        if (UiMetric.Animate) pspUiFadeout();
      }
    }
  } while (!ExitPSP);
}