Changed PAL palette emulation sensitivity logic for Qt palette config window. Now can only be used if PAL filter is active.

This commit is contained in:
mjbudd77 2021-06-17 20:21:42 -04:00
parent 38b8d8e9db
commit 39a50e46f4
2 changed files with 43 additions and 7 deletions

View File

@ -27,6 +27,7 @@
#include "Qt/main.h" #include "Qt/main.h"
#include "Qt/input.h" #include "Qt/input.h"
#include "Qt/config.h" #include "Qt/config.h"
#include "Qt/nes_shm.h"
#include "Qt/keyscan.h" #include "Qt/keyscan.h"
#include "Qt/fceuWrapper.h" #include "Qt/fceuWrapper.h"
#include "Qt/ConsoleUtilities.h" #include "Qt/ConsoleUtilities.h"
@ -66,7 +67,7 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent)
style = this->style(); style = this->style();
resize(512, 650); resize(512, 600);
// sync with config // sync with config
g_config->getOption("SDL.Hue", &hue); g_config->getOption("SDL.Hue", &hue);
@ -79,11 +80,14 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent)
frame = new QGroupBox(tr("Custom Palette:")); frame = new QGroupBox(tr("Custom Palette:"));
vbox = new QVBoxLayout(); vbox = new QVBoxLayout();
hbox1 = new QHBoxLayout(); hbox1 = new QHBoxLayout();
hbox2 = new QHBoxLayout();
useCustom = new QCheckBox(tr("Use Custom Palette")); useCustom = new QCheckBox(tr("Use Custom Palette"));
GrayScale = new QCheckBox(tr("Force Grayscale")); GrayScale = new QCheckBox(tr("Force Grayscale"));
deemphSwap = new QCheckBox(tr("De-emphasis Bit Swap")); deemphSwap = new QCheckBox(tr("De-emphasis Bit Swap"));
hbox1->addWidget(useCustom, 50);
useCustom->setChecked(FCEUI_GetUserPaletteAvail()); useCustom->setChecked(FCEUI_GetUserPaletteAvail());
GrayScale->setChecked(force_grayscale); GrayScale->setChecked(force_grayscale);
deemphSwap->setChecked(paldeemphswap); 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(GrayScale, SIGNAL(stateChanged(int)), this, SLOT(force_GrayScale_Changed(int)));
connect(deemphSwap, SIGNAL(stateChanged(int)), this, SLOT(deemphswap_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)); 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))); 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 = new QLineEdit();
custom_palette_path->setReadOnly(true); custom_palette_path->setReadOnly(true);
custom_palette_path->setClearButtonEnabled(false);
custom_palette_path->setText(paletteFile.c_str()); custom_palette_path->setText(paletteFile.c_str());
hbox = new QHBoxLayout(); hbox = new QHBoxLayout();
hbox->addWidget(GrayScale); hbox->addWidget(GrayScale);
hbox->addWidget(deemphSwap); hbox->addWidget(deemphSwap);
vbox->addWidget(useCustom); hbox2->addWidget( custom_palette_path );
//vbox->addWidget(useCustom);
vbox->addLayout(hbox1); vbox->addLayout(hbox1);
vbox->addWidget(custom_palette_path); vbox->addLayout(hbox2);
vbox->addLayout(hbox); vbox->addLayout(hbox);
button = new QPushButton(tr("Clear")); button = new QPushButton(tr("Clear"));
button->setIcon(style->standardIcon(QStyle::SP_LineEditClearButton)); 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))); connect(button, SIGNAL(clicked(void)), this, SLOT(clearPalette(void)));
@ -162,14 +170,20 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent)
hbox1->addWidget(hueSlider); hbox1->addWidget(hueSlider);
hueFrame->setLayout(hbox1); hueFrame->setLayout(hbox1);
hbox2->addWidget(hueFrame); hbox2->addWidget(hueFrame);
ntscReset = new QPushButton( tr("Reset") );
hbox2->addWidget(ntscReset);
vbox->addLayout(hbox2); vbox->addLayout(hbox2);
connect(ntscReset, SIGNAL(clicked(void)), this, SLOT(ntscResetClicked(void)));
ntscFrame->setLayout(vbox); ntscFrame->setLayout(vbox);
mainLayout->addWidget(ntscFrame); mainLayout->addWidget(ntscFrame);
palFrame = new QGroupBox(tr("PAL Emulation:")); palFrame = new QGroupBox(tr("PAL Emulation:"));
palFrame->setCheckable(true); palFrame->setCheckable(false);
palFrame->setEnabled( nes_shm->video.preScaler == 9 );
grid = new QGridLayout(); grid = new QGridLayout();
@ -266,12 +280,19 @@ PaletteConfDialog_t::PaletteConfDialog_t(QWidget *parent)
mainLayout->addLayout( hbox ); mainLayout->addLayout( hbox );
setLayout(mainLayout); setLayout(mainLayout);
updateTimer = new QTimer(this);
connect(updateTimer, &QTimer::timeout, this, &PaletteConfDialog_t::updatePeriodic);
updateTimer->start(500); // 2hz
} }
//---------------------------------------------------- //----------------------------------------------------
PaletteConfDialog_t::~PaletteConfDialog_t(void) PaletteConfDialog_t::~PaletteConfDialog_t(void)
{ {
printf("Destroy Palette Config Window\n"); printf("Destroy Palette Config Window\n");
updateTimer->stop();
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void PaletteConfDialog_t::closeEvent(QCloseEvent *event) void PaletteConfDialog_t::closeEvent(QCloseEvent *event)
@ -289,6 +310,17 @@ void PaletteConfDialog_t::closeWindow(void)
deleteLater(); 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) void PaletteConfDialog_t::hueChanged(int v)
{ {
int c, t; int c, t;

View File

@ -32,6 +32,7 @@ protected:
QCheckBox *useCustom; QCheckBox *useCustom;
QCheckBox *GrayScale; QCheckBox *GrayScale;
QCheckBox *deemphSwap; QCheckBox *deemphSwap;
QPushButton *ntscReset;
QPushButton *palReset; QPushButton *palReset;
QSlider *tintSlider; QSlider *tintSlider;
QSlider *hueSlider; QSlider *hueSlider;
@ -49,15 +50,18 @@ protected:
QGroupBox *sharpnessFrame; QGroupBox *sharpnessFrame;
QGroupBox *contrastFrame; QGroupBox *contrastFrame;
QGroupBox *brightnessFrame; QGroupBox *brightnessFrame;
QTimer *updateTimer;
private: private:
public slots: public slots:
void closeWindow(void); void closeWindow(void);
private slots: private slots:
void updatePeriodic(void);
void hueChanged(int value); void hueChanged(int value);
void tintChanged(int value); void tintChanged(int value);
void openPaletteFile(void); void openPaletteFile(void);
void clearPalette(void); void clearPalette(void);
void ntscResetClicked(void);
void use_NTSC_Changed(bool v); void use_NTSC_Changed(bool v);
void use_Custom_Changed(int v); void use_Custom_Changed(int v);
void force_GrayScale_Changed(int v); void force_GrayScale_Changed(int v);