From 39a50e46f49da9803c323dfb147628b451f46a85 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Thu, 17 Jun 2021 20:21:42 -0400 Subject: [PATCH] Changed PAL palette emulation sensitivity logic for Qt palette config window. Now can only be used if PAL filter is active. --- src/drivers/Qt/PaletteConf.cpp | 46 ++++++++++++++++++++++++++++------ src/drivers/Qt/PaletteConf.h | 4 +++ 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/drivers/Qt/PaletteConf.cpp b/src/drivers/Qt/PaletteConf.cpp index 7342008c..34621171 100644 --- a/src/drivers/Qt/PaletteConf.cpp +++ b/src/drivers/Qt/PaletteConf.cpp @@ -27,6 +27,7 @@ #include "Qt/main.h" #include "Qt/input.h" #include "Qt/config.h" +#include "Qt/nes_shm.h" #include "Qt/keyscan.h" #include "Qt/fceuWrapper.h" #include "Qt/ConsoleUtilities.h" @@ -66,7 +67,7 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent) style = this->style(); - resize(512, 650); + resize(512, 600); // sync with config g_config->getOption("SDL.Hue", &hue); @@ -79,11 +80,14 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent) frame = new QGroupBox(tr("Custom Palette:")); vbox = new QVBoxLayout(); hbox1 = new QHBoxLayout(); + hbox2 = new QHBoxLayout(); useCustom = new QCheckBox(tr("Use Custom Palette")); GrayScale = new QCheckBox(tr("Force Grayscale")); deemphSwap = new QCheckBox(tr("De-emphasis Bit Swap")); + hbox1->addWidget(useCustom, 50); + useCustom->setChecked(FCEUI_GetUserPaletteAvail()); GrayScale->setChecked(force_grayscale); deemphSwap->setChecked(paldeemphswap); @@ -92,9 +96,10 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent) connect(GrayScale, SIGNAL(stateChanged(int)), this, SLOT(force_GrayScale_Changed(int))); connect(deemphSwap, SIGNAL(stateChanged(int)), this, SLOT(deemphswap_Changed(int))); - button = new QPushButton(tr("Open Palette")); + button = new QPushButton(tr("Load")); button->setIcon(style->standardIcon(QStyle::SP_FileDialogStart)); - hbox1->addWidget(button); + //hbox1->addStretch(10); + hbox1->addWidget(button, 25); connect(button, SIGNAL(clicked(void)), this, SLOT(openPaletteFile(void))); @@ -102,20 +107,23 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent) custom_palette_path = new QLineEdit(); custom_palette_path->setReadOnly(true); + custom_palette_path->setClearButtonEnabled(false); custom_palette_path->setText(paletteFile.c_str()); hbox = new QHBoxLayout(); hbox->addWidget(GrayScale); hbox->addWidget(deemphSwap); - vbox->addWidget(useCustom); + hbox2->addWidget( custom_palette_path ); + //vbox->addWidget(useCustom); vbox->addLayout(hbox1); - vbox->addWidget(custom_palette_path); + vbox->addLayout(hbox2); vbox->addLayout(hbox); button = new QPushButton(tr("Clear")); button->setIcon(style->standardIcon(QStyle::SP_LineEditClearButton)); - hbox1->addWidget(button); + hbox1->addWidget(button, 25); + //hbox2->addWidget(button); connect(button, SIGNAL(clicked(void)), this, SLOT(clearPalette(void))); @@ -162,14 +170,20 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent) hbox1->addWidget(hueSlider); hueFrame->setLayout(hbox1); hbox2->addWidget(hueFrame); + + ntscReset = new QPushButton( tr("Reset") ); + hbox2->addWidget(ntscReset); vbox->addLayout(hbox2); + connect(ntscReset, SIGNAL(clicked(void)), this, SLOT(ntscResetClicked(void))); + ntscFrame->setLayout(vbox); mainLayout->addWidget(ntscFrame); palFrame = new QGroupBox(tr("PAL Emulation:")); - palFrame->setCheckable(true); + palFrame->setCheckable(false); + palFrame->setEnabled( nes_shm->video.preScaler == 9 ); grid = new QGridLayout(); @@ -266,12 +280,19 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent) mainLayout->addLayout( hbox ); setLayout(mainLayout); + + updateTimer = new QTimer(this); + + connect(updateTimer, &QTimer::timeout, this, &PaletteConfDialog_t::updatePeriodic); + + updateTimer->start(500); // 2hz } //---------------------------------------------------- PaletteConfDialog_t::~PaletteConfDialog_t(void) { printf("Destroy Palette Config Window\n"); + updateTimer->stop(); } //---------------------------------------------------------------------------- void PaletteConfDialog_t::closeEvent(QCloseEvent *event) @@ -289,6 +310,17 @@ void PaletteConfDialog_t::closeWindow(void) deleteLater(); } //---------------------------------------------------- +void PaletteConfDialog_t::updatePeriodic(void) +{ + palFrame->setEnabled( nes_shm->video.preScaler == 9 ); +} +//---------------------------------------------------- +void PaletteConfDialog_t::ntscResetClicked(void) +{ + hueSlider->setValue( 72 ); + tintSlider->setValue( 56 ); +} +//---------------------------------------------------- void PaletteConfDialog_t::hueChanged(int v) { int c, t; diff --git a/src/drivers/Qt/PaletteConf.h b/src/drivers/Qt/PaletteConf.h index 748f4043..79c2be2f 100644 --- a/src/drivers/Qt/PaletteConf.h +++ b/src/drivers/Qt/PaletteConf.h @@ -32,6 +32,7 @@ protected: QCheckBox *useCustom; QCheckBox *GrayScale; QCheckBox *deemphSwap; + QPushButton *ntscReset; QPushButton *palReset; QSlider *tintSlider; QSlider *hueSlider; @@ -49,15 +50,18 @@ protected: QGroupBox *sharpnessFrame; QGroupBox *contrastFrame; QGroupBox *brightnessFrame; + QTimer *updateTimer; private: public slots: void closeWindow(void); private slots: + void updatePeriodic(void); void hueChanged(int value); void tintChanged(int value); void openPaletteFile(void); void clearPalette(void); + void ntscResetClicked(void); void use_NTSC_Changed(bool v); void use_Custom_Changed(int v); void force_GrayScale_Changed(int v);