Updated 'Fixed Debug Colors' for PAL mode to more closely match the ones

in NTSC.

First pass at disassembly of ZP RAM in the debugger UI.  For now, the
entire range is disassembled, with no regard for alignment (so the PC
won't necessarily always line up with the disassembly).  Also, changes
to RAM don't yet trigger a re-disassembly.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1867 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2009-08-30 19:37:10 +00:00
parent 8f8095073b
commit 33130a78f0
6 changed files with 19 additions and 16 deletions

View File

@ -608,8 +608,11 @@ const string& Debugger::disassemble(int start, int lines)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Debugger::disassemble(IntArray& addr, StringList& addrLabel, void Debugger::disassemble(IntArray& addr, StringList& addrLabel,
StringList& bytes, StringList& data, StringList& bytes, StringList& data,
int start, int lines) int start, int end)
{ {
if(start < 0x80 || end > 0xffff)
return;
string cpubuf, tmp; string cpubuf, tmp;
char buf[255]; char buf[255];
@ -630,7 +633,7 @@ void Debugger::disassemble(IntArray& addr, StringList& addrLabel,
data.push_back(cpubuf); data.push_back(cpubuf);
} }
while(--lines > 0 && start <= 0xffff); while(start <= end);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -177,12 +177,12 @@ class Debugger : public DialogContainer
const string& disassemble(int start, int lines); const string& disassemble(int start, int lines);
/** /**
Disassemble from the starting address the specified number of lines Disassemble from the starting address to the ending address
and place addresses, bytes and data in given arrays. and place addresses, bytes and data in given arrays.
*/ */
void disassemble(IntArray& addr, StringList& addrLabel, void disassemble(IntArray& addr, StringList& addrLabel,
StringList& bytes, StringList& data, StringList& bytes, StringList& data,
int start, int lines); int start, int end);
void autoExec(); void autoExec();

View File

@ -27,8 +27,7 @@
RomListWidget::RomListWidget(GuiObject* boss, const GUI::Font& font, RomListWidget::RomListWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int w, int h) int x, int y, int w, int h)
: CheckListWidget(boss, font, x, y, w, h), : CheckListWidget(boss, font, x, y, w, h),
myMenu(NULL), myMenu(NULL)
myHighlightedItem(-1)
{ {
_type = kRomListWidget; _type = kRomListWidget;

View File

@ -53,7 +53,6 @@ class RomListWidget : public CheckListWidget
private: private:
ContextMenu* myMenu; ContextMenu* myMenu;
int myHighlightedItem;
int myLabelWidth; int myLabelWidth;
int myBytesWidth; int myBytesWidth;

View File

@ -179,8 +179,9 @@ void RomWidget::loadConfig()
myCurrentBank = dbg.getBank(); myCurrentBank = dbg.getBank();
// Update romlist to point to current PC // Update romlist to point to current PC
// Take mirroring of PC into account // Take mirroring of PC into account, as well as zero-page RAM
int pc = dbg.cpuDebug().pc() | 0xe000; int pc = dbg.cpuDebug().pc();
if(pc & 0x1000) pc |= 0xe000;
AddrToLine::iterator iter = myLineList.find(pc); AddrToLine::iterator iter = myLineList.find(pc);
// if current PC not found, do an update (we're executing what // if current PC not found, do an update (we're executing what
@ -232,8 +233,9 @@ void RomWidget::initialUpdate()
StringList label, data, disasm; StringList label, data, disasm;
BoolArray state; BoolArray state;
// Disassemble entire bank (up to 4096 lines) and reset breakpoints // Disassemble zero-page RAM and entire bank and reset breakpoints
dbg.disassemble(myAddrList, label, data, disasm, 0xf000, 4096); dbg.disassemble(myAddrList, label, data, disasm, 0x80, 0xff);
dbg.disassemble(myAddrList, label, data, disasm, 0xf000, 0xffff);
for(unsigned int i = 0; i < data.size(); ++i) for(unsigned int i = 0; i < data.size(); ++i)
{ {
if(bp.isSet(myAddrList[i])) if(bp.isSet(myAddrList[i]))

View File

@ -176,10 +176,10 @@ void TIA::reset()
} }
else else
{ {
myFixedColor[_P0] = 0x30303030; // TODO - fix these for PAL myFixedColor[_P0] = 0x62626262;
myFixedColor[_P1] = 0x16161616; myFixedColor[_P1] = 0x26262626;
myFixedColor[_PF] = 0x76767676; myFixedColor[_PF] = 0xd8d8d8d8;
myFixedColor[_BK] = 0x0a0a0a0a; myFixedColor[_BK] = 0x1c1c1c1c;
myFixedColor[_HBLANK] = 0x0e0e0e0e; myFixedColor[_HBLANK] = 0x0e0e0e0e;
myColorLossEnabled = true; myColorLossEnabled = true;
myMaximumNumberOfScanlines = 342; myMaximumNumberOfScanlines = 342;
@ -1583,7 +1583,7 @@ void TIA::greyOutFrame()
if(c > (myFrameHeight + myFrameYStart)) if(c > (myFrameHeight + myFrameYStart))
return; return;
cerr << "greying frame from scanline " << c << endl; //cerr << "greying frame from scanline " << c << endl;
uInt8* buffer = myCurrentFrameBuffer + myFramePointerOffset; uInt8* buffer = myCurrentFrameBuffer + myFramePointerOffset;
for(uInt32 s = c; s < (myFrameHeight + myFrameYStart); ++s) for(uInt32 s = c; s < (myFrameHeight + myFrameYStart); ++s)