mirror of https://github.com/stella-emu/stella.git
Added tracking of changes directly to the DataGridWidget. That means the
CpuWidget automatically gets this support as well. Still TODO is revamp the loadConfig() method so that updates are only made when absolutely necessary. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@595 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
2fa65c7921
commit
a7fefcd123
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Debugger.cxx,v 1.46 2005-07-02 18:03:09 urchlay Exp $
|
// $Id: Debugger.cxx,v 1.47 2005-07-02 21:15:22 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
@ -731,7 +731,6 @@ string Debugger::disassemble(int start, int lines) {
|
||||||
void Debugger::nextFrame(int frames) {
|
void Debugger::nextFrame(int frames) {
|
||||||
saveRegs();
|
saveRegs();
|
||||||
myOSystem->frameBuffer().advance(frames);
|
myOSystem->frameBuffer().advance(frames);
|
||||||
myBaseDialog->loadConfig();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: CpuWidget.cxx,v 1.7 2005-07-02 18:34:54 stephena Exp $
|
// $Id: CpuWidget.cxx,v 1.8 2005-07-02 21:15:22 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -240,10 +240,7 @@ void CpuWidget::fillGrid()
|
||||||
vlist.push_back(dbg.getX());
|
vlist.push_back(dbg.getX());
|
||||||
vlist.push_back(dbg.getY());
|
vlist.push_back(dbg.getY());
|
||||||
|
|
||||||
// FIXME - show how registers have changed
|
myCpuGrid->setList(alist, vlist);
|
||||||
for(int i = 0; i < 6; ++i)
|
|
||||||
changed.push_back(false);
|
|
||||||
myCpuGrid->setList(alist, vlist, changed);
|
|
||||||
|
|
||||||
// Update the PS register booleans
|
// Update the PS register booleans
|
||||||
BoolArray b;
|
BoolArray b;
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: DataGridWidget.cxx,v 1.5 2005-07-02 18:34:54 stephena Exp $
|
// $Id: DataGridWidget.cxx,v 1.6 2005-07-02 21:15:22 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -64,25 +64,34 @@ DataGridWidget::~DataGridWidget()
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void DataGridWidget::setList(const AddrList& alist, const ValueList& vlist,
|
void DataGridWidget::setList(const AddrList& alist, const ValueList& vlist)
|
||||||
const BoolArray& changed)
|
|
||||||
{
|
{
|
||||||
|
int size = vlist.size(); // assume the alist is the same size
|
||||||
|
assert(size == _rows * _cols);
|
||||||
|
|
||||||
_addrList.clear();
|
_addrList.clear();
|
||||||
_valueList.clear();
|
|
||||||
_addrStringList.clear();
|
_addrStringList.clear();
|
||||||
_valueStringList.clear();
|
_valueStringList.clear();
|
||||||
_changedList.clear();
|
_changedList.clear();
|
||||||
|
|
||||||
_addrList = alist;
|
// Check for any value changes since last time this method was called
|
||||||
|
if(_valueList.size() == 0)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < size; ++i)
|
||||||
|
_changedList.push_back(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(int i = 0; i < size; ++i)
|
||||||
|
_changedList.push_back(_valueList[i] != vlist[i]);
|
||||||
|
}
|
||||||
|
_valueList.clear();
|
||||||
|
_addrList = alist;
|
||||||
_valueList = vlist;
|
_valueList = vlist;
|
||||||
_changedList = changed;
|
|
||||||
|
|
||||||
int size = _addrList.size(); // assume vlist is the same size
|
|
||||||
assert(size == _rows * _cols);
|
|
||||||
|
|
||||||
// An efficiency thing
|
// An efficiency thing
|
||||||
string temp;
|
string temp;
|
||||||
for(unsigned int i = 0; i < (unsigned int)size; ++i)
|
for(int i = 0; i < size; ++i)
|
||||||
{
|
{
|
||||||
temp = instance()->debugger().valueToString(_valueList[i], _base);
|
temp = instance()->debugger().valueToString(_valueList[i], _base);
|
||||||
_valueStringList.push_back(temp);
|
_valueStringList.push_back(temp);
|
||||||
|
@ -101,8 +110,8 @@ void DataGridWidget::setSelectedValue(int value)
|
||||||
_editString = instance()->debugger().valueToString(value, _base);
|
_editString = instance()->debugger().valueToString(value, _base);
|
||||||
|
|
||||||
_valueStringList[_selectedItem] = _editString;
|
_valueStringList[_selectedItem] = _editString;
|
||||||
|
_changedList[_selectedItem] = (_valueList[_selectedItem] != value);
|
||||||
_valueList[_selectedItem] = value;
|
_valueList[_selectedItem] = value;
|
||||||
_changedList[_selectedItem] = true;
|
|
||||||
|
|
||||||
sendCommand(kDGItemDataChangedCmd, _selectedItem);
|
sendCommand(kDGItemDataChangedCmd, _selectedItem);
|
||||||
}
|
}
|
||||||
|
@ -347,7 +356,6 @@ void DataGridWidget::drawWidget(bool hilite)
|
||||||
fb.frameRect(x - 4, y - 2, _colWidth+1, kLineHeight+1, kTextColorHi);
|
fb.frameRect(x - 4, y - 2, _colWidth+1, kLineHeight+1, kTextColorHi);
|
||||||
}
|
}
|
||||||
|
|
||||||
//cerr << "pos " << pos << ": " << _changedList[pos] << endl;
|
|
||||||
if (_selectedItem == pos && _editMode)
|
if (_selectedItem == pos && _editMode)
|
||||||
{
|
{
|
||||||
buffer = _editString;
|
buffer = _editString;
|
||||||
|
@ -359,6 +367,9 @@ void DataGridWidget::drawWidget(bool hilite)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if(_changedList[pos])
|
||||||
|
fb.fillRect(x - 3, y - 1, _colWidth-1, kLineHeight-1, kTextColorEm);
|
||||||
|
|
||||||
buffer = _valueStringList[pos];
|
buffer = _valueStringList[pos];
|
||||||
deltax = 0;
|
deltax = 0;
|
||||||
fb.drawString(_font, buffer, x, y, _colWidth, kTextColor);
|
fb.drawString(_font, buffer, x, y, _colWidth, kTextColor);
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: DataGridWidget.hxx,v 1.3 2005-07-02 18:34:54 stephena Exp $
|
// $Id: DataGridWidget.hxx,v 1.4 2005-07-02 21:15:22 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -50,8 +50,7 @@ class DataGridWidget : public EditableWidget, public CommandSender
|
||||||
int colchars, int range, BaseFormat format = kBASE_DEFAULT);
|
int colchars, int range, BaseFormat format = kBASE_DEFAULT);
|
||||||
virtual ~DataGridWidget();
|
virtual ~DataGridWidget();
|
||||||
|
|
||||||
void setList(const AddrList& alist, const ValueList& vlist,
|
void setList(const AddrList& alist, const ValueList& vlist);
|
||||||
const BoolArray& changedlist);
|
|
||||||
void setSelectedValue(int value);
|
void setSelectedValue(int value);
|
||||||
|
|
||||||
int getSelectedAddr() const { return _addrList[_selectedItem]; }
|
int getSelectedAddr() const { return _addrList[_selectedItem]; }
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: RamWidget.cxx,v 1.10 2005-07-02 18:34:54 stephena Exp $
|
// $Id: RamWidget.cxx,v 1.11 2005-07-02 21:15:22 stephena Exp $
|
||||||
//
|
//
|
||||||
// Based on code from ScummVM - Scumm Interpreter
|
// Based on code from ScummVM - Scumm Interpreter
|
||||||
// Copyright (C) 2002-2004 The ScummVM project
|
// Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
@ -231,15 +231,12 @@ void RamWidget::fillGrid()
|
||||||
{
|
{
|
||||||
AddrList alist;
|
AddrList alist;
|
||||||
ValueList vlist;
|
ValueList vlist;
|
||||||
BoolArray changed;
|
|
||||||
|
|
||||||
Debugger& dbg = instance()->debugger();
|
|
||||||
for(unsigned int i = 0; i < kRamSize; i++)
|
for(unsigned int i = 0; i < kRamSize; i++)
|
||||||
{
|
{
|
||||||
alist.push_back(kRamStart + i);
|
alist.push_back(kRamStart + i);
|
||||||
vlist.push_back(dbg.readRAM(i));
|
vlist.push_back(instance()->debugger().readRAM(i));
|
||||||
changed.push_back(dbg.ramChanged(i));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
myRamGrid->setList(alist, vlist, changed);
|
myRamGrid->setList(alist, vlist);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue