Merge pull request #184 from mjbudd77/master
Added RAM Search Window to Qt GUI
This commit is contained in:
commit
e66a162430
2
TODO-SDL
2
TODO-SDL
|
@ -38,7 +38,7 @@ Game genie load/enable capability | YES | YES
|
||||||
Movie record/save/play functionality | YES | YES |
|
Movie record/save/play functionality | YES | YES |
|
||||||
Cheat search window | YES | YES |
|
Cheat search window | YES | YES |
|
||||||
Active Cheat window | YES | YES |
|
Active Cheat window | YES | YES |
|
||||||
RAM Search Window | NO | NO |
|
RAM Search Window | YES | NO |
|
||||||
RAM Watch Window | YES | YES |
|
RAM Watch Window | YES | YES |
|
||||||
Memory Watch Window | NO | NO |
|
Memory Watch Window | NO | NO |
|
||||||
TAS Editor | NO | NO |
|
TAS Editor | NO | NO |
|
||||||
|
|
|
@ -445,6 +445,7 @@ set(SRC_DRIVERS_SDL
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ppuViewer.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ppuViewer.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/NameTableViewer.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/NameTableViewer.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/RamWatch.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/RamWatch.cpp
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/RamSearch.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/config.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/config.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/input.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/input.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/nes_shm.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/nes_shm.cpp
|
||||||
|
|
|
@ -27,6 +27,26 @@
|
||||||
|
|
||||||
static GuiCheatsDialog_t *win = NULL;
|
static GuiCheatsDialog_t *win = NULL;
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void openCheatDialog(QWidget *parent)
|
||||||
|
{
|
||||||
|
if ( win != NULL )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
win = new GuiCheatsDialog_t(parent);
|
||||||
|
|
||||||
|
win->show();
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void updateCheatDialog(void)
|
||||||
|
{
|
||||||
|
if ( win == NULL )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
win->showActiveCheatList( true );
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
GuiCheatsDialog_t::GuiCheatsDialog_t(QWidget *parent)
|
GuiCheatsDialog_t::GuiCheatsDialog_t(QWidget *parent)
|
||||||
: QDialog( parent )
|
: QDialog( parent )
|
||||||
{
|
{
|
||||||
|
@ -412,6 +432,7 @@ GuiCheatsDialog_t::~GuiCheatsDialog_t(void)
|
||||||
}
|
}
|
||||||
wasPausedByCheats = false;
|
wasPausedByCheats = false;
|
||||||
|
|
||||||
|
win = NULL;
|
||||||
printf("Destroy Cheat Window Event\n");
|
printf("Destroy Cheat Window Event\n");
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
|
@ -32,6 +32,8 @@ class GuiCheatsDialog_t : public QDialog
|
||||||
|
|
||||||
int activeCheatListCB (char *name, uint32 a, uint8 v, int c, int s, int type, void *data);
|
int activeCheatListCB (char *name, uint32 a, uint8 v, int c, int s, int type, void *data);
|
||||||
|
|
||||||
|
void showActiveCheatList(bool redraw);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *event);
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|
||||||
|
@ -75,7 +77,6 @@ class GuiCheatsDialog_t : public QDialog
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void showCheatSearchResults(void);
|
void showCheatSearchResults(void);
|
||||||
void showActiveCheatList(bool redraw);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void closeWindow(void);
|
void closeWindow(void);
|
||||||
|
@ -97,3 +98,7 @@ class GuiCheatsDialog_t : public QDialog
|
||||||
void actvCheatItemClicked( QTreeWidgetItem *item, int column);
|
void actvCheatItemClicked( QTreeWidgetItem *item, int column);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void openCheatDialog(QWidget *parent);
|
||||||
|
|
||||||
|
void updateCheatDialog(void);
|
||||||
|
|
|
@ -343,6 +343,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
cpuCycExdVal->setInputMask( ">9000000000000000;" );
|
cpuCycExdVal->setInputMask( ">9000000000000000;" );
|
||||||
cpuCycExdVal->setAlignment(Qt::AlignLeft);
|
cpuCycExdVal->setAlignment(Qt::AlignLeft);
|
||||||
cpuCycExdVal->setMaximumWidth( 18 * fontCharWidth );
|
cpuCycExdVal->setMaximumWidth( 18 * fontCharWidth );
|
||||||
|
cpuCycExdVal->setCursorPosition(0);
|
||||||
connect( cpuCycExdVal, SIGNAL(textEdited(const QString &)), this, SLOT(cpuCycleThresChanged(const QString &)));
|
connect( cpuCycExdVal, SIGNAL(textEdited(const QString &)), this, SLOT(cpuCycleThresChanged(const QString &)));
|
||||||
|
|
||||||
instrExdVal->setFont( font );
|
instrExdVal->setFont( font );
|
||||||
|
@ -350,6 +351,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
instrExdVal->setInputMask( ">9000000000000000;" );
|
instrExdVal->setInputMask( ">9000000000000000;" );
|
||||||
instrExdVal->setAlignment(Qt::AlignLeft);
|
instrExdVal->setAlignment(Qt::AlignLeft);
|
||||||
instrExdVal->setMaximumWidth( 18 * fontCharWidth );
|
instrExdVal->setMaximumWidth( 18 * fontCharWidth );
|
||||||
|
instrExdVal->setCursorPosition(0);
|
||||||
connect( instrExdVal, SIGNAL(textEdited(const QString &)), this, SLOT(instructionsThresChanged(const QString &)));
|
connect( instrExdVal, SIGNAL(textEdited(const QString &)), this, SLOT(instructionsThresChanged(const QString &)));
|
||||||
|
|
||||||
brkCpuCycExd->setChecked( break_on_cycles );
|
brkCpuCycExd->setChecked( break_on_cycles );
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "Qt/ppuViewer.h"
|
#include "Qt/ppuViewer.h"
|
||||||
#include "Qt/NameTableViewer.h"
|
#include "Qt/NameTableViewer.h"
|
||||||
#include "Qt/RamWatch.h"
|
#include "Qt/RamWatch.h"
|
||||||
|
#include "Qt/RamSearch.h"
|
||||||
#include "Qt/keyscan.h"
|
#include "Qt/keyscan.h"
|
||||||
#include "Qt/nes_shm.h"
|
#include "Qt/nes_shm.h"
|
||||||
|
|
||||||
|
@ -484,6 +485,14 @@ void consoleWin_t::createMainMenu(void)
|
||||||
|
|
||||||
toolsMenu->addAction(cheatsAct);
|
toolsMenu->addAction(cheatsAct);
|
||||||
|
|
||||||
|
// Tools -> RAM Search
|
||||||
|
ramSearchAct = new QAction(tr("RAM Search..."), this);
|
||||||
|
//ramSearchAct->setShortcut( QKeySequence(tr("Shift+F7")));
|
||||||
|
ramSearchAct->setStatusTip(tr("Open RAM Search Window"));
|
||||||
|
connect(ramSearchAct, SIGNAL(triggered()), this, SLOT(openRamSearch(void)) );
|
||||||
|
|
||||||
|
toolsMenu->addAction(ramSearchAct);
|
||||||
|
|
||||||
// Tools -> RAM Watch
|
// Tools -> RAM Watch
|
||||||
ramWatchAct = new QAction(tr("RAM Watch..."), this);
|
ramWatchAct = new QAction(tr("RAM Watch..."), this);
|
||||||
//ramWatchAct->setShortcut( QKeySequence(tr("Shift+F7")));
|
//ramWatchAct->setShortcut( QKeySequence(tr("Shift+F7")));
|
||||||
|
@ -1017,13 +1026,9 @@ void consoleWin_t::openGuiConfWin(void)
|
||||||
|
|
||||||
void consoleWin_t::openCheats(void)
|
void consoleWin_t::openCheats(void)
|
||||||
{
|
{
|
||||||
GuiCheatsDialog_t *cheatWin;
|
|
||||||
|
|
||||||
//printf("Open GUI Cheat Window\n");
|
//printf("Open GUI Cheat Window\n");
|
||||||
|
|
||||||
cheatWin = new GuiCheatsDialog_t(this);
|
openCheatDialog(this);
|
||||||
|
|
||||||
cheatWin->show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void consoleWin_t::openRamWatch(void)
|
void consoleWin_t::openRamWatch(void)
|
||||||
|
@ -1037,6 +1042,12 @@ void consoleWin_t::openRamWatch(void)
|
||||||
ramWatchWin->show();
|
ramWatchWin->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void consoleWin_t::openRamSearch(void)
|
||||||
|
{
|
||||||
|
//printf("Open GUI RAM Search Window\n");
|
||||||
|
openRamSearchWindow(this);
|
||||||
|
}
|
||||||
|
|
||||||
void consoleWin_t::openDebugWindow(void)
|
void consoleWin_t::openDebugWindow(void)
|
||||||
{
|
{
|
||||||
ConsoleDebugger *debugWin;
|
ConsoleDebugger *debugWin;
|
||||||
|
|
|
@ -90,6 +90,7 @@ class consoleWin_t : public QMainWindow
|
||||||
QAction *fdsLoadBiosAct;
|
QAction *fdsLoadBiosAct;
|
||||||
QAction *cheatsAct;
|
QAction *cheatsAct;
|
||||||
QAction *ramWatchAct;
|
QAction *ramWatchAct;
|
||||||
|
QAction *ramSearchAct;
|
||||||
QAction *debuggerAct;
|
QAction *debuggerAct;
|
||||||
QAction *codeDataLogAct;
|
QAction *codeDataLogAct;
|
||||||
QAction *traceLogAct;
|
QAction *traceLogAct;
|
||||||
|
@ -169,6 +170,7 @@ class consoleWin_t : public QMainWindow
|
||||||
void openNTViewer(void);
|
void openNTViewer(void);
|
||||||
void openCheats(void);
|
void openCheats(void);
|
||||||
void openRamWatch(void);
|
void openRamWatch(void);
|
||||||
|
void openRamSearch(void);
|
||||||
void openMovie(void);
|
void openMovie(void);
|
||||||
void stopMovie(void);
|
void stopMovie(void);
|
||||||
void recordMovie(void);
|
void recordMovie(void);
|
||||||
|
|
|
@ -563,7 +563,7 @@ HexEditorDialog_t::HexEditorDialog_t(QWidget *parent)
|
||||||
|
|
||||||
// File -> Save ROM
|
// File -> Save ROM
|
||||||
saveROM = new QAction(tr("Save ROM"), this);
|
saveROM = new QAction(tr("Save ROM"), this);
|
||||||
//saveROM->setShortcuts(QKeySequence::Open);
|
//saveROM->setShortcut(QKeySequence::Open);
|
||||||
saveROM->setStatusTip(tr("Save ROM File"));
|
saveROM->setStatusTip(tr("Save ROM File"));
|
||||||
connect(saveROM, SIGNAL(triggered()), this, SLOT(saveRomFile(void)) );
|
connect(saveROM, SIGNAL(triggered()), this, SLOT(saveRomFile(void)) );
|
||||||
|
|
||||||
|
@ -571,12 +571,20 @@ HexEditorDialog_t::HexEditorDialog_t(QWidget *parent)
|
||||||
|
|
||||||
// File -> Save ROM As
|
// File -> Save ROM As
|
||||||
saveROM = new QAction(tr("Save ROM As"), this);
|
saveROM = new QAction(tr("Save ROM As"), this);
|
||||||
//saveROM->setShortcuts(QKeySequence::Open);
|
//saveROM->setShortcut(QKeySequence::Open);
|
||||||
saveROM->setStatusTip(tr("Save ROM File As"));
|
saveROM->setStatusTip(tr("Save ROM File As"));
|
||||||
connect(saveROM, SIGNAL(triggered()), this, SLOT(saveRomFileAs(void)) );
|
connect(saveROM, SIGNAL(triggered()), this, SLOT(saveRomFileAs(void)) );
|
||||||
|
|
||||||
fileMenu->addAction(saveROM);
|
fileMenu->addAction(saveROM);
|
||||||
|
|
||||||
|
// File -> Goto Address
|
||||||
|
gotoAddrAct = new QAction(tr("Goto Addresss"), this);
|
||||||
|
gotoAddrAct->setShortcut(QKeySequence(tr("Ctrl+A")));
|
||||||
|
gotoAddrAct->setStatusTip(tr("Goto Address"));
|
||||||
|
connect(gotoAddrAct, SIGNAL(triggered()), this, SLOT(openGotoAddrDialog(void)) );
|
||||||
|
|
||||||
|
fileMenu->addAction(gotoAddrAct);
|
||||||
|
|
||||||
fileMenu->addSeparator();
|
fileMenu->addSeparator();
|
||||||
|
|
||||||
// File -> Close
|
// File -> Close
|
||||||
|
@ -1132,6 +1140,11 @@ void HexEditorDialog_t::updatePeriodic(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void HexEditorDialog_t::openGotoAddrDialog(void)
|
||||||
|
{
|
||||||
|
editor->openGotoAddrDialog();
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
QHexEdit::QHexEdit(QWidget *parent)
|
QHexEdit::QHexEdit(QWidget *parent)
|
||||||
: QWidget( parent )
|
: QWidget( parent )
|
||||||
{
|
{
|
||||||
|
@ -1361,6 +1374,33 @@ void QHexEdit::resizeEvent(QResizeEvent *event)
|
||||||
|
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void QHexEdit::openGotoAddrDialog(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
char stmp[128];
|
||||||
|
QInputDialog dialog(this);
|
||||||
|
|
||||||
|
sprintf( stmp, "Specify Address [ 0x0 -> 0x%X ]", mb.size()-1 );
|
||||||
|
|
||||||
|
dialog.setWindowTitle( tr("Goto Address") );
|
||||||
|
dialog.setLabelText( tr(stmp) );
|
||||||
|
dialog.setOkButtonText( tr("Go") );
|
||||||
|
//dialog.setTextValue( tr("0") );
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
ret = dialog.exec();
|
||||||
|
|
||||||
|
if ( QDialog::Accepted == ret )
|
||||||
|
{
|
||||||
|
int addr;
|
||||||
|
std::string s = dialog.textValue().toStdString();
|
||||||
|
|
||||||
|
addr = strtol( s.c_str(), NULL, 16 );
|
||||||
|
|
||||||
|
parent->gotoAddress(addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
void QHexEdit::resetCursor(void)
|
void QHexEdit::resetCursor(void)
|
||||||
{
|
{
|
||||||
cursorBlink = true;
|
cursorBlink = true;
|
||||||
|
@ -1599,6 +1639,13 @@ void QHexEdit::keyPressEvent(QKeyEvent *event)
|
||||||
vbar->setValue( lineOffset );
|
vbar->setValue( lineOffset );
|
||||||
resetCursor();
|
resetCursor();
|
||||||
}
|
}
|
||||||
|
else if (Qt::ControlModifier == event->modifiers())
|
||||||
|
{
|
||||||
|
if ( event->key() == Qt::Key_A )
|
||||||
|
{
|
||||||
|
openGotoAddrDialog();
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (event->key() == Qt::Key_Tab && (cursorPosX < 32) )
|
else if (event->key() == Qt::Key_Tab && (cursorPosX < 32) )
|
||||||
{ // switch from hex to ascii edit
|
{ // switch from hex to ascii edit
|
||||||
cursorPosX = 32 + (cursorPosX / 2);
|
cursorPosX = 32 + (cursorPosX / 2);
|
||||||
|
|
|
@ -113,6 +113,7 @@ class QHexEdit : public QWidget
|
||||||
void setForeGroundColor( QColor fg );
|
void setForeGroundColor( QColor fg );
|
||||||
void setBackGroundColor( QColor bg );
|
void setBackGroundColor( QColor bg );
|
||||||
void memModeUpdate(void);
|
void memModeUpdate(void);
|
||||||
|
void openGotoAddrDialog(void);
|
||||||
int checkMemActivity(void);
|
int checkMemActivity(void);
|
||||||
int getAddr(void){ return cursorAddr; };
|
int getAddr(void){ return cursorAddr; };
|
||||||
|
|
||||||
|
@ -221,6 +222,7 @@ class HexEditorDialog_t : public QDialog
|
||||||
QAction *viewPPU;
|
QAction *viewPPU;
|
||||||
QAction *viewOAM;
|
QAction *viewOAM;
|
||||||
QAction *viewROM;
|
QAction *viewROM;
|
||||||
|
QAction *gotoAddrAct;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -242,6 +244,7 @@ class HexEditorDialog_t : public QDialog
|
||||||
void pickForeGroundColor(void);
|
void pickForeGroundColor(void);
|
||||||
void pickBackGroundColor(void);
|
void pickBackGroundColor(void);
|
||||||
void removeAllBookmarks(void);
|
void removeAllBookmarks(void);
|
||||||
|
void openGotoAddrDialog(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
int hexEditorNumWindows(void);
|
int hexEditorNumWindows(void);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,170 @@
|
||||||
|
// RamSearch.h
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <list>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QCheckBox>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QRadioButton>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QFrame>
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QScrollBar>
|
||||||
|
|
||||||
|
#include "Qt/main.h"
|
||||||
|
|
||||||
|
class QRamSearchView : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
QRamSearchView(QWidget *parent = 0);
|
||||||
|
~QRamSearchView(void);
|
||||||
|
|
||||||
|
void setScrollBars( QScrollBar *hbar, QScrollBar *vbar );
|
||||||
|
|
||||||
|
int getSelAddr(void){ return selAddr; }
|
||||||
|
protected:
|
||||||
|
void paintEvent(QPaintEvent *event);
|
||||||
|
void keyPressEvent(QKeyEvent *event);
|
||||||
|
//void keyReleaseEvent(QKeyEvent *event);
|
||||||
|
void mousePressEvent(QMouseEvent * event);
|
||||||
|
void resizeEvent(QResizeEvent *event);
|
||||||
|
|
||||||
|
int convPixToLine( QPoint p );
|
||||||
|
void calcFontData(void);
|
||||||
|
|
||||||
|
QFont font;
|
||||||
|
QScrollBar *vbar;
|
||||||
|
QScrollBar *hbar;
|
||||||
|
|
||||||
|
int lineOffset;
|
||||||
|
int maxLineOffset;
|
||||||
|
int pxCharWidth;
|
||||||
|
int pxCharHeight;
|
||||||
|
int pxLineSpacing;
|
||||||
|
int pxLineLead;
|
||||||
|
int pxCursorHeight;
|
||||||
|
int pxLineXScroll;
|
||||||
|
int pxLineWidth;
|
||||||
|
int pxColWidth[4];
|
||||||
|
int viewLines;
|
||||||
|
int viewWidth;
|
||||||
|
int viewHeight;
|
||||||
|
int selAddr;
|
||||||
|
int selLine;
|
||||||
|
};
|
||||||
|
|
||||||
|
class RamSearchDialog_t : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
RamSearchDialog_t(QWidget *parent = 0);
|
||||||
|
~RamSearchDialog_t(void);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|
||||||
|
QRamSearchView *ramView;
|
||||||
|
QScrollBar *vbar;
|
||||||
|
QScrollBar *hbar;
|
||||||
|
QTimer *updateTimer;
|
||||||
|
QPushButton *searchButton;
|
||||||
|
QPushButton *resetButton;
|
||||||
|
QPushButton *clearChangeButton;
|
||||||
|
QPushButton *undoButton;
|
||||||
|
QPushButton *elimButton;
|
||||||
|
QPushButton *watchButton;
|
||||||
|
QPushButton *addCheatButton;
|
||||||
|
QPushButton *hexEditButton;
|
||||||
|
|
||||||
|
QRadioButton *lt_btn;
|
||||||
|
QRadioButton *gt_btn;
|
||||||
|
QRadioButton *le_btn;
|
||||||
|
QRadioButton *ge_btn;
|
||||||
|
QRadioButton *eq_btn;
|
||||||
|
QRadioButton *ne_btn;
|
||||||
|
QRadioButton *df_btn;
|
||||||
|
QRadioButton *md_btn;
|
||||||
|
|
||||||
|
QRadioButton *pv_btn;
|
||||||
|
QRadioButton *sv_btn;
|
||||||
|
QRadioButton *sa_btn;
|
||||||
|
QRadioButton *nc_btn;
|
||||||
|
|
||||||
|
QRadioButton *ds1_btn;
|
||||||
|
QRadioButton *ds2_btn;
|
||||||
|
QRadioButton *ds4_btn;
|
||||||
|
|
||||||
|
QRadioButton *signed_btn;
|
||||||
|
QRadioButton *unsigned_btn;
|
||||||
|
QRadioButton *hex_btn;
|
||||||
|
|
||||||
|
QLineEdit *diffByEdit;
|
||||||
|
QLineEdit *moduloEdit;
|
||||||
|
QLineEdit *specValEdit;
|
||||||
|
QLineEdit *specAddrEdit;
|
||||||
|
QLineEdit *numChangeEdit;
|
||||||
|
|
||||||
|
QCheckBox *searchROMCbox;
|
||||||
|
QCheckBox *misalignedCbox;
|
||||||
|
QCheckBox *autoSearchCbox;
|
||||||
|
|
||||||
|
int fontCharWidth;
|
||||||
|
int frameCounterLastPass;
|
||||||
|
unsigned int cycleCounter;
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateRamValues(void);
|
||||||
|
void calcRamList(void);
|
||||||
|
void SearchRelative(void);
|
||||||
|
void SearchSpecificValue(void);
|
||||||
|
void SearchSpecificAddress(void);
|
||||||
|
void SearchNumberChanges(void);
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void closeWindow(void);
|
||||||
|
private slots:
|
||||||
|
void runSearch(void);
|
||||||
|
void resetSearch(void);
|
||||||
|
void undoSearch(void);
|
||||||
|
void clearChangeCounts(void);
|
||||||
|
void eliminateSelAddr(void);
|
||||||
|
void hexEditSelAddr(void);
|
||||||
|
void addCheatClicked(void);
|
||||||
|
void addRamWatchClicked(void);
|
||||||
|
void periodicUpdate(void);
|
||||||
|
void hbarChanged(int val);
|
||||||
|
void vbarChanged(int val);
|
||||||
|
void searchROMChanged(int state);
|
||||||
|
void misalignedChanged(int state);
|
||||||
|
void ds1Clicked(void);
|
||||||
|
void ds2Clicked(void);
|
||||||
|
void ds4Clicked(void);
|
||||||
|
void signedTypeClicked(void);
|
||||||
|
void unsignedTypeClicked(void);
|
||||||
|
void hexTypeClicked(void);
|
||||||
|
void opLtClicked(void);
|
||||||
|
void opGtClicked(void);
|
||||||
|
void opLeClicked(void);
|
||||||
|
void opGeClicked(void);
|
||||||
|
void opEqClicked(void);
|
||||||
|
void opNeClicked(void);
|
||||||
|
void opDfClicked(void);
|
||||||
|
void opMdClicked(void);
|
||||||
|
void pvBtnClicked(void);
|
||||||
|
void svBtnClicked(void);
|
||||||
|
void saBtnClicked(void);
|
||||||
|
void ncBtnClicked(void);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
void openRamSearchWindow(QWidget *parent);
|
|
@ -1,4 +1,4 @@
|
||||||
// HotKeyConf.cpp
|
// RamWatch.cpp
|
||||||
//
|
//
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -28,9 +28,22 @@
|
||||||
#include "Qt/keyscan.h"
|
#include "Qt/keyscan.h"
|
||||||
#include "Qt/fceuWrapper.h"
|
#include "Qt/fceuWrapper.h"
|
||||||
#include "Qt/RamWatch.h"
|
#include "Qt/RamWatch.h"
|
||||||
|
#include "Qt/CheatsConf.h"
|
||||||
#include "Qt/ConsoleUtilities.h"
|
#include "Qt/ConsoleUtilities.h"
|
||||||
|
|
||||||
ramWatchList_t ramWatchList;
|
ramWatchList_t ramWatchList;
|
||||||
|
static RamWatchDialog_t *ramWatchMainWin = NULL;
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void openRamWatchWindow( QWidget *parent, int force )
|
||||||
|
{
|
||||||
|
if ( !force )
|
||||||
|
{
|
||||||
|
if ( ramWatchMainWin != NULL ) return;
|
||||||
|
}
|
||||||
|
ramWatchMainWin = new RamWatchDialog_t(parent);
|
||||||
|
|
||||||
|
ramWatchMainWin->show();
|
||||||
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
RamWatchDialog_t::RamWatchDialog_t(QWidget *parent)
|
RamWatchDialog_t::RamWatchDialog_t(QWidget *parent)
|
||||||
: QDialog( parent )
|
: QDialog( parent )
|
||||||
|
@ -263,6 +276,8 @@ RamWatchDialog_t::RamWatchDialog_t(QWidget *parent)
|
||||||
|
|
||||||
setLayout( mainLayout );
|
setLayout( mainLayout );
|
||||||
|
|
||||||
|
ramWatchMainWin = this;
|
||||||
|
|
||||||
updateTimer = new QTimer( this );
|
updateTimer = new QTimer( this );
|
||||||
|
|
||||||
connect( updateTimer, &QTimer::timeout, this, &RamWatchDialog_t::periodicUpdate );
|
connect( updateTimer, &QTimer::timeout, this, &RamWatchDialog_t::periodicUpdate );
|
||||||
|
@ -273,6 +288,11 @@ RamWatchDialog_t::RamWatchDialog_t(QWidget *parent)
|
||||||
RamWatchDialog_t::~RamWatchDialog_t(void)
|
RamWatchDialog_t::~RamWatchDialog_t(void)
|
||||||
{
|
{
|
||||||
updateTimer->stop();
|
updateTimer->stop();
|
||||||
|
|
||||||
|
if ( ramWatchMainWin == this )
|
||||||
|
{
|
||||||
|
ramWatchMainWin = NULL;
|
||||||
|
}
|
||||||
printf("Destroy RAM Watch Config Window\n");
|
printf("Destroy RAM Watch Config Window\n");
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -898,6 +918,8 @@ void RamWatchDialog_t::addCheatClicked(void)
|
||||||
if ( rw != NULL )
|
if ( rw != NULL )
|
||||||
{
|
{
|
||||||
FCEUI_AddCheat( rw->name.c_str(), rw->addr, GetMem(rw->addr), -1, 1 );
|
FCEUI_AddCheat( rw->name.c_str(), rw->addr, GetMem(rw->addr), -1, 1 );
|
||||||
|
|
||||||
|
updateCheatDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
|
@ -254,3 +254,5 @@ class RamWatchDialog_t : public QDialog
|
||||||
};
|
};
|
||||||
|
|
||||||
extern ramWatchList_t ramWatchList;
|
extern ramWatchList_t ramWatchList;
|
||||||
|
|
||||||
|
void openRamWatchWindow( QWidget *parent, int force = 0 );
|
||||||
|
|
|
@ -64,6 +64,7 @@ static int periodic_saves = 0;
|
||||||
static int mutexLocks = 0;
|
static int mutexLocks = 0;
|
||||||
static int mutexPending = 0;
|
static int mutexPending = 0;
|
||||||
static bool emulatorHasMutux = 0;
|
static bool emulatorHasMutux = 0;
|
||||||
|
static unsigned int emulatorCycleCount = 0;
|
||||||
|
|
||||||
extern double g_fpsScale;
|
extern double g_fpsScale;
|
||||||
|
|
||||||
|
@ -945,6 +946,8 @@ static void DoFun(int frameskip, int periodic_saves)
|
||||||
// opause=FCEUI_EmulationPaused();
|
// opause=FCEUI_EmulationPaused();
|
||||||
// SilenceSound(opause);
|
// SilenceSound(opause);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
emulatorCycleCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void fceuWrapperLock(void)
|
void fceuWrapperLock(void)
|
||||||
|
@ -1019,7 +1022,7 @@ int fceuWrapperUpdate( void )
|
||||||
}
|
}
|
||||||
emulatorHasMutux = 1;
|
emulatorHasMutux = 1;
|
||||||
|
|
||||||
if ( GameInfo && !FCEUI_EmulationPaused() )
|
if ( GameInfo /*&& !FCEUI_EmulationPaused()*/ )
|
||||||
{
|
{
|
||||||
DoFun(frameskip, periodic_saves);
|
DoFun(frameskip, periodic_saves);
|
||||||
|
|
||||||
|
|
|
@ -139,6 +139,7 @@ static uint8 keyonce[SDL_NUM_SCANCODES];
|
||||||
|
|
||||||
int getKeyState( int k )
|
int getKeyState( int k )
|
||||||
{
|
{
|
||||||
|
k = SDL_GetScancodeFromKey(k);
|
||||||
if ( (k >= 0) && (k < SDL_NUM_SCANCODES) )
|
if ( (k >= 0) && (k < SDL_NUM_SCANCODES) )
|
||||||
{
|
{
|
||||||
return g_keyState[k];
|
return g_keyState[k];
|
||||||
|
@ -661,12 +662,13 @@ static void KeyboardCommands (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool frameAdvancing = false;
|
static bool frameAdvancing = false;
|
||||||
if ( _keyonly(Hotkeys[HK_FRAME_ADVANCE]))
|
if ( getKeyState(Hotkeys[HK_FRAME_ADVANCE]))
|
||||||
{
|
{
|
||||||
if (frameAdvancing == false)
|
if (frameAdvancing == false)
|
||||||
{
|
{
|
||||||
FCEUI_FrameAdvance ();
|
FCEUI_FrameAdvance ();
|
||||||
frameAdvancing = true;
|
frameAdvancing = true;
|
||||||
|
//printf("Frame Advance Start\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -675,6 +677,7 @@ static void KeyboardCommands (void)
|
||||||
{
|
{
|
||||||
FCEUI_FrameAdvanceEnd ();
|
FCEUI_FrameAdvanceEnd ();
|
||||||
frameAdvancing = false;
|
frameAdvancing = false;
|
||||||
|
//printf("Frame Advance End\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue