void autoload(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("autostart", true); vs->setValue("autostart/load", true); vs->setValue("autostart/load/slot", param.toInt()); }
void UIYabause::sizeRequested( const QSize& s ) { int heightOffset = toolBar->height()+menubar->height(); int width, height; if (s.isNull()) { return; } else { width=s.width(); height=s.height(); } mouseXRatio = 320.0 / (float)width * 2.0 * (float)mouseSensitivity / 100.0; mouseYRatio = 240.0 / (float)height * 2.0 * (float)mouseSensitivity / 100.0; // Compensate for menubar and toolbar VolatileSettings* vs = QtYabause::volatileSettings(); if (vs->value( "View/Menubar" ).toInt() != BD_ALWAYSHIDE) height += menubar->height(); if (vs->value( "View/Toolbar" ).toInt() != BD_ALWAYSHIDE) height += toolBar->height(); resize( width, height ); }
void UIYabause::adjustHeight(int & height) { // Compensate for menubar and toolbar VolatileSettings* vs = QtYabause::volatileSettings(); if (vs->value("View/Menubar").toInt() != BD_ALWAYSHIDE) height += menubar->height(); if (vs->value("View/Toolbar").toInt() != BD_ALWAYSHIDE) height += toolBar->height(); }
void UIYabause::appendLog( const char* s ) { teLog->moveCursor( QTextCursor::End ); teLog->append( s ); VolatileSettings* vs = QtYabause::volatileSettings(); if (( !mLogDock->isVisible( )) && ( vs->value( "View/LogWindow" ).toInt() == 1 )) { mLogDock->setVisible( true ); } }
void YabauseGL::updateView( const QSize& s ) { VolatileSettings* vs = QtYabause::volatileSettings(); VideoSetSetting(VDP_SETTING_ROTATE_SCREEN, vs->value("Video/RotateScreen", false).toBool()); const QSize size = s.isValid() ? s : this->size(); glViewport( 0, 0, size.width(), size.height() ); if ( VIDCore ) VIDCore->Resize(viewport_origin_x_, viewport_origin_y_, viewport_width_, viewport_height_, 0); }
void UIYabause::resizeIntegerScaling() { if (!VIDCore || VIDCore->id != VIDCORE_SOFT) return; if (isFullScreen() || emulateMouse) return; VolatileSettings* vs = QtYabause::volatileSettings(); if (!vs->value("Video/EnableIntegerPixelScaling").toBool()) return; int multiplier = vs->value("Video/IntegerPixelScalingMultiplier").toInt(); if (multiplier % 2 != 0) return; int vdp2width = 0; int vdp2height = 0; int vdp2interlace = 0; if (!VIDCore->GetNativeResolution) return; VIDCore->GetNativeResolution(&vdp2width, &vdp2height, &vdp2interlace); if (vdp2width == 0 || vdp2height == 0) return; int width = 0; int height = 0; if (vdp2width < 640) width = vdp2width * multiplier; else width = vdp2width * (multiplier / 2); if (!vdp2interlace) height = vdp2height * multiplier; else height = vdp2height * (multiplier / 2); mYabauseGL->resize(width, height); adjustHeight(height); setMinimumSize(width, height); resize(width, height); }
void UIYabause::mouseMoveEvent( QMouseEvent* e ) { int midX = geometry().x()+(width()/2); // widget global x int midY = geometry().y()+menubar->height()+toolBar->height()+(height()/2); // widget global y int x = (e->x()-(width()/2))*mouseXRatio; int y = ((menubar->height()+toolBar->height()+(height()/2))-e->y())*mouseYRatio; int minAdj = mouseSensitivity/100; // If minimum movement is less than x, wait until next pass to apply if (abs(x) < minAdj) x = 0; if (abs(y) < minAdj) y = 0; if (mouseCaptured) PerAxisMove((1 << 30), x, y); VolatileSettings* vs = QtYabause::volatileSettings(); if (!isFullScreen()) { if (emulateMouse && mouseCaptured) { // lock cursor to center QPoint newPos(midX, midY); this->cursor().setPos(newPos); this->setCursor(Qt::BlankCursor); return; } else this->setCursor(Qt::ArrowCursor); } else { if (emulateMouse && mouseCaptured) { this->setCursor(Qt::BlankCursor); return; } else if (vs->value( "View/Menubar" ).toInt() == BD_SHOWONFSHOVER) { if (e->y() < showMenuBarHeight) menubar->show(); else menubar->hide(); } hideMouseTimer->start(3 * 1000); this->setCursor(Qt::ArrowCursor); } }
void binary(const QString& param) { QString filename; uint address = 0x06004000; QStringList parts = param.split(':'); filename = parts[0]; if (parts.size() > 1) address = parts[1].toUInt(NULL, 0); VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("autostart", true); vs->setValue("autostart/binary", true); vs->setValue("autostart/binary/filename", filename); vs->setValue("autostart/binary/address", address); }
void UIYabause::fullscreenRequested( bool f ) { if ( isFullScreen() && !f ) { #ifdef USE_UNIFIED_TITLE_TOOLBAR setUnifiedTitleAndToolBarOnMac( true ); #endif toggleFullscreen(0, 0, false, -1 ); showNormal(); VolatileSettings* vs = QtYabause::volatileSettings(); int menubarHide = vs->value( "View/Menubar" ).toInt(); if ( menubarHide == BD_HIDEFS || menubarHide == BD_SHOWONFSHOVER) menubar->show(); if ( vs->value( "View/Toolbar" ).toInt() == BD_HIDEFS ) toolBar->show(); setCursor(Qt::ArrowCursor); hideMouseTimer->stop(); } else if ( !isFullScreen() && f ) { #ifdef USE_UNIFIED_TITLE_TOOLBAR setUnifiedTitleAndToolBarOnMac( false ); #endif VolatileSettings* vs = QtYabause::volatileSettings(); setMaximumSize( QWIDGETSIZE_MAX, QWIDGETSIZE_MAX ); setMinimumSize( 0,0 ); toggleFullscreen(vs->value("Video/FullscreenWidth").toInt(), vs->value("Video/FullscreenHeight").toInt(), f, vs->value("Video/VideoFormat").toInt()); showFullScreen(); if ( vs->value( "View/Menubar" ).toInt() == BD_HIDEFS ) menubar->hide(); if ( vs->value( "View/Toolbar" ).toInt() == BD_HIDEFS ) toolBar->hide(); hideMouseTimer->start(3 * 1000); } if ( aViewFullscreen->isChecked() != f ) aViewFullscreen->setChecked( f ); aViewFullscreen->setIcon( QIcon( f ? ":/actions/no_fullscreen.png" : ":/actions/fullscreen.png" ) ); }
void UIYabause::mouseMoveEvent( QMouseEvent* e ) { PerAxisMove((1 << 30), e->x()-oldMouseX, oldMouseY-e->y()); oldMouseX = e->x(); oldMouseY = e->y(); VolatileSettings* vs = QtYabause::volatileSettings(); if (isFullScreen()) { if (vs->value( "View/Menubar" ).toInt() == BD_SHOWONFSHOVER) { if (e->y() < showMenuBarHeight) menubar->show(); else menubar->hide(); } hideMouseTimer->start(3 * 1000); this->setCursor(Qt::ArrowCursor); } }
void UIYabause::sizeRequested( const QSize& s ) { int heightOffset = toolBar->height()+menubar->height(); int width, height; if (s.isNull()) { width=640; height=480; } else { width=s.width(); height=s.height(); } // Compensate for menubar and toolbar VolatileSettings* vs = QtYabause::volatileSettings(); if (vs->value( "View/Menubar" ).toInt() != BD_ALWAYSHIDE) height += menubar->height(); if (vs->value( "View/Toolbar" ).toInt() != BD_ALWAYSHIDE) height += toolBar->height(); resize( width, height ); }
bool YabauseThread::pauseEmulation( bool pause, bool reset ) { if ( mPause == pause && !reset ) { return true; } if ( mInit == 0 && reset ) { deInitEmulation(); } if ( mInit < 0 ) { initEmulation(); } if ( mInit < 0 ) { emit error( QtYabause::translate( "Can't initialize Yabause" ), false ); return false; } mPause = pause; if ( mPause ) { ScspMuteAudio(SCSP_MUTE_SYSTEM); killTimer( mTimerId ); mTimerId = -1; } else { ScspUnMuteAudio(SCSP_MUTE_SYSTEM); mTimerId = startTimer( 0 ); } VolatileSettings * vs = QtYabause::volatileSettings(); if (vs->value("autostart").toBool()) { if (vs->value("autostart/binary").toBool()) { MappedMemoryLoadExec( vs->value("autostart/binary/filename").toString().toLocal8Bit().constData(), vs->value("autostart/binary/address").toUInt()); } else if (vs->value("autostart/load").toBool()) { YabLoadStateSlot( QtYabause::volatileSettings()->value( "General/SaveStates", getDataDirPath() ).toString().toLatin1().constData(), vs->value("autostart/load/slot").toInt() ); } vs->setValue("autostart", false); } emit this->pause( mPause ); return true; }
void UIYabause::showEvent( QShowEvent* e ) { QMainWindow::showEvent( e ); if ( !mInit ) { LogStart(); LogChangeOutput( DEBUG_CALLBACK, (char*)qAppendLog ); VolatileSettings* vs = QtYabause::volatileSettings(); if ( vs->value( "View/Menubar" ).toInt() == BD_ALWAYSHIDE ) menubar->hide(); if ( vs->value( "View/Toolbar" ).toInt() == BD_ALWAYSHIDE ) toolBar->hide(); if ( vs->value( "autostart" ).toBool() ) aEmulationRun->trigger(); aEmulationFrameSkipLimiter->setChecked( vs->value( "General/EnableFrameSkipLimiter" ).toBool() ); aViewFPS->setChecked( vs->value( "General/ShowFPS" ).toBool() ); mInit = true; } }
void nobios(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("General/Bios", ""); }
void nobios(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("General/EnableEmulatedBios", true); }
UIYabause::UIYabause( QWidget* parent ) : QMainWindow( parent ) { mInit = false; search.clear(); searchType = 0; // setup dialog setupUi( this ); toolBar->insertAction( aFileSettings, mFileSaveState->menuAction() ); toolBar->insertAction( aFileSettings, mFileLoadState->menuAction() ); toolBar->insertSeparator( aFileSettings ); setAttribute( Qt::WA_DeleteOnClose ); #ifdef USE_UNIFIED_TITLE_TOOLBAR setUnifiedTitleAndToolBarOnMac( true ); #endif fSound->setParent( 0, Qt::Popup ); fVideoDriver->setParent( 0, Qt::Popup ); fSound->installEventFilter( this ); fVideoDriver->installEventFilter( this ); // Get Screen res list getSupportedResolutions(); // fill combo driver cbVideoDriver->blockSignals( true ); for ( int i = 0; VIDCoreList[i] != NULL; i++ ) cbVideoDriver->addItem( VIDCoreList[i]->Name, VIDCoreList[i]->id ); cbVideoDriver->blockSignals( false ); // create glcontext mYabauseGL = new YabauseGL( this ); // and set it as central application widget setCentralWidget( mYabauseGL ); // create log widget teLog = new QTextEdit( this ); teLog->setReadOnly( true ); teLog->setWordWrapMode( QTextOption::NoWrap ); teLog->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); teLog->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); mLogDock = new QDockWidget( this ); mLogDock->setWindowTitle( "Log" ); mLogDock->setWidget( teLog ); addDockWidget( Qt::BottomDockWidgetArea, mLogDock ); mLogDock->setVisible( false ); mCanLog = true; oldMouseX = oldMouseY = 0; mouseCaptured = false; #ifndef SH2_TRACE aTraceLogging->setVisible(false); #endif // create emulator thread mYabauseThread = new YabauseThread( this ); // create hide mouse timer hideMouseTimer = new QTimer(); // create mouse cursor timer mouseCursorTimer = new QTimer(); // connections connect( mYabauseThread, SIGNAL( requestSize( const QSize& ) ), this, SLOT( sizeRequested( const QSize& ) ) ); connect( mYabauseThread, SIGNAL( requestFullscreen( bool ) ), this, SLOT( fullscreenRequested( bool ) ) ); connect( mYabauseThread, SIGNAL( requestVolumeChange( int ) ), this, SLOT( on_sVolume_valueChanged( int ) ) ); connect( aViewLog, SIGNAL( toggled( bool ) ), mLogDock, SLOT( setVisible( bool ) ) ); connect( mLogDock->toggleViewAction(), SIGNAL( toggled( bool ) ), aViewLog, SLOT( setChecked( bool ) ) ); connect( mYabauseThread, SIGNAL( error( const QString&, bool ) ), this, SLOT( errorReceived( const QString&, bool ) ) ); connect( mYabauseThread, SIGNAL( pause( bool ) ), this, SLOT( pause( bool ) ) ); connect( mYabauseThread, SIGNAL( reset() ), this, SLOT( reset() ) ); connect( hideMouseTimer, SIGNAL( timeout() ), this, SLOT( hideMouse() )); connect( mouseCursorTimer, SIGNAL( timeout() ), this, SLOT( cursorRestore() )); connect( mYabauseThread, SIGNAL( toggleEmulateMouse( bool ) ), this, SLOT( toggleEmulateMouse( bool ) ) ); // Load shortcuts VolatileSettings* vs = QtYabause::volatileSettings(); QList<QAction *> actions = findChildren<QAction *>(); foreach ( QAction* action, actions ) { if (action->text().isEmpty()) continue; QString text = vs->value(QString("Shortcuts/") + action->text(), "").toString(); if (text.isEmpty()) continue; action->setShortcut(text); } // retranslate widgets QtYabause::retranslateWidget( this ); QList<QAction *> actionList = menubar->actions(); for(int i = 0;i < actionList.size();i++) { addAction(actionList.at(i)); } restoreGeometry( vs->value("General/Geometry" ).toByteArray() ); mYabauseGL->setMouseTracking(true); setMouseTracking(true); mouseXRatio = mouseYRatio = 1.0; emulateMouse = false; mouseSensitivity = vs->value( "Input/GunMouseSensitivity", 100 ).toInt(); showMenuBarHeight = menubar->height(); translations = QtYabause::getTranslationList(); VIDSoftSetBilinear(QtYabause::settings()->value( "Video/Bilinear", false ).toBool()); }
void autoframeskip(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("General/EnableFrameSkipLimiter", param); }
void autostart(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("autostart", true); }
void fullscreen(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("Video/Fullscreen", true); }
void iso(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue( "General/CdRom", CDCORE_ISO ); vs->setValue( "General/CdRomISO", param ); }
void nosound(const QString& param) { VolatileSettings * vs = QtYabause::volatileSettings(); vs->setValue("Sound/SoundCore", SNDCORE_DUMMY); }