Esempio n. 1
0
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());
}
Esempio n. 2
0
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
}