void ConfigDialog::_init() { // Video settings QStringList windowedModesList; int windowedModesCurrent = 0; for (int i = 0; i < numWindowedModes; ++i) { windowedModesList.append(WindowedModes[i].description); if (WindowedModes[i].width == config.video.windowedWidth && WindowedModes[i].height == config.video.windowedHeight) windowedModesCurrent = i; } ui->windowedResolutionComboBox->insertItems(0, windowedModesList); ui->windowedResolutionComboBox->setCurrentIndex(windowedModesCurrent); QStringList fullscreenModesList, fullscreenRatesList; int fullscreenMode, fullscreenRate; fillFullscreenResolutionsList(fullscreenModesList, fullscreenMode, fullscreenRatesList, fullscreenRate); ui->fullScreenResolutionComboBox->insertItems(0, fullscreenModesList); ui->fullScreenResolutionComboBox->setCurrentIndex(fullscreenMode); ui->fullScreenRefreshRateComboBox->insertItems(0, fullscreenRatesList); ui->fullScreenRefreshRateComboBox->setCurrentIndex(fullscreenRate); ui->aliasingSlider->setValue(config.video.multisampling); ui->anisotropicSlider->setValue(config.texture.maxAnisotropy); ui->cacheSizeSpinBox->setValue(config.texture.maxBytes / gc_uMegabyte); switch (config.texture.bilinearMode) { case BILINEAR_3POINT: ui->blnr3PointRadioButton->setChecked(true); break; case BILINEAR_STANDARD: ui->blnrStandardRadioButton->setChecked(true); break; } switch (config.texture.screenShotFormat) { case 0: ui->bmpRadioButton->setChecked(true); break; case 1: ui->jpegRadioButton->setChecked(true); break; } // Emulation settings ui->emulateLodCheckBox->setChecked(config.generalEmulation.enableLOD != 0); ui->emulateNoiseCheckBox->setChecked(config.generalEmulation.enableNoise != 0); ui->emulateFogCheckBox->setChecked(config.generalEmulation.enableFog != 0); ui->enableHWLightingCheckBox->setChecked(config.generalEmulation.enableHWLighting != 0); ui->enableShadersStorageCheckBox->setChecked(config.generalEmulation.enableShadersStorage != 0); ui->customSettingsCheckBox->setChecked(config.generalEmulation.enableCustomSettings != 0); ui->bufferSwapComboBox->setCurrentIndex(config.frameBufferEmulation.bufferSwapMode); ui->frameBufferGroupBox->setChecked(config.frameBufferEmulation.enable != 0); switch (config.frameBufferEmulation.copyToRDRAM) { case Config::ctDisable: ui->copyBufferDisableRadioButton->setChecked(true); break; case Config::ctSync: ui->copyBufferSyncRadioButton->setChecked(true); break; case Config::ctAsync: ui->copyBufferAsyncRadioButton->setChecked(true); break; } ui->RenderFBCheckBox->setChecked(config.frameBufferEmulation.copyFromRDRAM != 0); ui->CopyDepthCheckBox->setChecked(config.frameBufferEmulation.copyDepthToRDRAM != 0); ui->n64DepthCompareCheckBox->setChecked(config.frameBufferEmulation.N64DepthCompare != 0); switch (config.frameBufferEmulation.aspect) { case Config::aStretch: ui->aspectStretchRadioButton->setChecked(true); break; case Config::a43: ui->aspect43RadioButton->setChecked(true); break; case Config::a169: ui->aspect169RadioButton->setChecked(true); break; case Config::aAdjust: ui->aspectAdjustRadioButton->setChecked(true); break; } // Texture filter settings QStringList textureFiltersList; for (int i = 0; i < numFilters; ++i) textureFiltersList.append(cmbTexFilter_choices[i]); ui->filterComboBox->insertItems(0, textureFiltersList); ui->filterComboBox->setCurrentIndex(config.textureFilter.txFilterMode); QStringList textureEnhancementList; for (int i = 0; i < numEnhancements; ++i) textureEnhancementList.append(cmbTexEnhancement_choices[i]); ui->enhancementComboBox->insertItems(0, textureEnhancementList); ui->enhancementComboBox->setCurrentIndex(config.textureFilter.txEnhancementMode); ui->textureFilterCacheSpinBox->setValue(config.textureFilter.txCacheSize / gc_uMegabyte); ui->ignoreBackgroundsCheckBox->setChecked(config.textureFilter.txFilterIgnoreBG != 0); ui->texturePackGroupBox->setChecked(config.textureFilter.txHiresEnable != 0); ui->alphaChannelCheckBox->setChecked(config.textureFilter.txHiresFullAlphaChannel != 0); ui->alternativeCRCCheckBox->setChecked(config.textureFilter.txHresAltCRC != 0); ui->textureDumpCheckBox->setChecked(config.textureFilter.txDump != 0); ui->force16bppCheckBox->setChecked(config.textureFilter.txForce16bpp != 0); ui->compressCacheCheckBox->setChecked(config.textureFilter.txCacheCompression != 0); ui->saveTextureCacheCheckBox->setChecked(config.textureFilter.txSaveCache != 0); ui->txPathLabel->setText(QString::fromWCharArray(config.textureFilter.txPath)); QString fontName(config.font.name.c_str()); m_font = QFont(fontName.left(fontName.indexOf(".ttf")), config.font.size); QString strSize; strSize.setNum(m_font.pointSize()); ui->fontNameLabel->setText(m_font.family() + " - " + strSize); m_color = QColor(config.font.color[0], config.font.color[1], config.font.color[2]); ui->fontColorLabel->setFont(m_font); ui->fontColorLabel->setText(m_color.name()); QPalette palette; palette.setColor(QPalette::Window, Qt::black); palette.setColor(QPalette::WindowText, m_color); ui->fontColorLabel->setAutoFillBackground(true); ui->fontColorLabel->setPalette(palette); // Post filter settings ui->bloomGroupBox->setChecked(config.bloomFilter.enable != 0); switch (config.bloomFilter.blendMode) { case 0: ui->bloomStrongRadioButton->setChecked(true); break; case 1: ui->bloomMildRadioButton->setChecked(true); break; case 2: ui->bloomLightRadioButton->setChecked(true); break; } ui->bloomThresholdSlider->setValue(config.bloomFilter.thresholdLevel); ui->blurAmountSlider->setValue(config.bloomFilter.blurAmount); ui->blurStrengthSlider->setValue(config.bloomFilter.blurStrength); ui->forceGammaCorrectionCheckBox->setChecked(config.gammaCorrection.force != 0); ui->gammaLevelSpinBox->setValue(config.gammaCorrection.level); ui->gammaLevelSpinBox->setEnabled(ui->forceGammaCorrectionCheckBox->isChecked()); }
void ConfigDialog::_init() { // Video settings QStringList windowedModesList; int windowedModesCurrent = -1; for (unsigned int i = 0; i < numWindowedModes; ++i) { windowedModesList.append(WindowedModes[i].description); if (WindowedModes[i].width == config.video.windowedWidth && WindowedModes[i].height == config.video.windowedHeight) windowedModesCurrent = i; } ui->windowedResolutionComboBox->insertItems(0, windowedModesList); if (windowedModesCurrent > -1) ui->windowedResolutionComboBox->setCurrentIndex(windowedModesCurrent); else ui->windowedResolutionComboBox->setCurrentText( QString::number(config.video.windowedWidth) + " x " + QString::number(config.video.windowedHeight) ); // matches w x h where w is 300-7999 and h is 200-3999, spaces around x optional QRegExp windowedRegExp("([3-9][0-9]{2}|[1-7][0-9]{3}) ?x ?([2-9][0-9]{2}|[1-3][0-9]{3})"); QValidator *windowedValidator = new QRegExpValidator(windowedRegExp, this); ui->windowedResolutionComboBox->setValidator(windowedValidator); ui->cropImageComboBox->setCurrentIndex(config.video.cropMode); ui->cropImageWidthSpinBox->setValue(config.video.cropWidth); ui->cropImageHeightSpinBox->setValue(config.video.cropHeight); ui->cropImageCustomFrame->setVisible(config.video.cropMode == Config::cmCustom); QStringList fullscreenModesList, fullscreenRatesList; int fullscreenMode, fullscreenRate; fillFullscreenResolutionsList(fullscreenModesList, fullscreenMode, fullscreenRatesList, fullscreenRate); ui->fullScreenResolutionComboBox->insertItems(0, fullscreenModesList); ui->fullScreenResolutionComboBox->setCurrentIndex(fullscreenMode); ui->fullScreenRefreshRateComboBox->setCurrentIndex(fullscreenRate); ui->aliasingSlider->setValue(powof(config.video.multisampling)); ui->aliasingLabelVal->setText(QString::number(config.video.multisampling)); ui->anisotropicSlider->setValue(config.texture.maxAnisotropy); ui->vSyncCheckBox->setChecked(config.video.verticalSync != 0); switch (config.texture.bilinearMode) { case BILINEAR_3POINT: ui->blnr3PointRadioButton->setChecked(true); break; case BILINEAR_STANDARD: ui->blnrStandardRadioButton->setChecked(true); break; } switch (config.texture.screenShotFormat) { case 0: ui->pngRadioButton->setChecked(true); break; case 1: ui->jpegRadioButton->setChecked(true); break; } // Emulation settings ui->emulateLodCheckBox->setChecked(config.generalEmulation.enableLOD != 0); ui->emulateNoiseCheckBox->setChecked(config.generalEmulation.enableNoise != 0); ui->enableHWLightingCheckBox->setChecked(config.generalEmulation.enableHWLighting != 0); ui->enableShadersStorageCheckBox->setChecked(config.generalEmulation.enableShadersStorage != 0); ui->customSettingsCheckBox->setChecked(config.generalEmulation.enableCustomSettings != 0); switch (config.generalEmulation.correctTexrectCoords) { case Config::tcDisable: ui->fixTexrectDisableRadioButton->setChecked(true); break; case Config::tcSmart: ui->fixTexrectSmartRadioButton->setChecked(true); break; case Config::tcForce: ui->fixTexrectForceRadioButton->setChecked(true); break; } ui->nativeRes2D_checkBox->toggle(); ui->nativeRes2D_checkBox->setChecked(config.generalEmulation.enableNativeResTexrects != 0); ui->gammaCorrectionCheckBox->toggle(); ui->gammaCorrectionCheckBox->setChecked(config.gammaCorrection.force != 0); ui->gammaLevelSpinBox->setValue(config.gammaCorrection.level); ui->frameBufferSwapComboBox->setCurrentIndex(config.frameBufferEmulation.bufferSwapMode); ui->fbInfoEnableCheckBox->toggle(); ui->fbInfoEnableCheckBox->setChecked(config.frameBufferEmulation.fbInfoDisabled == 0); ui->frameBufferCheckBox->toggle(); const bool fbEmulationEnabled = config.frameBufferEmulation.enable != 0; ui->frameBufferCheckBox->setChecked(fbEmulationEnabled); ui->frameBufferInfoFrame->setVisible(!fbEmulationEnabled); ui->frameBufferInfoFrame2->setVisible(!fbEmulationEnabled); ui->copyColorBufferComboBox->setCurrentIndex(config.frameBufferEmulation.copyToRDRAM); ui->copyDepthBufferComboBox->setCurrentIndex(config.frameBufferEmulation.copyDepthToRDRAM); ui->RenderFBCheckBox->setChecked(config.frameBufferEmulation.copyFromRDRAM != 0); ui->n64DepthCompareCheckBox->toggle(); ui->n64DepthCompareCheckBox->setChecked(config.frameBufferEmulation.N64DepthCompare != 0); switch (config.frameBufferEmulation.aspect) { case Config::aStretch: ui->aspectStretchRadioButton->setChecked(true); break; case Config::a43: ui->aspect43RadioButton->setChecked(true); break; case Config::a169: ui->aspect169RadioButton->setChecked(true); break; case Config::aAdjust: ui->aspectAdjustRadioButton->setChecked(true); break; } ui->resolutionFactorSlider->valueChanged(2); ui->factor0xRadioButton->toggle(); ui->factor1xRadioButton->toggle(); ui->factorXxRadioButton->toggle(); switch (config.frameBufferEmulation.nativeResFactor) { case 0: ui->factor0xRadioButton->setChecked(true); break; case 1: ui->factor1xRadioButton->setChecked(true); break; default: ui->factorXxRadioButton->setChecked(true); ui->resolutionFactorSlider->setValue(config.frameBufferEmulation.nativeResFactor); break; } ui->copyAuxBuffersCheckBox->setChecked(config.frameBufferEmulation.copyAuxToRDRAM != 0); ui->readColorChunkCheckBox->setChecked(config.frameBufferEmulation.fbInfoReadColorChunk != 0); ui->readColorChunkCheckBox->setEnabled(fbEmulationEnabled && config.frameBufferEmulation.fbInfoDisabled == 0); ui->readDepthChunkCheckBox->setChecked(config.frameBufferEmulation.fbInfoReadDepthChunk != 0); ui->readDepthChunkCheckBox->setEnabled(fbEmulationEnabled && config.frameBufferEmulation.fbInfoDisabled == 0); // Texture filter settings ui->filterComboBox->setCurrentIndex(config.textureFilter.txFilterMode); ui->enhancementComboBox->setCurrentIndex(config.textureFilter.txEnhancementMode); ui->textureFilterCacheSpinBox->setValue(config.textureFilter.txCacheSize / gc_uMegabyte); ui->deposterizeCheckBox->setChecked(config.textureFilter.txDeposterize != 0); ui->ignoreBackgroundsCheckBox->setChecked(config.textureFilter.txFilterIgnoreBG != 0); ui->texturePackOnCheckBox->toggle(); ui->texturePackOnCheckBox->setChecked(config.textureFilter.txHiresEnable != 0); ui->alphaChannelCheckBox->setChecked(config.textureFilter.txHiresFullAlphaChannel != 0); ui->alternativeCRCCheckBox->setChecked(config.textureFilter.txHresAltCRC != 0); ui->textureDumpCheckBox->setChecked(config.textureFilter.txDump != 0); ui->force16bppCheckBox->setChecked(config.textureFilter.txForce16bpp != 0); ui->compressCacheCheckBox->setChecked(config.textureFilter.txCacheCompression != 0); ui->saveTextureCacheCheckBox->setChecked(config.textureFilter.txSaveCache != 0); ui->txPathLabel->setText(QString::fromWCharArray(config.textureFilter.txPath)); ui->txCachePathLabel->setText(QString::fromWCharArray(config.textureFilter.txCachePath)); ui->txDumpPathLabel->setText(QString::fromWCharArray(config.textureFilter.txDumpPath)); // OSD settings QString fontName(config.font.name.c_str()); ui->fontLineEdit->setText(fontName); m_font = QFont(fontName.left(fontName.indexOf(".ttf"))); m_font.setPixelSize(config.font.size); ui->fontLineEdit->setHidden(true); ui->fontSizeSpinBox->setValue(config.font.size); m_color = QColor(config.font.color[0], config.font.color[1], config.font.color[2]); QPalette palette; palette.setColor(QPalette::WindowText, m_color); palette.setColor(QPalette::Window, Qt::black); ui->fontPreviewLabel->setAutoFillBackground(true); ui->fontPreviewLabel->setPalette(palette); ui->PickFontColorButton->setStyleSheet(QString("color:") + m_color.name()); switch (config.onScreenDisplay.pos) { case Config::posTopLeft: ui->topLeftPushButton->setChecked(true); break; case Config::posTopCenter: ui->topPushButton->setChecked(true); break; case Config::posTopRight: ui->topRightPushButton->setChecked(true); break; case Config::posBottomLeft: ui->bottomLeftPushButton->setChecked(true); break; case Config::posBottomCenter: ui->bottomPushButton->setChecked(true); break; case Config::posBottomRight: ui->bottomRightPushButton->setChecked(true); break; } ui->fpsCheckBox->setChecked(config.onScreenDisplay.fps != 0); ui->visCheckBox->setChecked(config.onScreenDisplay.vis != 0); ui->percentCheckBox->setChecked(config.onScreenDisplay.percent != 0); ui->internalResolutionCheckBox->setChecked(config.onScreenDisplay.internalResolution != 0); ui->renderingResolutionCheckBox->setChecked(config.onScreenDisplay.renderingResolution != 0); // Buttons ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setText(tr("Restore Defaults")); ui->dumpLowCheckBox->setChecked((config.debug.dumpMode & DEBUG_LOW) != 0); ui->dumpNormalCheckBox->setChecked((config.debug.dumpMode & DEBUG_NORMAL) != 0); ui->dumpDetailCheckBox->setChecked((config.debug.dumpMode & DEBUG_DETAIL) != 0); #ifndef DEBUG_DUMP for (int i = 0; i < ui->tabWidget->count(); ++i) { if (tr("Debug") == ui->tabWidget->tabText(i)) { ui->tabWidget->removeTab(i); break; } } #endif }