#include "configdialog.h"
#include "generaltab.h"
#include "version.h"
+#include "debug/memorybrowser.h"
+#include "debug/cpubrowser.h"
#include "dac.h"
#include "jaguar.h"
aboutWin = new AboutWindow(this);
helpWin = new HelpWindow(this);
filePickWin = new FilePickerWindow(this);
+ memBrowseWin = new MemoryBrowserWindow(this);
+ cpuBrowseWin = new CPUBrowserWindow(this);
videoWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
frameAdvanceAct->setShortcut(QKeySequence(tr("F7")));
connect(frameAdvanceAct, SIGNAL(triggered()), this, SLOT(FrameAdvance()));
+ fullScreenAct = new QAction(QIcon(":/res/generic.png"), tr("F&ull Screen"), this);
+ fullScreenAct->setShortcut(QKeySequence(tr("F9")));
+ connect(fullScreenAct, SIGNAL(triggered()), this, SLOT(ToggleFullScreen()));
+
+ // Debugger Actions
+ memBrowseAct = new QAction(QIcon(":/res/generic.png"), tr("Memory Browser"), this);
+ memBrowseAct->setStatusTip(tr("Shows the Jaguar memory browser window"));
+// memBrowseAct->setCheckable(true);
+ connect(memBrowseAct, SIGNAL(triggered()), this, SLOT(ShowMemoryBrowserWin()));
+
+ cpuBrowseAct = new QAction(QIcon(":/res/generic.png"), tr("CPU Browser"), this);
+ cpuBrowseAct->setStatusTip(tr("Shows the Jaguar CPU browser window"));
+// memBrowseAct->setCheckable(true);
+ connect(cpuBrowseAct, SIGNAL(triggered()), this, SLOT(ShowCPUBrowserWin()));
+
// Misc. connections...
connect(filePickWin, SIGNAL(RequestLoad(QString)), this, SLOT(LoadSoftware(QString)));
connect(filePickWin, SIGNAL(FilePickerHiding()), this, SLOT(Unpause()));
fileMenu->addAction(configAct);
fileMenu->addAction(quitAppAct);
+ if (vjs.hardwareTypeAlpine)
+ {
+ debugMenu = menuBar()->addMenu(tr("&Debug"));
+ debugMenu->addAction(memBrowseAct);
+ debugMenu->addAction(cpuBrowseAct);
+ }
+
helpMenu = menuBar()->addMenu(tr("&Help"));
helpMenu->addAction(helpAct);
helpMenu->addAction(aboutAct);
toolbar->addAction(palAct);
toolbar->addSeparator();
toolbar->addAction(blurAct);
+ toolbar->addAction(fullScreenAct);
+
+ if (vjs.hardwareTypeAlpine)
+ {
+ debugbar = addToolBar(tr("&Debug"));
+ debugbar->addAction(memBrowseAct);
+ debugbar->addAction(cpuBrowseAct);
+ }
// Create status bar
statusBar()->showMessage(tr("Ready"));
void MainWin::SyncUI(void)
{
// Set toolbar buttons/menus based on settings read in (sync the UI)...
+ // (Really, this is to sync command line options passed in)
blurAct->setChecked(vjs.glFilter);
x1Act->setChecked(zoomLevel == 1);
x2Act->setChecked(zoomLevel == 2);
ntscAct->setChecked(vjs.hardwareTypeNTSC);
palAct->setChecked(!vjs.hardwareTypeNTSC);
powerAct->setIcon(vjs.hardwareTypeNTSC ? powerRed : powerGreen);
+
+ fullScreen = vjs.fullscreen;
+ SetFullScreen(fullScreen);
}
e->accept();
return;
}
-
+/*
+ if (e->key() == Qt::Key_F9)
+ {
+ ToggleFullScreen();
+ return;
+ }
+*/
HandleKeys(e, true);
}
QString before = vjs.ROMPath;
QString alpineBefore = vjs.alpineROMPath;
QString absBefore = vjs.absROMPath;
- bool audioBefore = vjs.audioEnabled;
+// bool audioBefore = vjs.audioEnabled;
+ bool audioBefore = vjs.DSPEnabled;
dlg.UpdateVJSettings();
QString after = vjs.ROMPath;
QString alpineAfter = vjs.alpineROMPath;
QString absAfter = vjs.absROMPath;
- bool audioAfter = vjs.audioEnabled;
+// bool audioAfter = vjs.audioEnabled;
+ bool audioAfter = vjs.DSPEnabled;
bool allowOld = allowUnknownSoftware;
//ick.
}
}
- // If the "Enable audio" checkbox changed, then we have to re-init the DAC...
+ // If the "Enable DSP" checkbox changed, then we have to re-init the DAC,
+ // since it's running in the host audio IRQ...
if (audioBefore != audioAfter)
{
DACDone();
}
+void MainWin::SetFullScreen(bool state/*= true*/)
+{
+ if (state)
+ {
+ menuBar()->hide();
+ statusBar()->hide();
+ showFullScreen();
+ QRect r = QApplication::desktop()->availableGeometry();
+ double targetWidth = 320.0, targetHeight = (vjs.hardwareTypeNTSC ? 240.0 : 256.0);
+ double aspectRatio = targetWidth / targetHeight;
+ // NOTE: Really should check here to see which dimension constrains the other.
+ // Right now, we assume that height is the constraint.
+ int newWidth = (int)(aspectRatio * (double)r.height());
+
+ videoWidget->setFixedSize(newWidth, r.height());
+ showFullScreen();
+ }
+ else
+ {
+ menuBar()->show();
+ statusBar()->show();
+ showNormal();
+ ResizeMainWindow();
+ }
+
+ // For some reason, this doesn't work: If the emu is paused, toggling from
+ // fullscreen to windowed (& vice versa) shows a white screen.
+// videoWidget->updateGL();
+}
+
+
+void MainWin::ToggleFullScreen(void)
+{
+ fullScreen = !fullScreen;
+ SetFullScreen(fullScreen);
+}
+
+
+void MainWin::ShowMemoryBrowserWin(void)
+{
+ memBrowseWin->show();
+ memBrowseWin->RefreshContents();
+}
+
+
+void MainWin::ShowCPUBrowserWin(void)
+{
+ cpuBrowseWin->show();
+ cpuBrowseWin->RefreshContents();
+}
+
+
void MainWin::ResizeMainWindow(void)
{
videoWidget->setFixedSize(zoomLevel * 320, zoomLevel * (vjs.hardwareTypeNTSC ? 240 : 256));