Bug fix for Qt GUI frame advance logic. Updated RamSearch to run after ever completed frame.
This commit is contained in:
parent
25152af42a
commit
1368d0550e
|
@ -22,6 +22,7 @@
|
|||
#include "../../fceu.h"
|
||||
#include "../../cheat.h"
|
||||
#include "../../debug.h"
|
||||
#include "../../movie.h"
|
||||
|
||||
#include "Qt/main.h"
|
||||
#include "Qt/dface.h"
|
||||
|
@ -74,7 +75,9 @@ struct memoryLocation_t
|
|||
};
|
||||
static struct memoryLocation_t memLoc[0x10000];
|
||||
|
||||
static std::list <struct memoryLocation_t*> actvSrchList;
|
||||
static std::list <struct memoryLocation_t*> actvSrchList;
|
||||
static std::list <struct memoryLocation_t*> deactvSrchList;
|
||||
static std::vector <int> deactvFrameStack;
|
||||
|
||||
static int dpySize = 'b';
|
||||
static int dpyType = 's';
|
||||
|
@ -148,7 +151,7 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
|||
undoButton = new QPushButton( tr("Undo") );
|
||||
vbox->addWidget( undoButton );
|
||||
//connect( undoButton, SIGNAL(clicked(void)), this, SLOT(removeWatchClicked(void)));
|
||||
//undoButton->setEnabled(false);
|
||||
undoButton->setEnabled(false);
|
||||
|
||||
searchROMCbox = new QCheckBox( tr("Search ROM") );
|
||||
vbox->addWidget( searchROMCbox );
|
||||
|
@ -297,22 +300,26 @@ RamSearchDialog_t::RamSearchDialog_t(QWidget *parent)
|
|||
|
||||
setLayout( mainLayout );
|
||||
|
||||
cycleCounter = 0;
|
||||
|
||||
resetSearch();
|
||||
|
||||
updateTimer = new QTimer( this );
|
||||
|
||||
connect( updateTimer, &QTimer::timeout, this, &RamSearchDialog_t::periodicUpdate );
|
||||
|
||||
updateTimer->start( 100 ); // 10hz
|
||||
updateTimer->start( 8 ); // ~120hz
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
RamSearchDialog_t::~RamSearchDialog_t(void)
|
||||
{
|
||||
updateTimer->stop();
|
||||
printf("Destroy RAM Watch Config Window\n");
|
||||
printf("Destroy RAM Search Window\n");
|
||||
ramSearchWin = NULL;
|
||||
|
||||
actvSrchList.clear();
|
||||
deactvSrchList.clear();
|
||||
deactvFrameStack.clear();
|
||||
|
||||
for (unsigned int addr=0; addr<0x08000; addr++)
|
||||
{
|
||||
|
@ -322,7 +329,7 @@ RamSearchDialog_t::~RamSearchDialog_t(void)
|
|||
//----------------------------------------------------------------------------
|
||||
void RamSearchDialog_t::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
printf("RAM Watch Close Window Event\n");
|
||||
printf("RAM Search Close Window Event\n");
|
||||
done(0);
|
||||
deleteLater();
|
||||
event->accept();
|
||||
|
@ -337,9 +344,18 @@ void RamSearchDialog_t::closeWindow(void)
|
|||
//----------------------------------------------------------------------------
|
||||
void RamSearchDialog_t::periodicUpdate(void)
|
||||
{
|
||||
updateRamValues();
|
||||
if ( currFrameCounter != frameCounterLastPass )
|
||||
{
|
||||
updateRamValues();
|
||||
|
||||
frameCounterLastPass = currFrameCounter;
|
||||
}
|
||||
|
||||
ramView->update();
|
||||
if ( (cycleCounter % 10) == 0)
|
||||
{
|
||||
ramView->update();
|
||||
}
|
||||
cycleCounter++;
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void RamSearchDialog_t::hbarChanged(int val)
|
||||
|
@ -364,6 +380,15 @@ void RamSearchDialog_t::misalignedChanged(int state)
|
|||
calcRamList();
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
static bool memoryAddrCompare( memoryLocation_t *loc1, memoryLocation_t *loc2 )
|
||||
{
|
||||
return loc1->addr < loc2->addr;
|
||||
}
|
||||
static void sortActvMemList(void)
|
||||
{
|
||||
actvSrchList.sort( memoryAddrCompare );
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
static unsigned int ReadValueAtHardwareAddress(int address, unsigned int size)
|
||||
{
|
||||
unsigned int value = 0;
|
||||
|
@ -389,6 +414,8 @@ void RamSearchDialog_t::runSearch(void)
|
|||
void RamSearchDialog_t::resetSearch(void)
|
||||
{
|
||||
actvSrchList.clear();
|
||||
deactvSrchList.clear();
|
||||
deactvFrameStack.clear();
|
||||
|
||||
for (unsigned int addr=0; addr<0x10000; addr++)
|
||||
{
|
||||
|
@ -601,6 +628,8 @@ void QRamSearchView::calcFontData(void)
|
|||
pxLineWidth = pxColWidth[0] + pxColWidth[1] + pxColWidth[2] + pxColWidth[3];
|
||||
|
||||
viewLines = (viewHeight / pxLineSpacing) + 1;
|
||||
|
||||
setMinimumWidth( pxLineWidth );
|
||||
}
|
||||
//----------------------------------------------------------------------------
|
||||
void QRamSearchView::setScrollBars( QScrollBar *hbar, QScrollBar *vbar )
|
||||
|
|
|
@ -114,6 +114,9 @@ class RamSearchDialog_t : public QDialog
|
|||
QCheckBox *autoSearchCbox;
|
||||
|
||||
int fontCharWidth;
|
||||
int frameCounterLastPass;
|
||||
unsigned int cycleCounter;
|
||||
|
||||
|
||||
private:
|
||||
void updateRamValues(void);
|
||||
|
|
|
@ -64,6 +64,7 @@ static int periodic_saves = 0;
|
|||
static int mutexLocks = 0;
|
||||
static int mutexPending = 0;
|
||||
static bool emulatorHasMutux = 0;
|
||||
static unsigned int emulatorCycleCount = 0;
|
||||
|
||||
extern double g_fpsScale;
|
||||
|
||||
|
@ -945,6 +946,8 @@ static void DoFun(int frameskip, int periodic_saves)
|
|||
// opause=FCEUI_EmulationPaused();
|
||||
// SilenceSound(opause);
|
||||
//}
|
||||
|
||||
emulatorCycleCount++;
|
||||
}
|
||||
|
||||
void fceuWrapperLock(void)
|
||||
|
@ -1019,7 +1022,7 @@ int fceuWrapperUpdate( void )
|
|||
}
|
||||
emulatorHasMutux = 1;
|
||||
|
||||
if ( GameInfo && !FCEUI_EmulationPaused() )
|
||||
if ( GameInfo /*&& !FCEUI_EmulationPaused()*/ )
|
||||
{
|
||||
DoFun(frameskip, periodic_saves);
|
||||
|
||||
|
|
|
@ -139,6 +139,7 @@ static uint8 keyonce[SDL_NUM_SCANCODES];
|
|||
|
||||
int getKeyState( int k )
|
||||
{
|
||||
k = SDL_GetScancodeFromKey(k);
|
||||
if ( (k >= 0) && (k < SDL_NUM_SCANCODES) )
|
||||
{
|
||||
return g_keyState[k];
|
||||
|
@ -661,12 +662,13 @@ static void KeyboardCommands (void)
|
|||
}
|
||||
|
||||
static bool frameAdvancing = false;
|
||||
if ( _keyonly(Hotkeys[HK_FRAME_ADVANCE]))
|
||||
if ( getKeyState(Hotkeys[HK_FRAME_ADVANCE]))
|
||||
{
|
||||
if (frameAdvancing == false)
|
||||
{
|
||||
FCEUI_FrameAdvance ();
|
||||
frameAdvancing = true;
|
||||
//printf("Frame Advance Start\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -675,6 +677,7 @@ static void KeyboardCommands (void)
|
|||
{
|
||||
FCEUI_FrameAdvanceEnd ();
|
||||
frameAdvancing = false;
|
||||
//printf("Frame Advance End\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue