mirror of https://github.com/bsnes-emu/bsnes.git
Update to v068r16 release.
byuu says: Testing this one and all the new features would be appreciated. New features? http://img203.imageshack.us/img203/505/bsnes20100907.jpg [For future reference, the above URL points to a screenshot of bsnes' Qt GUI running with the following windows (apart from the main window) visible: - A new 'state selection' dialog wih buttons labelled 'Slot 1' through 'Slot 10'. - The 'Tools' dialog open to a new 'Effect Toggle' tab, which has checkboxes for the various PPU backgrounds and sprites, and SPU channels. - The 'Configuration Settings' dialog open to the 'Advanced' tab, with a "Use Native OS File Dialogs" checkbox. - A 'Load Cartridge' dialog, which is the standard Windows file-open dialog. It seems these are the new features referred to. -- Ed]
This commit is contained in:
parent
05fca49b11
commit
4147dc42d0
|
@ -1,6 +1,6 @@
|
|||
include nall/Makefile
|
||||
snes := snes
|
||||
profile := performance
|
||||
profile := compatibility
|
||||
ui := qt
|
||||
|
||||
# compiler
|
||||
|
|
|
@ -28,6 +28,7 @@ void Application::init() {
|
|||
htmlViewerWindow = new HtmlViewerWindow;
|
||||
aboutWindow = new AboutWindow;
|
||||
fileBrowser = new FileBrowser;
|
||||
stateSelectWindow = new StateSelectWindow;
|
||||
|
||||
//window must be onscreen and visible before initializing video interface
|
||||
utility.updateSystemState();
|
||||
|
|
|
@ -5,3 +5,4 @@
|
|||
#include "htmlviewer.cpp"
|
||||
#include "loader.cpp"
|
||||
#include "main.cpp"
|
||||
#include "stateselect.cpp"
|
||||
|
|
|
@ -1,7 +1,32 @@
|
|||
#include "filebrowser.moc"
|
||||
FileBrowser *fileBrowser;
|
||||
|
||||
void FileBrowser::chooseFile() {
|
||||
if(config().diskBrowser.useCommonDialogs == true) {
|
||||
audio.clear();
|
||||
QString qfilename = QFileDialog::getOpenFileName(0,
|
||||
windowTitle(), fileSystemModel->rootPath(), "All Files (*)"
|
||||
);
|
||||
string filename = qfilename.toUtf8().constData();
|
||||
if(filename != "") onAccept(filename);
|
||||
return;
|
||||
}
|
||||
|
||||
showLoad();
|
||||
}
|
||||
|
||||
void FileBrowser::chooseFolder() {
|
||||
if(config().diskBrowser.useCommonDialogs == true) {
|
||||
audio.clear();
|
||||
QString qfilename = QFileDialog::getExistingDirectory(0,
|
||||
windowTitle(), config().path.current.folder,
|
||||
QFileDialog::ShowDirsOnly
|
||||
);
|
||||
string filename = qfilename.toUtf8().constData();
|
||||
if(filename != "") onAccept(filename);
|
||||
return;
|
||||
}
|
||||
|
||||
previewFrame->hide();
|
||||
showFolder();
|
||||
}
|
||||
|
@ -12,7 +37,23 @@ void FileBrowser::loadCartridge(CartridgeMode mode, signed filterIndex) {
|
|||
onActivate = { &FileBrowser::onAcceptCartridge, this };
|
||||
onAccept = { &FileBrowser::onAcceptCartridge, this };
|
||||
|
||||
setPath(config().path.rom == "" ? config().path.current.cartridge : config().path.rom);
|
||||
string defaultPath = config().path.rom == "" ? config().path.current.cartridge : config().path.rom;
|
||||
|
||||
if(config().diskBrowser.useCommonDialogs == true) {
|
||||
audio.clear();
|
||||
QString qfilename = QFileDialog::getOpenFileName(0,
|
||||
windowTitle(), defaultPath, string(
|
||||
"SNES cartridges (*.sfc *.bs *.st *.gb *.sgb *.gbc", reader.extensionList, reader.compressionList, ");;",
|
||||
"All files (*)"
|
||||
)
|
||||
);
|
||||
string filename = qfilename.toUtf8().constData();
|
||||
if(filename != "") onAccept(filename);
|
||||
config().path.current.cartridge = nall::dir(filename);
|
||||
return;
|
||||
}
|
||||
|
||||
setPath(defaultPath);
|
||||
setNameFilters(string()
|
||||
<< "SNES cartridges (*.sfc" << reader.extensionList << reader.compressionList << ")\n"
|
||||
<< "BS-X cartridges (*.bs" << reader.compressionList << ")\n"
|
||||
|
|
|
@ -6,6 +6,7 @@ public:
|
|||
function<void (const string&)> onActivate;
|
||||
function<void (const string&)> onAccept;
|
||||
|
||||
void chooseFile();
|
||||
void chooseFolder();
|
||||
enum CartridgeMode { LoadDirect, LoadBase, LoadSlot1, LoadSlot2 } cartridgeMode;
|
||||
void loadCartridge(CartridgeMode, signed = -1);
|
||||
|
|
|
@ -153,7 +153,7 @@ MainWindow::MainWindow() {
|
|||
|
||||
tools->addSeparator();
|
||||
|
||||
tools_loadState = tools->addMenu("Load Quick State");
|
||||
tools_loadState = tools->addMenu("&Load Quick State");
|
||||
for(unsigned i = 0; i < 10; i++) {
|
||||
QAction *loadAction = new QAction(string("Slot ", i + 1), 0);
|
||||
loadAction->setData(i);
|
||||
|
@ -161,7 +161,7 @@ MainWindow::MainWindow() {
|
|||
tools_loadState->addAction(loadAction);
|
||||
}
|
||||
|
||||
tools_saveState = tools->addMenu("Save Quick State");
|
||||
tools_saveState = tools->addMenu("&Save Quick State");
|
||||
for(unsigned i = 0; i < 10; i++) {
|
||||
QAction *saveAction = new QAction(string("Slot ", i + 1), 0);
|
||||
saveAction->setData(i);
|
||||
|
@ -177,6 +177,8 @@ MainWindow::MainWindow() {
|
|||
|
||||
tools_stateManager = tools->addAction("&State Manager ...");
|
||||
|
||||
tools_effectToggle = tools->addAction("Effect &Toggle ...");
|
||||
|
||||
tools_debugger = tools->addAction("&Debugger ...");
|
||||
#if !defined(DEBUGGER)
|
||||
tools_debugger->setVisible(false);
|
||||
|
@ -295,6 +297,7 @@ MainWindow::MainWindow() {
|
|||
connect(tools_cheatEditor, SIGNAL(triggered()), this, SLOT(showCheatEditor()));
|
||||
connect(tools_cheatFinder, SIGNAL(triggered()), this, SLOT(showCheatFinder()));
|
||||
connect(tools_stateManager, SIGNAL(triggered()), this, SLOT(showStateManager()));
|
||||
connect(tools_effectToggle, SIGNAL(triggered()), this, SLOT(showEffectToggle()));
|
||||
connect(tools_debugger, SIGNAL(triggered()), this, SLOT(showDebugger()));
|
||||
connect(help_documentation, SIGNAL(triggered()), this, SLOT(showDocumentation()));
|
||||
connect(help_license, SIGNAL(triggered()), this, SLOT(showLicense()));
|
||||
|
@ -588,6 +591,7 @@ void MainWindow::saveState() {
|
|||
void MainWindow::showCheatEditor() { toolsWindow->tab->setCurrentIndex(0); toolsWindow->show(); }
|
||||
void MainWindow::showCheatFinder() { toolsWindow->tab->setCurrentIndex(1); toolsWindow->show(); }
|
||||
void MainWindow::showStateManager() { toolsWindow->tab->setCurrentIndex(2); toolsWindow->show(); }
|
||||
void MainWindow::showEffectToggle() { toolsWindow->tab->setCurrentIndex(3); toolsWindow->show(); }
|
||||
|
||||
void MainWindow::showDebugger() {
|
||||
#if defined(DEBUGGER)
|
||||
|
|
|
@ -85,6 +85,7 @@ public:
|
|||
QAction *tools_cheatEditor;
|
||||
QAction *tools_cheatFinder;
|
||||
QAction *tools_stateManager;
|
||||
QAction *tools_effectToggle;
|
||||
QAction *tools_debugger;
|
||||
QMenu *help;
|
||||
QAction *help_documentation;
|
||||
|
@ -157,6 +158,7 @@ public slots:
|
|||
void showCheatEditor();
|
||||
void showCheatFinder();
|
||||
void showStateManager();
|
||||
void showEffectToggle();
|
||||
void showDebugger();
|
||||
void showDocumentation();
|
||||
void showLicense();
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
#include "stateselect.moc"
|
||||
StateSelectWindow *stateSelectWindow;
|
||||
|
||||
void StateSelectWindow::setSlot(unsigned slot) {
|
||||
state.active = slot;
|
||||
hide();
|
||||
utility.showMessage(string("Quick state ", slot + 1, " selected."));
|
||||
}
|
||||
|
||||
void StateSelectWindow::keyReleaseEvent(QKeyEvent *event) {
|
||||
switch(event->key()) {
|
||||
case Qt::Key_1: return setSlot(0);
|
||||
case Qt::Key_2: return setSlot(1);
|
||||
case Qt::Key_3: return setSlot(2);
|
||||
case Qt::Key_4: return setSlot(3);
|
||||
case Qt::Key_5: return setSlot(4);
|
||||
case Qt::Key_6: return setSlot(5);
|
||||
case Qt::Key_7: return setSlot(6);
|
||||
case Qt::Key_8: return setSlot(7);
|
||||
case Qt::Key_9: return setSlot(8);
|
||||
case Qt::Key_0: return setSlot(9);
|
||||
}
|
||||
return Window::keyReleaseEvent(event);
|
||||
}
|
||||
|
||||
StateSelectWindow::StateSelectWindow() {
|
||||
setObjectName("state-select-window");
|
||||
setWindowTitle("State Selection");
|
||||
setGeometryString(&config().geometry.stateSelectWindow);
|
||||
|
||||
layout = new QGridLayout;
|
||||
layout->setMargin(Style::WindowMargin);
|
||||
layout->setSpacing(Style::WidgetSpacing);
|
||||
setLayout(layout);
|
||||
|
||||
slot[0] = new QPushButton("Slot &1");
|
||||
slot[1] = new QPushButton("Slot &2");
|
||||
slot[2] = new QPushButton("Slot &3");
|
||||
slot[3] = new QPushButton("Slot &4");
|
||||
slot[4] = new QPushButton("Slot &5");
|
||||
slot[5] = new QPushButton("Slot &6");
|
||||
slot[6] = new QPushButton("Slot &7");
|
||||
slot[7] = new QPushButton("Slot &8");
|
||||
slot[8] = new QPushButton("Slot &9");
|
||||
slot[9] = new QPushButton("Slot 1&0");
|
||||
for(unsigned i = 0; i < 10; i++) {
|
||||
layout->addWidget(slot[i], i / 5, i % 5);
|
||||
connect(slot[i], SIGNAL(released()), this, SLOT(slotClicked()));
|
||||
}
|
||||
}
|
||||
|
||||
void StateSelectWindow::slotClicked() {
|
||||
QPushButton *s = (QPushButton*)sender();
|
||||
for(unsigned i = 0; i < 10; i++) {
|
||||
if(slot[i] == s) return setSlot(i);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
class StateSelectWindow : public Window {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QGridLayout *layout;
|
||||
QPushButton *slot[10];
|
||||
|
||||
void setSlot(unsigned slot);
|
||||
void keyReleaseEvent(QKeyEvent*);
|
||||
StateSelectWindow();
|
||||
|
||||
public slots:
|
||||
void slotClicked();
|
||||
};
|
||||
|
||||
extern StateSelectWindow *stateSelectWindow;
|
|
@ -11,10 +11,7 @@ bool Configuration::load(const char *filename) {
|
|||
}
|
||||
|
||||
Configuration::Configuration() {
|
||||
//========
|
||||
//external
|
||||
//========
|
||||
|
||||
attach((unsigned&)(SNES::config.controller_port1 = SNES::Input::Device::Joypad), "snes.controllerPort1");
|
||||
attach((unsigned&)(SNES::config.controller_port2 = SNES::Input::Device::Joypad), "snes.controllerPort2");
|
||||
attach((unsigned&)(SNES::config.expansion_port = SNES::System::ExpansionPortDevice::BSX), "snes.expansionPort");
|
||||
|
@ -33,10 +30,7 @@ Configuration::Configuration() {
|
|||
|
||||
attach(SNES::config.superfx.speed = 0, "superfx.speed", "0 = Auto-select, 1 = Force 10.74MHz, 2 = Force 21.48MHz");
|
||||
|
||||
//========
|
||||
//internal
|
||||
//========
|
||||
|
||||
attach(system.profile = "", "system.profile");
|
||||
attach(system.video = "", "system.video");
|
||||
attach(system.audio = "", "system.audio");
|
||||
|
@ -51,6 +45,7 @@ Configuration::Configuration() {
|
|||
attach(system.autoSaveMemory = false, "system.autoSaveMemory", "Automatically save cartridge back-up RAM once every minute");
|
||||
attach(system.rewindEnabled = false, "system.rewindEnabled", "Automatically save states periodically to allow auto-rewind support");
|
||||
|
||||
attach(diskBrowser.useCommonDialogs = false, "diskBrowser.useCommonDialogs");
|
||||
attach(diskBrowser.showPanel = true, "diskBrowser.showPanel");
|
||||
|
||||
attach(file.applyPatches = true, "file.applyPatches");
|
||||
|
@ -126,6 +121,7 @@ Configuration::Configuration() {
|
|||
|
||||
attach(geometry.mainWindow = "", "geometry.mainWindow");
|
||||
attach(geometry.loaderWindow = "", "geometry.loaderWindow");
|
||||
attach(geometry.stateSelectWindow = "", "geometry.stateSelectWindow");
|
||||
attach(geometry.htmlViewerWindow = "", "geometry.htmlViewerWindow");
|
||||
attach(geometry.aboutWindow = "", "geometry.aboutWindow");
|
||||
attach(geometry.fileBrowser = "", "geometry.fileBrowser");
|
||||
|
|
|
@ -20,6 +20,7 @@ public:
|
|||
} file;
|
||||
|
||||
struct DiskBrowser {
|
||||
bool useCommonDialogs;
|
||||
bool showPanel;
|
||||
} diskBrowser;
|
||||
|
||||
|
@ -81,6 +82,7 @@ public:
|
|||
struct Geometry {
|
||||
string mainWindow;
|
||||
string loaderWindow;
|
||||
string stateSelectWindow;
|
||||
string htmlViewerWindow;
|
||||
string aboutWindow;
|
||||
string fileBrowser;
|
||||
|
|
|
@ -2,10 +2,6 @@ InputGroup userInterfaceStates(InputCategory::UserInterface, "States");
|
|||
|
||||
namespace UserInterfaceStates {
|
||||
|
||||
//note: interally, there are ten quick save slots: 0-9
|
||||
//for the sake of users, this is displayed as 1-10 in the GUI
|
||||
unsigned activeState = 0;
|
||||
|
||||
struct Rewind : HotkeyInput {
|
||||
void pressed() {
|
||||
::state.rewind();
|
||||
|
@ -19,30 +15,41 @@ struct Rewind : HotkeyInput {
|
|||
|
||||
struct LoadActiveState : HotkeyInput {
|
||||
void pressed() {
|
||||
::state.load(activeState);
|
||||
::state.load(::state.active);
|
||||
}
|
||||
|
||||
LoadActiveState() : HotkeyInput("Load Active Quick State", "input.userInterface.states.loadActiveQuickState") {
|
||||
name = "KB0::F2";
|
||||
name = "KB0::F4";
|
||||
userInterfaceStates.attach(this);
|
||||
}
|
||||
} loadActiveState;
|
||||
|
||||
struct SaveActiveState : HotkeyInput {
|
||||
void pressed() {
|
||||
::state.save(activeState);
|
||||
::state.save(::state.active);
|
||||
}
|
||||
|
||||
SaveActiveState() : HotkeyInput("Save Active Quick State", "input.userInterface.states.saveActiveQuickState") {
|
||||
name = "Shift+KB0::F2";
|
||||
name = "KB0::F2";
|
||||
userInterfaceStates.attach(this);
|
||||
}
|
||||
} saveActiveState;
|
||||
|
||||
struct SelectActiveState : HotkeyInput {
|
||||
void pressed() {
|
||||
stateSelectWindow->show();
|
||||
}
|
||||
|
||||
SelectActiveState() : HotkeyInput("Select Active Quick State", "input.userInterface.states.selectActiveQuicKState") {
|
||||
name = "KB0::F3";
|
||||
userInterfaceStates.attach(this);
|
||||
}
|
||||
} selectActiveState;
|
||||
|
||||
struct DecrementAndLoadState : HotkeyInput {
|
||||
void pressed() {
|
||||
activeState = (activeState + 10 - 1) % 10;
|
||||
::state.load(activeState);
|
||||
::state.active = (::state.active + 10 - 1) % 10;
|
||||
::state.load(::state.active);
|
||||
}
|
||||
|
||||
DecrementAndLoadState() : HotkeyInput("Decrement and Load State", "input.userInterface.states.decrementAndLoadState") {
|
||||
|
@ -52,8 +59,8 @@ struct DecrementAndLoadState : HotkeyInput {
|
|||
|
||||
struct SaveAndIncrementState : HotkeyInput {
|
||||
void pressed() {
|
||||
::state.save(activeState);
|
||||
activeState = (activeState + 10 + 1) % 10;
|
||||
::state.save(::state.active);
|
||||
::state.active = (::state.active + 10 + 1) % 10;
|
||||
}
|
||||
|
||||
SaveAndIncrementState() : HotkeyInput("Save and Increment State", "input.userInterface.states.saveAndIncrementState") {
|
||||
|
@ -63,24 +70,22 @@ struct SaveAndIncrementState : HotkeyInput {
|
|||
|
||||
struct DecrementActiveState : HotkeyInput {
|
||||
void pressed() {
|
||||
activeState = (activeState + 10 - 1) % 10;
|
||||
utility.showMessage(string() << "Quick state " << (activeState + 1) << " selected.");
|
||||
::state.active = (::state.active + 10 - 1) % 10;
|
||||
utility.showMessage(string() << "Quick state " << (::state.active + 1) << " selected.");
|
||||
}
|
||||
|
||||
DecrementActiveState() : HotkeyInput("Decrement Active Quick State Slot", "input.userInterface.states.decrementActiveQuickState") {
|
||||
name = "KB0::F3";
|
||||
userInterfaceStates.attach(this);
|
||||
}
|
||||
} decrementActiveState;
|
||||
|
||||
struct IncrementActiveState : HotkeyInput {
|
||||
void pressed() {
|
||||
activeState = (activeState + 10 + 1) % 10;
|
||||
utility.showMessage(string() << "Quick state " << (activeState + 1) << " selected.");
|
||||
::state.active = (::state.active + 10 + 1) % 10;
|
||||
utility.showMessage(string() << "Quick state " << (::state.active + 1) << " selected.");
|
||||
}
|
||||
|
||||
IncrementActiveState() : HotkeyInput("Increment Active Quick State Slot", "input.userInterface.states.incrementActiveQuickState") {
|
||||
name = "KB0::F4";
|
||||
userInterfaceStates.attach(this);
|
||||
}
|
||||
} incrementActiveState;
|
||||
|
|
|
@ -9,7 +9,7 @@ void Movie::chooseFile() {
|
|||
fileBrowser->setWindowTitle("Select Movie");
|
||||
fileBrowser->setPath(config().path.current.movie);
|
||||
fileBrowser->setNameFilters("bsnes Movies (*.bsv)");
|
||||
fileBrowser->showLoad();
|
||||
fileBrowser->chooseFile();
|
||||
}
|
||||
|
||||
void Movie::play(const string &filename) {
|
||||
|
|
|
@ -106,12 +106,15 @@ AdvancedSettingsWindow::AdvancedSettingsWindow() {
|
|||
focusButtonGroup->addButton(focusAllow);
|
||||
focusLayout->addWidget(focusAllow);
|
||||
|
||||
rewindTitle = new QLabel("Rewind support:");
|
||||
layout->addWidget(rewindTitle);
|
||||
miscTitle = new QLabel("Miscellaneous:");
|
||||
layout->addWidget(miscTitle);
|
||||
|
||||
rewindEnable = new QCheckBox("Enable");
|
||||
rewindEnable = new QCheckBox("Enable Rewind Support");
|
||||
layout->addWidget(rewindEnable);
|
||||
|
||||
useCommonDialogs = new QCheckBox("Use Native OS File Dialogs");
|
||||
layout->addWidget(useCommonDialogs);
|
||||
|
||||
initializeUi();
|
||||
|
||||
connect(videoDriver, SIGNAL(currentIndexChanged(int)), this, SLOT(videoDriverChange(int)));
|
||||
|
@ -126,6 +129,7 @@ AdvancedSettingsWindow::AdvancedSettingsWindow() {
|
|||
connect(focusIgnore, SIGNAL(pressed()), this, SLOT(ignoreInputWithoutFocus()));
|
||||
connect(focusAllow, SIGNAL(pressed()), this, SLOT(allowInputWithoutFocus()));
|
||||
connect(rewindEnable, SIGNAL(stateChanged(int)), this, SLOT(toggleRewindEnable()));
|
||||
connect(useCommonDialogs, SIGNAL(stateChanged(int)), this, SLOT(toggleUseCommonDialogs()));
|
||||
}
|
||||
|
||||
void AdvancedSettingsWindow::initializeUi() {
|
||||
|
@ -161,6 +165,7 @@ void AdvancedSettingsWindow::initializeUi() {
|
|||
focusAllow->setChecked (config().input.focusPolicy == Configuration::Input::FocusPolicyAllowInput);
|
||||
|
||||
rewindEnable->setChecked(config().system.rewindEnabled);
|
||||
useCommonDialogs->setChecked(config().diskBrowser.useCommonDialogs);
|
||||
}
|
||||
|
||||
void AdvancedSettingsWindow::videoDriverChange(int index) {
|
||||
|
@ -190,3 +195,7 @@ void AdvancedSettingsWindow::toggleRewindEnable() {
|
|||
config().system.rewindEnabled = rewindEnable->isChecked();
|
||||
state.resetHistory();
|
||||
}
|
||||
|
||||
void AdvancedSettingsWindow::toggleUseCommonDialogs() {
|
||||
config().diskBrowser.useCommonDialogs = useCommonDialogs->isChecked();
|
||||
}
|
||||
|
|
|
@ -34,8 +34,9 @@ public:
|
|||
QRadioButton *focusIgnore;
|
||||
QRadioButton *focusAllow;
|
||||
|
||||
QLabel *rewindTitle;
|
||||
QLabel *miscTitle;
|
||||
QCheckBox *rewindEnable;
|
||||
QCheckBox *useCommonDialogs;
|
||||
|
||||
void initializeUi();
|
||||
AdvancedSettingsWindow();
|
||||
|
@ -53,6 +54,7 @@ public slots:
|
|||
void ignoreInputWithoutFocus();
|
||||
void allowInputWithoutFocus();
|
||||
void toggleRewindEnable();
|
||||
void toggleUseCommonDialogs();
|
||||
};
|
||||
|
||||
extern AdvancedSettingsWindow *advancedSettingsWindow;
|
||||
|
|
|
@ -308,7 +308,7 @@ void VideoSettingsWindow::selectFragmentShader() {
|
|||
fileBrowser->setWindowTitle("Select Fragment Shader");
|
||||
fileBrowser->setPath(config().path.current.shader);
|
||||
fileBrowser->setNameFilters("All files (*)");
|
||||
fileBrowser->showLoad();
|
||||
fileBrowser->chooseFile();
|
||||
}
|
||||
|
||||
void VideoSettingsWindow::selectVertexShader() {
|
||||
|
@ -318,7 +318,7 @@ void VideoSettingsWindow::selectVertexShader() {
|
|||
fileBrowser->setWindowTitle("Select Vertex Shader");
|
||||
fileBrowser->setPath(config().path.current.shader);
|
||||
fileBrowser->setNameFilters("All files (*)");
|
||||
fileBrowser->showLoad();
|
||||
fileBrowser->chooseFile();
|
||||
}
|
||||
|
||||
void VideoSettingsWindow::defaultFragmentShader() { assignFragmentShader(""); }
|
||||
|
|
|
@ -86,6 +86,7 @@ bool State::rewind() {
|
|||
}
|
||||
|
||||
State::State() {
|
||||
active = 0;
|
||||
historySize = 120;
|
||||
history = new serializer[historySize];
|
||||
for(unsigned i = 0; i < historySize; i++) history[i] = 0;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
class State {
|
||||
public:
|
||||
unsigned active;
|
||||
bool save(unsigned);
|
||||
bool load(unsigned);
|
||||
|
||||
|
|
|
@ -2,105 +2,97 @@
|
|||
EffectToggleWindow *effectToggleWindow;
|
||||
|
||||
EffectToggleWindow::EffectToggleWindow() {
|
||||
layout = new QVBoxLayout;
|
||||
layout->setAlignment(Qt::AlignTop);
|
||||
layout = new QGridLayout;
|
||||
layout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
|
||||
layout->setMargin(Style::WindowMargin);
|
||||
layout->setSpacing(Style::WidgetSpacing);
|
||||
setLayout(layout);
|
||||
|
||||
ppuLabel = new QLabel("<b>S-PPU (Video)</b>");
|
||||
layout->addWidget(ppuLabel);
|
||||
|
||||
ppuLayout = new QGridLayout;
|
||||
ppuLayout->setAlignment(Qt::AlignLeft);
|
||||
layout->addLayout(ppuLayout);
|
||||
layout->addWidget(ppuLabel, 0, 0);
|
||||
|
||||
bg1pri0 = new QCheckBox("BG1 Priority 0");
|
||||
bg1pri0->setChecked(true);
|
||||
ppuLayout->addWidget(bg1pri0, 0, 0);
|
||||
layout->addWidget(bg1pri0, 1, 0, 1, 4);
|
||||
|
||||
bg1pri1 = new QCheckBox("BG1 Priority 1");
|
||||
bg1pri1->setChecked(true);
|
||||
ppuLayout->addWidget(bg1pri1, 0, 1);
|
||||
layout->addWidget(bg1pri1, 1, 1);
|
||||
|
||||
bg2pri0 = new QCheckBox("BG2 Priority 0");
|
||||
bg2pri0->setChecked(true);
|
||||
ppuLayout->addWidget(bg2pri0, 1, 0);
|
||||
layout->addWidget(bg2pri0, 2, 0);
|
||||
|
||||
bg2pri1 = new QCheckBox("BG2 Priority 1");
|
||||
bg2pri1->setChecked(true);
|
||||
ppuLayout->addWidget(bg2pri1, 1, 1);
|
||||
layout->addWidget(bg2pri1, 2, 1);
|
||||
|
||||
bg3pri0 = new QCheckBox("BG3 Priority 0");
|
||||
bg3pri0->setChecked(true);
|
||||
ppuLayout->addWidget(bg3pri0, 2, 0);
|
||||
layout->addWidget(bg3pri0, 3, 0);
|
||||
|
||||
bg3pri1 = new QCheckBox("BG3 Priority 1");
|
||||
bg3pri1->setChecked(true);
|
||||
ppuLayout->addWidget(bg3pri1, 2, 1);
|
||||
layout->addWidget(bg3pri1, 3, 1);
|
||||
|
||||
bg4pri0 = new QCheckBox("BG4 Priority 0");
|
||||
bg4pri0->setChecked(true);
|
||||
ppuLayout->addWidget(bg4pri0, 3, 0);
|
||||
layout->addWidget(bg4pri0, 4, 0);
|
||||
|
||||
bg4pri1 = new QCheckBox("BG4 Priority 1");
|
||||
bg4pri1->setChecked(true);
|
||||
ppuLayout->addWidget(bg4pri1, 3, 1);
|
||||
layout->addWidget(bg4pri1, 4, 1);
|
||||
|
||||
oampri0 = new QCheckBox("OAM Priority 0");
|
||||
oampri0->setChecked(true);
|
||||
ppuLayout->addWidget(oampri0, 4, 0);
|
||||
layout->addWidget(oampri0, 5, 0);
|
||||
|
||||
oampri1 = new QCheckBox("OAM Priority 1");
|
||||
oampri1->setChecked(true);
|
||||
ppuLayout->addWidget(oampri1, 4, 1);
|
||||
layout->addWidget(oampri1, 5, 1);
|
||||
|
||||
oampri2 = new QCheckBox("OAM Priority 2");
|
||||
oampri2->setChecked(true);
|
||||
ppuLayout->addWidget(oampri2, 4, 2);
|
||||
layout->addWidget(oampri2, 5, 2);
|
||||
|
||||
oampri3 = new QCheckBox("OAM Priority 3");
|
||||
oampri3->setChecked(true);
|
||||
ppuLayout->addWidget(oampri3, 4, 3);
|
||||
layout->addWidget(oampri3, 5, 3);
|
||||
|
||||
dspLabel = new QLabel("<b>S-DSP (Audio)</b>");
|
||||
layout->addWidget(dspLabel);
|
||||
|
||||
dspLayout = new QGridLayout;
|
||||
dspLayout->setAlignment(Qt::AlignLeft);
|
||||
layout->addLayout(dspLayout);
|
||||
layout->addWidget(dspLabel, 6, 0, 1, 4);
|
||||
|
||||
channel0 = new QCheckBox("Channel 0");
|
||||
channel0->setChecked(true);
|
||||
dspLayout->addWidget(channel0, 0, 0);
|
||||
layout->addWidget(channel0, 7, 0);
|
||||
|
||||
channel1 = new QCheckBox("Channel 1");
|
||||
channel1->setChecked(true);
|
||||
dspLayout->addWidget(channel1, 0, 1);
|
||||
layout->addWidget(channel1, 7, 1);
|
||||
|
||||
channel2 = new QCheckBox("Channel 2");
|
||||
channel2->setChecked(true);
|
||||
dspLayout->addWidget(channel2, 0, 2);
|
||||
layout->addWidget(channel2, 7, 2);
|
||||
|
||||
channel3 = new QCheckBox("Channel 3");
|
||||
channel3->setChecked(true);
|
||||
dspLayout->addWidget(channel3, 0, 3);
|
||||
layout->addWidget(channel3, 7, 3);
|
||||
|
||||
channel4 = new QCheckBox("Channel 4");
|
||||
channel4->setChecked(true);
|
||||
dspLayout->addWidget(channel4, 1, 0);
|
||||
layout->addWidget(channel4, 8, 0);
|
||||
|
||||
channel5 = new QCheckBox("Channel 5");
|
||||
channel5->setChecked(true);
|
||||
dspLayout->addWidget(channel5, 1, 1);
|
||||
layout->addWidget(channel5, 8, 1);
|
||||
|
||||
channel6 = new QCheckBox("Channel 6");
|
||||
channel6->setChecked(true);
|
||||
dspLayout->addWidget(channel6, 1, 2);
|
||||
layout->addWidget(channel6, 8, 2);
|
||||
|
||||
channel7 = new QCheckBox("Channel 7");
|
||||
channel7->setChecked(true);
|
||||
dspLayout->addWidget(channel7, 1, 3);
|
||||
layout->addWidget(channel7, 8, 3);
|
||||
|
||||
connect(bg1pri0, SIGNAL(stateChanged(int)), this, SLOT(synchronize()));
|
||||
connect(bg1pri1, SIGNAL(stateChanged(int)), this, SLOT(synchronize()));
|
||||
|
|
|
@ -2,9 +2,8 @@ class EffectToggleWindow : public QWidget {
|
|||
Q_OBJECT
|
||||
|
||||
public:
|
||||
QVBoxLayout *layout;
|
||||
QGridLayout *layout;
|
||||
QLabel *ppuLabel;
|
||||
QGridLayout *ppuLayout;
|
||||
QCheckBox *bg1pri0;
|
||||
QCheckBox *bg1pri1;
|
||||
QCheckBox *bg2pri0;
|
||||
|
@ -18,7 +17,6 @@ public:
|
|||
QCheckBox *oampri2;
|
||||
QCheckBox *oampri3;
|
||||
QLabel *dspLabel;
|
||||
QGridLayout *dspLayout;
|
||||
QCheckBox *channel0;
|
||||
QCheckBox *channel1;
|
||||
QCheckBox *channel2;
|
||||
|
|
|
@ -35,6 +35,7 @@ using namespace ruby;
|
|||
#include "base/htmlviewer.moc.hpp"
|
||||
#include "base/loader.moc.hpp"
|
||||
#include "base/main.moc.hpp"
|
||||
#include "base/stateselect.moc.hpp"
|
||||
|
||||
#include "cartridge/cartridge.hpp"
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
namespace SNES {
|
||||
namespace Info {
|
||||
static const char Name[] = "bsnes";
|
||||
static const char Version[] = "068.15";
|
||||
static const char Version[] = "068.16";
|
||||
static const unsigned SerializerVersion = 13;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue