First pass at TiaInfoWidget, which uses the area to the right of

the TIA image to show frame/scanline related info.  In the future,
this area will also show a zoomed region of the current TIA image,
as well as a small message window.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@689 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2005-07-21 19:30:17 +00:00
parent a9e007ca24
commit 042977d4cf
12 changed files with 230 additions and 55 deletions

View File

@ -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: CpuDebug.hxx,v 1.7 2005-07-19 01:31:36 urchlay Exp $ // $Id: CpuDebug.hxx,v 1.8 2005-07-21 19:29:59 stephena Exp $
//============================================================================ //============================================================================
#ifndef CPU_DEBUG_HXX #ifndef CPU_DEBUG_HXX
@ -53,7 +53,7 @@ class CpuDebug : public DebuggerSystem
int disassemble(int address, char* buffer, EquateList* equateList); int disassemble(int address, char* buffer, EquateList* equateList);
int dPeek(int address); int dPeek(int address);
int getBank(); int getBank();
int pc() { return mySystem->m6502().PC; } int pc() { return mySystem->m6502().PC; }
int sp() { return mySystem->m6502().SP; } int sp() { return mySystem->m6502().SP; }
@ -65,7 +65,7 @@ class CpuDebug : public DebuggerSystem
int n() { return mySystem->m6502().N; } int n() { return mySystem->m6502().N; }
int v() { return mySystem->m6502().V; } int v() { return mySystem->m6502().V; }
int b() { return mySystem->m6502().B; } int b() { return mySystem->m6502().B; }
int d() { return mySystem->m6502().D; } int d() { return mySystem->m6502().D; }
int i() { return mySystem->m6502().I; } int i() { return mySystem->m6502().I; }
int z() { return !mySystem->m6502().notZ; } int z() { return !mySystem->m6502().notZ; }
int c() { return mySystem->m6502().C; } int c() { return mySystem->m6502().C; }

View File

@ -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.74 2005-07-21 04:10:15 urchlay Exp $ // $Id: Debugger.cxx,v 1.75 2005-07-21 19:30:14 stephena Exp $
//============================================================================ //============================================================================
#include "bspf.hxx" #include "bspf.hxx"
@ -38,6 +38,7 @@
#include "RamDebug.hxx" #include "RamDebug.hxx"
#include "TIADebug.hxx" #include "TIADebug.hxx"
#include "TiaInfoWidget.hxx"
#include "TiaOutputWidget.hxx" #include "TiaOutputWidget.hxx"
#include "Expression.hxx" #include "Expression.hxx"
@ -54,6 +55,7 @@ Debugger::Debugger(OSystem* osystem)
myCpuDebug(NULL), myCpuDebug(NULL),
myRamDebug(NULL), myRamDebug(NULL),
myTiaDebug(NULL), myTiaDebug(NULL),
myTiaInfo(NULL),
myTiaOutput(NULL), myTiaOutput(NULL),
equateList(NULL), equateList(NULL),
breakPoints(NULL), breakPoints(NULL),
@ -97,9 +99,10 @@ void Debugger::initialize()
delete myBaseDialog; delete myBaseDialog;
DebuggerDialog *dd = new DebuggerDialog(myOSystem, this, DebuggerDialog *dd = new DebuggerDialog(myOSystem, this,
r.left, r.top, r.width(), r.height()); r.left, r.top, r.width(), r.height());
myPrompt = dd->prompt();
myBaseDialog = dd; myBaseDialog = dd;
myPrompt = dd->prompt();
myTiaInfo = dd->tiaInfo();
myTiaOutput = dd->tiaOutput(); myTiaOutput = dd->tiaOutput();
// set up any breakpoint that was on the command line // set up any breakpoint that was on the command line
@ -601,6 +604,8 @@ int Debugger::step()
mySystem->m6502().execute(1); mySystem->m6502().execute(1);
mySystem->lockDataBus(); mySystem->lockDataBus();
myBaseDialog->loadConfig();
return mySystem->cycles() - cyc; return mySystem->cycles() - cyc;
} }
@ -631,6 +636,7 @@ int Debugger::trace()
mySystem->m6502().execute(1); mySystem->m6502().execute(1);
mySystem->lockDataBus(); mySystem->lockDataBus();
myBaseDialog->loadConfig();
return mySystem->cycles() - cyc; return mySystem->cycles() - cyc;
} else { } else {
@ -725,6 +731,7 @@ void Debugger::nextScanline(int lines) {
mySystem->unlockDataBus(); mySystem->unlockDataBus();
myTiaOutput->advanceScanline(lines); myTiaOutput->advanceScanline(lines);
mySystem->lockDataBus(); mySystem->lockDataBus();
myBaseDialog->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -733,6 +740,7 @@ void Debugger::nextFrame(int frames) {
mySystem->unlockDataBus(); mySystem->unlockDataBus();
myTiaOutput->advance(frames); myTiaOutput->advance(frames);
mySystem->lockDataBus(); mySystem->lockDataBus();
myBaseDialog->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -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.hxx,v 1.59 2005-07-21 03:26:58 urchlay Exp $ // $Id: Debugger.hxx,v 1.60 2005-07-21 19:30:15 stephena Exp $
//============================================================================ //============================================================================
#ifndef DEBUGGER_HXX #ifndef DEBUGGER_HXX
@ -25,6 +25,7 @@ class System;
class CpuDebug; class CpuDebug;
class RamDebug; class RamDebug;
class TIADebug; class TIADebug;
class TiaInfoWidget;
class TiaOutputWidget; class TiaOutputWidget;
class Expression; class Expression;
@ -73,7 +74,7 @@ typedef uInt16 (Debugger::*DEBUGGER_WORD_METHOD)();
for all debugging operations in Stella (parser, 6502 debugger, etc). for all debugging operations in Stella (parser, 6502 debugger, etc).
@author Stephen Anthony @author Stephen Anthony
@version $Id: Debugger.hxx,v 1.59 2005-07-21 03:26:58 urchlay Exp $ @version $Id: Debugger.hxx,v 1.60 2005-07-21 19:30:15 stephena Exp $
*/ */
class Debugger : public DialogContainer class Debugger : public DialogContainer
{ {
@ -333,6 +334,7 @@ class Debugger : public DialogContainer
RamDebug* myRamDebug; RamDebug* myRamDebug;
TIADebug* myTiaDebug; TIADebug* myTiaDebug;
TiaInfoWidget* myTiaInfo;
TiaOutputWidget* myTiaOutput; TiaOutputWidget* myTiaOutput;
EquateList *equateList; EquateList *equateList;

View File

@ -0,0 +1,133 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
//
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: TiaInfoWidget.cxx,v 1.1 2005-07-21 19:30:15 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
//============================================================================
#include "OSystem.hxx"
#include "FrameBuffer.hxx"
#include "Debugger.hxx"
#include "TIADebug.hxx"
#include "Widget.hxx"
#include "EditTextWidget.hxx"
#include "GuiObject.hxx"
#include "TiaInfoWidget.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TiaInfoWidget::TiaInfoWidget(GuiObject* boss, int x, int y, int w, int h)
: Widget(boss, x, y, w, h),
CommandSender(boss)
{
int xpos = x, ypos = y, lwidth = 45;
const GUI::Font& font = instance()->consoleFont();
// Add frame info
xpos = x + 10; ypos = y + 10;
new StaticTextWidget(boss, xpos, ypos, lwidth, kLineHeight, "Frame:", kTextAlignLeft);
xpos += lwidth;
myFrameCount = new EditTextWidget(boss, xpos, ypos-2, 45, kLineHeight, "");
myFrameCount->clearFlags(WIDGET_TAB_NAVIGATE);
myFrameCount->setFont(font);
myFrameCount->setEditable(false);
xpos = x + 10; ypos += kLineHeight + 5;
new StaticTextWidget(boss, xpos, ypos, lwidth, kLineHeight, "F. Cycles:", kTextAlignLeft);
xpos += lwidth;
myFrameCycles = new EditTextWidget(boss, xpos, ypos-2, 45, kLineHeight, "");
myFrameCycles->clearFlags(WIDGET_TAB_NAVIGATE);
myFrameCycles->setFont(font);
myFrameCycles->setEditable(false);
xpos = x + 20; ypos += kLineHeight + 5;
myVSync = new CheckboxWidget(boss, xpos, ypos-3, 25, kLineHeight, "VSync", 0);
myVSync->clearFlags(WIDGET_TAB_NAVIGATE);
myVSync->setEditable(false);
xpos = x + 20; ypos += kLineHeight + 5;
myVBlank = new CheckboxWidget(boss, xpos, ypos-3, 30, kLineHeight, "VBlank", 0);
myVBlank->clearFlags(WIDGET_TAB_NAVIGATE);
myVBlank->setEditable(false);
xpos = x + 10 + 100; ypos = y + 10;
new StaticTextWidget(boss, xpos, ypos, lwidth, kLineHeight, "Scanline:", kTextAlignLeft);
xpos += lwidth;
myScanlineCount = new EditTextWidget(boss, xpos, ypos-2, 30, kLineHeight, "");
myScanlineCount->clearFlags(WIDGET_TAB_NAVIGATE);
myScanlineCount->setFont(font);
myScanlineCount->setEditable(false);
xpos = x + 10 + 100; ypos += kLineHeight + 5;
new StaticTextWidget(boss, xpos, ypos, lwidth, kLineHeight, "S. Cycles:", kTextAlignLeft);
xpos += lwidth;
myScanlineCycles = new EditTextWidget(boss, xpos, ypos-2, 30, kLineHeight, "");
myScanlineCycles->clearFlags(WIDGET_TAB_NAVIGATE);
myScanlineCycles->setFont(font);
myScanlineCycles->setEditable(false);
xpos = x + 10 + 100; ypos += kLineHeight + 5;
new StaticTextWidget(boss, xpos, ypos, lwidth, kLineHeight, "Pixel Pos:", kTextAlignLeft);
xpos += lwidth;
myPixelPosition = new EditTextWidget(boss, xpos, ypos-2, 30, kLineHeight, "");
myPixelPosition->clearFlags(WIDGET_TAB_NAVIGATE);
myPixelPosition->setFont(font);
myPixelPosition->setEditable(false);
xpos = x + 10 + 100; ypos += kLineHeight + 5;
new StaticTextWidget(boss, xpos, ypos, lwidth, kLineHeight, "Color Clk:", kTextAlignLeft);
xpos += lwidth;
myColorClocks = new EditTextWidget(boss, xpos, ypos-2, 30, kLineHeight, "");
myColorClocks->clearFlags(WIDGET_TAB_NAVIGATE);
myColorClocks->setFont(font);
myColorClocks->setEditable(false);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TiaInfoWidget::~TiaInfoWidget()
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaInfoWidget::handleMouseDown(int x, int y, int button, int clickCount)
{
cerr << "TiaInfoWidget button press: x = " << x << ", y = " << y << endl;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaInfoWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TiaInfoWidget::loadConfig()
{
Debugger& dbg = instance()->debugger();
TIADebug& tia = dbg.tiaDebug();
myFrameCount->setEditString(dbg.valueToString(tia.frameCount(), kBASE_10));
myFrameCycles->setEditString(dbg.valueToString(dbg.cycles(), kBASE_10));
myVSync->setState(tia.vsync());
myVBlank->setState(tia.vblank());
int clk = tia.clocksThisLine();
myScanlineCount->setEditString(dbg.valueToString(tia.scanlines(), kBASE_10));
myScanlineCycles->setEditString(dbg.valueToString(clk/3, kBASE_10));
myPixelPosition->setEditString(dbg.valueToString(clk-68, kBASE_10));
myColorClocks->setEditString(dbg.valueToString(clk, kBASE_10));
}

View File

@ -0,0 +1,57 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
//
// See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//
// $Id: TiaInfoWidget.hxx,v 1.1 2005-07-21 19:30:15 stephena Exp $
//
// Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project
//============================================================================
#ifndef TIA_INFO_WIDGET_HXX
#define TIA_INFO_WIDGET_HXX
class GuiObject;
class EditTextWidget;
#include "Widget.hxx"
#include "Command.hxx"
class TiaInfoWidget : public Widget, public CommandSender
{
public:
TiaInfoWidget(GuiObject *boss, int x, int y, int w, int h);
virtual ~TiaInfoWidget();
void loadConfig();
protected:
void handleMouseDown(int x, int y, int button, int clickCount);
void handleCommand(CommandSender* sender, int cmd, int data, int id);
private:
EditTextWidget* myFrameCount;
EditTextWidget* myFrameCycles;
EditTextWidget* myScanlineCount;
EditTextWidget* myScanlineCycles;
EditTextWidget* myPixelPosition;
EditTextWidget* myColorClocks;
CheckboxWidget* myVSync;
CheckboxWidget* myVBlank;
};
#endif

View File

@ -40,6 +40,7 @@ MODULE_OBJS := \
src/debugger/CpuDebug.o \ src/debugger/CpuDebug.o \
src/debugger/RamDebug.o \ src/debugger/RamDebug.o \
src/debugger/TIADebug.o \ src/debugger/TIADebug.o \
src/debugger/TiaInfoWidget.o \
src/debugger/TiaOutputWidget.o src/debugger/TiaOutputWidget.o
MODULE_DIRS += \ MODULE_DIRS += \

View File

@ -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: DebuggerDialog.cxx,v 1.26 2005-07-19 17:59:59 stephena Exp $ // $Id: DebuggerDialog.cxx,v 1.27 2005-07-21 19:30:16 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
@ -23,6 +23,7 @@
#include "Dialog.hxx" #include "Dialog.hxx"
#include "TabWidget.hxx" #include "TabWidget.hxx"
#include "TiaOutputWidget.hxx" #include "TiaOutputWidget.hxx"
#include "TiaInfoWidget.hxx"
#include "PromptWidget.hxx" #include "PromptWidget.hxx"
#include "CpuWidget.hxx" #include "CpuWidget.hxx"
#include "RamWidget.hxx" #include "RamWidget.hxx"
@ -61,6 +62,7 @@ DebuggerDialog::~DebuggerDialog()
void DebuggerDialog::loadConfig() void DebuggerDialog::loadConfig()
{ {
myTab->loadConfig(); myTab->loadConfig();
myTiaInfo->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -194,37 +196,31 @@ void DebuggerDialog::addTabArea()
void DebuggerDialog::addStatusArea() void DebuggerDialog::addStatusArea()
{ {
GUI::Rect r = instance()->debugger().getStatusBounds(); GUI::Rect r = instance()->debugger().getStatusBounds();
myTiaInfo = new TiaInfoWidget(this, r.left, r.top, r.width(), r.height());
new StaticTextWidget(this, r.left, r.top, 100, kLineHeight,
"Just a test", kTextAlignLeft);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DebuggerDialog::doStep() void DebuggerDialog::doStep()
{ {
instance()->debugger().step(); instance()->debugger().step();
myTab->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DebuggerDialog::doTrace() void DebuggerDialog::doTrace()
{ {
instance()->debugger().trace(); instance()->debugger().trace();
myTab->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DebuggerDialog::doAdvance() void DebuggerDialog::doAdvance()
{ {
instance()->debugger().nextFrame(1); instance()->debugger().nextFrame(1);
myTab->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DebuggerDialog::doScanlineAdvance() void DebuggerDialog::doScanlineAdvance()
{ {
instance()->debugger().nextScanline(1); instance()->debugger().nextScanline(1);
myTab->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -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: DebuggerDialog.hxx,v 1.13 2005-07-19 17:59:59 stephena Exp $ // $Id: DebuggerDialog.hxx,v 1.14 2005-07-21 19:30:16 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
@ -26,6 +26,7 @@ class Debugger;
class OSystem; class OSystem;
class DialogContainer; class DialogContainer;
class TabWidget; class TabWidget;
class TiaInfoWidget;
class TiaOutputWidget; class TiaOutputWidget;
#include "Dialog.hxx" #include "Dialog.hxx"
@ -38,7 +39,8 @@ class DebuggerDialog : public Dialog
int x, int y, int w, int h); int x, int y, int w, int h);
~DebuggerDialog(); ~DebuggerDialog();
PromptWidget* prompt() { return myPrompt; } PromptWidget* prompt() { return myPrompt; }
TiaInfoWidget* tiaInfo() { return myTiaInfo; }
TiaOutputWidget* tiaOutput() { return myTiaOutput; } TiaOutputWidget* tiaOutput() { return myTiaOutput; }
virtual void loadConfig(); virtual void loadConfig();
@ -47,8 +49,10 @@ class DebuggerDialog : public Dialog
protected: protected:
TabWidget* myTab; TabWidget* myTab;
PromptWidget* myPrompt;
TiaInfoWidget* myTiaInfo;
TiaOutputWidget* myTiaOutput; TiaOutputWidget* myTiaOutput;
PromptWidget *myPrompt;
private: private:
void addTiaArea(); void addTiaArea();

View File

@ -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: TiaWidget.cxx,v 1.11 2005-07-14 23:47:17 stephena Exp $ // $Id: TiaWidget.cxx,v 1.12 2005-07-21 19:30:17 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
@ -105,27 +105,6 @@ TiaWidget::TiaWidget(GuiObject* boss, int x, int y, int w, int h)
myBinValue->setFont(font); myBinValue->setFont(font);
myBinValue->setEditable(false); myBinValue->setEditable(false);
// Scanline count and VSync/VBlank toggles
xpos = 10; ypos += 2 * kLineHeight;
new StaticTextWidget(boss, xpos, ypos, 40, kLineHeight, "Scanline: ", kTextAlignLeft);
xpos += 40;
myScanlines = new EditTextWidget(boss, xpos, ypos-2, 40, kLineHeight, "");
myScanlines->clearFlags(WIDGET_TAB_NAVIGATE);
myScanlines->setFont(font);
myScanlines->setEditable(false);
xpos += 55; ypos -= 3;
myVSync = new CheckboxWidget(boss, xpos, ypos, 25, kLineHeight, "VSync",
kCheckActionCmd);
myVSync->setTarget(this);
myVSync->setID(kVSyncID);
myVSync->setFlags(WIDGET_TAB_NAVIGATE);
xpos += 60;
myVBlank = new CheckboxWidget(boss, xpos, ypos, 30, kLineHeight, "VBlank",
kCheckActionCmd);
myVBlank->setTarget(this);
myVBlank->setID(kVBlankID);
myVBlank->setFlags(WIDGET_TAB_NAVIGATE);
// Color registers // Color registers
const char* regNames[] = { "COLUP0", "COLUP1", "COLUPF", "COLUBK" }; const char* regNames[] = { "COLUP0", "COLUP1", "COLUPF", "COLUBK" };
xpos = 10; ypos += 2* kLineHeight; xpos = 10; ypos += 2* kLineHeight;
@ -267,11 +246,6 @@ void TiaWidget::fillGrid()
} }
myRamGrid->setList(alist, vlist, changed); myRamGrid->setList(alist, vlist, changed);
// Scanline and VSync/VBlank
myScanlines->setEditString(dbg.valueToString(tia.scanlines(), kBASE_10));
myVSync->setState(tia.vsync());
myVBlank->setState(tia.vblank());
// Color registers // Color registers
alist.clear(); vlist.clear(); changed.clear(); alist.clear(); vlist.clear(); changed.clear();
for(unsigned int i = 0; i < 4; i++) for(unsigned int i = 0; i < 4; i++)

View File

@ -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: TiaWidget.hxx,v 1.6 2005-07-14 23:47:17 stephena Exp $ // $Id: TiaWidget.hxx,v 1.7 2005-07-21 19:30:17 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
@ -56,10 +56,6 @@ class TiaWidget : public Widget, public CommandSender
EditTextWidget* myDecValue; EditTextWidget* myDecValue;
EditTextWidget* myLabel; EditTextWidget* myLabel;
EditTextWidget* myScanlines;
CheckboxWidget* myVSync;
CheckboxWidget* myVBlank;
DataGridWidget* myColorRegs; DataGridWidget* myColorRegs;
ColorWidget* myCOLUP0Color; ColorWidget* myCOLUP0Color;

View File

@ -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: Widget.cxx,v 1.24 2005-07-14 18:28:36 stephena Exp $ // $Id: Widget.cxx,v 1.25 2005-07-21 19:30:17 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
@ -387,7 +387,8 @@ static unsigned int checked_img[8] =
CheckboxWidget::CheckboxWidget(GuiObject *boss, int x, int y, int w, int h, CheckboxWidget::CheckboxWidget(GuiObject *boss, int x, int y, int w, int h,
const string& label, int cmd, uInt8 hotkey) const string& label, int cmd, uInt8 hotkey)
: ButtonWidget(boss, x, y, w, h, label, cmd, hotkey), : ButtonWidget(boss, x, y, w, h, label, cmd, hotkey),
_state(false) _state(false),
_editable(true)
{ {
_flags = WIDGET_ENABLED; _flags = WIDGET_ENABLED;
_type = kCheckboxWidget; _type = kCheckboxWidget;
@ -396,7 +397,7 @@ CheckboxWidget::CheckboxWidget(GuiObject *boss, int x, int y, int w, int h,
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CheckboxWidget::handleMouseUp(int x, int y, int button, int clickCount) void CheckboxWidget::handleMouseUp(int x, int y, int button, int clickCount)
{ {
if(isEnabled() && x >= 0 && x < _w && y >= 0 && y < _h) if(isEnabled() && _editable && x >= 0 && x < _w && y >= 0 && y < _h)
{ {
toggleState(); toggleState();

View File

@ -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: Widget.hxx,v 1.24 2005-07-14 23:47:17 stephena Exp $ // $Id: Widget.hxx,v 1.25 2005-07-21 19:30:17 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
@ -69,7 +69,7 @@ enum {
This is the base class for all widgets. This is the base class for all widgets.
@author Stephen Anthony @author Stephen Anthony
@version $Id: Widget.hxx,v 1.24 2005-07-14 23:47:17 stephena Exp $ @version $Id: Widget.hxx,v 1.25 2005-07-21 19:30:17 stephena Exp $
*/ */
class Widget : public GuiObject class Widget : public GuiObject
{ {
@ -221,6 +221,8 @@ class CheckboxWidget : public ButtonWidget
virtual void handleMouseEntered(int button) {} virtual void handleMouseEntered(int button) {}
virtual void handleMouseLeft(int button) {} virtual void handleMouseLeft(int button) {}
void setEditable(bool editable) { _editable = editable; }
void setState(bool state); void setState(bool state);
void toggleState() { setState(!_state); } void toggleState() { setState(!_state); }
bool getState() const { return _state; } bool getState() const { return _state; }
@ -230,6 +232,7 @@ class CheckboxWidget : public ButtonWidget
protected: protected:
bool _state; bool _state;
bool _editable;
}; };