mirror of https://github.com/stella-emu/stella.git
Added ability for the debugger to start up in 'fatal error' mode.
This basically shows a messagebox as soon as the debugger starts, describing the error and offering the choice to continue debugging or exiting the ROM entirely. The DPC+ code now catches fatal errors from the Thumb ARM emulation code and shows it as a fatal error in the debugger. This means you no longer need to look at the commandline for this output, and you immediately know that something has gone wrong. Added 'exitrom' debugger parser command, which completely exits from the debugger *and* the ROM, going back to the ROM launcher. Cleaned up the API a little, rearranging some classes and adding references instead of pointers. More work to be done in this area. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2234 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
db46773ea1
commit
bc7daa397e
|
@ -15,9 +15,6 @@
|
|||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
//============================================================================
|
||||
|
||||
#ifndef STRING_LIST_HXX
|
|
@ -0,0 +1,49 @@
|
|||
//============================================================================
|
||||
//
|
||||
// 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-2011 by Bradford W. Mott, Stephen Anthony
|
||||
// and the Stella Team
|
||||
//
|
||||
// See the file "License.txt" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id$
|
||||
//============================================================================
|
||||
|
||||
#ifndef STRING_PARSER_HXX
|
||||
#define STRING_PARSER_HXX
|
||||
|
||||
#include "StringList.hxx"
|
||||
#include "bspf.hxx"
|
||||
|
||||
/**
|
||||
This class converts a string into a StringList by splitting on a delimiter.
|
||||
By default, the delimiter is a newline.
|
||||
|
||||
@author Stephen Anthony
|
||||
*/
|
||||
class StringParser
|
||||
{
|
||||
public:
|
||||
StringParser(const string& str, char delim = '\n')
|
||||
{
|
||||
stringstream buf(str);
|
||||
string line;
|
||||
while(std::getline(buf, line, delim))
|
||||
myStringList.push_back(line);
|
||||
}
|
||||
|
||||
const StringList& stringList() const { return myStringList; }
|
||||
|
||||
private:
|
||||
StringList myStringList;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
#include <cstdlib>
|
||||
|
||||
#define STELLA_VERSION "3.4_svn1"
|
||||
#define STELLA_VERSION "3.4_beta1"
|
||||
#define STELLA_BUILD atoi("$Rev$" + 6)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -112,15 +112,12 @@ Debugger::Debugger(OSystem* osystem)
|
|||
: DialogContainer(osystem),
|
||||
myConsole(NULL),
|
||||
mySystem(NULL),
|
||||
myDialog(NULL),
|
||||
myParser(NULL),
|
||||
myCartDebug(NULL),
|
||||
myCpuDebug(NULL),
|
||||
myRiotDebug(NULL),
|
||||
myTiaDebug(NULL),
|
||||
myTiaInfo(NULL),
|
||||
myTiaOutput(NULL),
|
||||
myTiaZoom(NULL),
|
||||
myRom(NULL),
|
||||
myBreakPoints(NULL),
|
||||
myReadTraps(NULL),
|
||||
myWriteTraps(NULL),
|
||||
|
@ -172,19 +169,12 @@ void Debugger::initialize()
|
|||
|
||||
const GUI::Rect& r = getDialogBounds();
|
||||
|
||||
delete myBaseDialog;
|
||||
DebuggerDialog *dd = new DebuggerDialog(myOSystem, this,
|
||||
r.left, r.top, r.width(), r.height());
|
||||
myBaseDialog = dd;
|
||||
delete myBaseDialog; myBaseDialog = myDialog = NULL;
|
||||
myDialog = new DebuggerDialog(myOSystem, this,
|
||||
r.left, r.top, r.width(), r.height());
|
||||
myBaseDialog = myDialog;
|
||||
|
||||
myPrompt = dd->prompt();
|
||||
myTiaInfo = dd->tiaInfo();
|
||||
myTiaOutput = dd->tiaOutput();
|
||||
myTiaZoom = dd->tiaZoom();
|
||||
myRom = dd->rom();
|
||||
myMessage = dd->message();
|
||||
|
||||
myRewindManager = new RewindManager(*myOSystem, *dd->rewindButton());
|
||||
myRewindManager = new RewindManager(*myOSystem, myDialog->rewindButton());
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -235,7 +225,7 @@ bool Debugger::start(const string& message, int address)
|
|||
if(address > -1)
|
||||
buf << valueToString(address);
|
||||
|
||||
myMessage->setEditString(buf.str());
|
||||
myDialog->message().setEditString(buf.str());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -247,17 +237,20 @@ bool Debugger::startWithFatalError(const string& message)
|
|||
if(myOSystem->eventHandler().enterDebugMode())
|
||||
{
|
||||
// This must be done *after* we enter debug mode,
|
||||
// so the message isn't erased
|
||||
myMessage->setEditString(message);
|
||||
// so the dialog is properly shown
|
||||
myDialog->showFatalMessage(message);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::quit()
|
||||
void Debugger::quit(bool exitrom)
|
||||
{
|
||||
myOSystem->eventHandler().leaveDebugMode();
|
||||
if(exitrom)
|
||||
myOSystem->eventHandler().handleEvent(Event::LauncherMode, 1);
|
||||
else
|
||||
myOSystem->eventHandler().leaveDebugMode();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -630,7 +623,7 @@ void Debugger::setStartState()
|
|||
saveOldState(false);
|
||||
|
||||
// Set the 're-disassemble' flag, but don't do it until the next scheduled time
|
||||
myRom->invalidate(false);
|
||||
myDialog->rom().invalidate(false);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -42,6 +42,7 @@ class ButtonWidget;
|
|||
|
||||
#include "Array.hxx"
|
||||
#include "DialogContainer.hxx"
|
||||
#include "DebuggerDialog.hxx"
|
||||
#include "DebuggerParser.hxx"
|
||||
#include "System.hxx"
|
||||
#include "Rect.hxx"
|
||||
|
@ -119,7 +120,7 @@ class Debugger : public DialogContainer
|
|||
Wrapper method for EventHandler::leaveDebugMode() for those classes
|
||||
that don't have access to EventHandler.
|
||||
*/
|
||||
void quit();
|
||||
void quit(bool exitrom);
|
||||
|
||||
bool addFunction(const string& name, const string& def,
|
||||
Expression* exp, bool builtin = false);
|
||||
|
@ -344,7 +345,8 @@ class Debugger : public DialogContainer
|
|||
void reset();
|
||||
void clearAllBreakPoints();
|
||||
|
||||
PromptWidget *prompt() { return myPrompt; }
|
||||
PromptWidget& prompt() { return myDialog->prompt(); }
|
||||
RomWidget& rom() { return myDialog->rom(); };
|
||||
|
||||
void saveState(int state);
|
||||
void loadState(int state);
|
||||
|
@ -353,22 +355,16 @@ class Debugger : public DialogContainer
|
|||
Console* myConsole;
|
||||
System* mySystem;
|
||||
|
||||
DebuggerDialog* myDialog;
|
||||
DebuggerParser* myParser;
|
||||
CartDebug* myCartDebug;
|
||||
CpuDebug* myCpuDebug;
|
||||
RiotDebug* myRiotDebug;
|
||||
TIADebug* myTiaDebug;
|
||||
|
||||
TiaInfoWidget* myTiaInfo;
|
||||
TiaOutputWidget* myTiaOutput;
|
||||
TiaZoomWidget* myTiaZoom;
|
||||
RomWidget* myRom;
|
||||
EditTextWidget* myMessage;
|
||||
|
||||
PackedBitArray* myBreakPoints;
|
||||
PackedBitArray* myReadTraps;
|
||||
PackedBitArray* myWriteTraps;
|
||||
PromptWidget* myPrompt;
|
||||
|
||||
static Debugger* myStaticDebugger;
|
||||
|
||||
|
|
|
@ -699,7 +699,7 @@ void DebuggerParser::executeBreak()
|
|||
else
|
||||
bp = args[0];
|
||||
debugger->toggleBreakPoint(bp);
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
|
||||
if(debugger->breakPoint(bp))
|
||||
commandResult << "Set";
|
||||
|
@ -799,7 +799,7 @@ void DebuggerParser::executeClearwatches()
|
|||
// "cls"
|
||||
void DebuggerParser::executeCls()
|
||||
{
|
||||
debugger->prompt()->clearScreen();
|
||||
debugger->prompt().clearScreen();
|
||||
commandResult << "";
|
||||
}
|
||||
|
||||
|
@ -822,7 +822,7 @@ void DebuggerParser::executeCode()
|
|||
CartDebug::CODE, args[0], args[1]);
|
||||
commandResult << (result ? "added" : "removed") << " CODE directive on range $"
|
||||
<< hex << args[0] << " $" << hex << args[1];
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -863,7 +863,7 @@ void DebuggerParser::executeData()
|
|||
CartDebug::DATA, args[0], args[1]);
|
||||
commandResult << (result ? "added" : "removed") << " DATA directive on range $"
|
||||
<< hex << args[0] << " $" << hex << args[1];
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -872,7 +872,7 @@ void DebuggerParser::executeDefine()
|
|||
{
|
||||
// TODO: check if label already defined?
|
||||
debugger->cartDebug().addLabel(argStrings[0], args[1]);
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -952,6 +952,13 @@ void DebuggerParser::executeExec()
|
|||
commandResult << exec(file);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
// "exitrom"
|
||||
void DebuggerParser::executeExitRom()
|
||||
{
|
||||
debugger->quit(true);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
// "frame"
|
||||
void DebuggerParser::executeFrame()
|
||||
|
@ -1002,7 +1009,7 @@ void DebuggerParser::executeGfx()
|
|||
CartDebug::GFX, args[0], args[1]);
|
||||
commandResult << (result ? "added" : "removed") << " GFX directive on range $"
|
||||
<< hex << args[0] << " $" << hex << args[1];
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -1040,7 +1047,7 @@ void DebuggerParser::executeJump()
|
|||
|
||||
if(line >= 0 && address >= 0)
|
||||
{
|
||||
debugger->myRom->scrollTo(line);
|
||||
debugger->rom().scrollTo(line);
|
||||
commandResult << "disassembly scrolled to address $" << HEX4 << address;
|
||||
}
|
||||
else
|
||||
|
@ -1141,7 +1148,7 @@ void DebuggerParser::executeLoadconfig()
|
|||
else
|
||||
commandResult << debugger->cartDebug().loadConfigFile();
|
||||
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -1159,7 +1166,7 @@ void DebuggerParser::executeLoadstate()
|
|||
void DebuggerParser::executeLoadsym()
|
||||
{
|
||||
commandResult << debugger->cartDebug().loadSymbolFile(argStrings[0]);
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -1198,7 +1205,7 @@ void DebuggerParser::executePGfx()
|
|||
CartDebug::PGFX, args[0], args[1]);
|
||||
commandResult << (result ? "added" : "removed") << " PGFX directive on range $"
|
||||
<< hex << args[0] << " $" << hex << args[1];
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -1223,7 +1230,7 @@ void DebuggerParser::executeRam()
|
|||
void DebuggerParser::executeReset()
|
||||
{
|
||||
debugger->reset();
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
commandResult << "reset CPU";
|
||||
}
|
||||
|
||||
|
@ -1233,7 +1240,7 @@ void DebuggerParser::executeRewind()
|
|||
{
|
||||
if(debugger->rewindState())
|
||||
{
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
commandResult << "rewind by one level";
|
||||
}
|
||||
else
|
||||
|
@ -1266,7 +1273,7 @@ void DebuggerParser::executeRom()
|
|||
// The RomWidget is a special case, since we don't want to re-disassemble
|
||||
// any more than necessary. So we only do it by calling the following
|
||||
// method ...
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
|
||||
commandResult << "changed " << debugger->valueToString( args.size() - 1 )
|
||||
<< " location(s)";
|
||||
|
@ -1291,7 +1298,7 @@ void DebuggerParser::executeRow()
|
|||
CartDebug::ROW, args[0], args[1]);
|
||||
commandResult << (result ? "added" : "removed") << " ROW directive on range $"
|
||||
<< hex << args[0] << " $" << hex << args[1];
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -1299,7 +1306,7 @@ void DebuggerParser::executeRow()
|
|||
void DebuggerParser::executeRun()
|
||||
{
|
||||
debugger->saveOldState();
|
||||
debugger->quit();
|
||||
debugger->quit(false);
|
||||
commandResult << "_EXIT_DEBUGGER"; // See PromptWidget for more info
|
||||
}
|
||||
|
||||
|
@ -1420,7 +1427,7 @@ void DebuggerParser::executeSaverom()
|
|||
// "saveses"
|
||||
void DebuggerParser::executeSaveses()
|
||||
{
|
||||
if(debugger->prompt()->saveBuffer(argStrings[0]))
|
||||
if(debugger->prompt().saveBuffer(argStrings[0]))
|
||||
commandResult << "saved session to file " << argStrings[0];
|
||||
else
|
||||
commandResult << red("I/O error");
|
||||
|
@ -1563,7 +1570,7 @@ void DebuggerParser::executeUndef()
|
|||
{
|
||||
if(debugger->cartDebug().removeLabel(argStrings[0]))
|
||||
{
|
||||
debugger->myRom->invalidate();
|
||||
debugger->rom().invalidate();
|
||||
commandResult << argStrings[0] + " now undefined";
|
||||
}
|
||||
else
|
||||
|
@ -1823,6 +1830,15 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = {
|
|||
&DebuggerParser::executeExec
|
||||
},
|
||||
|
||||
{
|
||||
"exitrom",
|
||||
"Exit emulator, return to ROM launcher",
|
||||
false,
|
||||
false,
|
||||
{ kARG_END_ARGS },
|
||||
&DebuggerParser::executeExitRom
|
||||
},
|
||||
|
||||
{
|
||||
"frame",
|
||||
"Advance emulation by xx frames (default=1)",
|
||||
|
|
|
@ -83,7 +83,7 @@ class DebuggerParser
|
|||
|
||||
private:
|
||||
enum {
|
||||
kNumCommands = 69,
|
||||
kNumCommands = 70,
|
||||
kMAX_ARG_TYPES = 10
|
||||
};
|
||||
|
||||
|
@ -157,6 +157,7 @@ class DebuggerParser
|
|||
void executeDisasm();
|
||||
void executeDump();
|
||||
void executeExec();
|
||||
void executeExitRom();
|
||||
void executeFrame();
|
||||
void executeFunction();
|
||||
void executeGfx();
|
||||
|
|
|
@ -35,26 +35,19 @@
|
|||
#include "TiaWidget.hxx"
|
||||
#include "DataGridOpsWidget.hxx"
|
||||
#include "EditTextWidget.hxx"
|
||||
#include "MessageBox.hxx"
|
||||
#include "Rect.hxx"
|
||||
#include "Debugger.hxx"
|
||||
#include "DebuggerParser.hxx"
|
||||
|
||||
#include "DebuggerDialog.hxx"
|
||||
|
||||
enum {
|
||||
kDDStepCmd = 'DDst',
|
||||
kDDTraceCmd = 'DDtr',
|
||||
kDDAdvCmd = 'DDav',
|
||||
kDDSAdvCmd = 'DDsv',
|
||||
kDDRewindCmd = 'DDrw',
|
||||
kDDExitCmd = 'DDex'
|
||||
};
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
DebuggerDialog::DebuggerDialog(OSystem* osystem, DialogContainer* parent,
|
||||
int x, int y, int w, int h)
|
||||
: Dialog(osystem, parent, x, y, w, h, true), // use base surface
|
||||
myTab(NULL)
|
||||
myTab(NULL),
|
||||
myFatalError(NULL)
|
||||
{
|
||||
addTiaArea();
|
||||
addTabArea();
|
||||
|
@ -145,7 +138,11 @@ void DebuggerDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
break;
|
||||
|
||||
case kDDExitCmd:
|
||||
doExit();
|
||||
doExitDebugger();
|
||||
break;
|
||||
|
||||
case kDDExitFatalCmd:
|
||||
doExitRom();
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -153,10 +150,23 @@ void DebuggerDialog::handleCommand(CommandSender* sender, int cmd,
|
|||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void DebuggerDialog::showFatalMessage(const string& msg)
|
||||
{
|
||||
const GUI::Rect& r = instance().debugger().getDialogBounds();
|
||||
|
||||
delete myFatalError;
|
||||
myFatalError =
|
||||
new MessageBox(this, instance().consoleFont(), msg,
|
||||
r.width(), r.height(), kDDExitFatalCmd,
|
||||
"Exit ROM", "Continue");
|
||||
myFatalError->show();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void DebuggerDialog::addTiaArea()
|
||||
{
|
||||
GUI::Rect r = instance().debugger().getTiaBounds();
|
||||
const GUI::Rect& r = instance().debugger().getTiaBounds();
|
||||
|
||||
myTiaOutput = new TiaOutputWidget(this, instance().consoleFont(),
|
||||
r.left, r.top, r.width(), r.height());
|
||||
|
@ -165,7 +175,7 @@ void DebuggerDialog::addTiaArea()
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void DebuggerDialog::addTabArea()
|
||||
{
|
||||
GUI::Rect r = instance().debugger().getTabBounds();
|
||||
const GUI::Rect& r = instance().debugger().getTabBounds();
|
||||
|
||||
const int vBorder = 4;
|
||||
|
||||
|
@ -214,7 +224,7 @@ void DebuggerDialog::addStatusArea()
|
|||
{
|
||||
const GUI::Font& font = instance().consoleFont();
|
||||
const int lineHeight = font.getLineHeight();
|
||||
GUI::Rect r = instance().debugger().getStatusBounds();
|
||||
const GUI::Rect& r = instance().debugger().getStatusBounds();
|
||||
int xpos, ypos;
|
||||
|
||||
xpos = r.left; ypos = r.top;
|
||||
|
@ -237,7 +247,7 @@ void DebuggerDialog::addStatusArea()
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void DebuggerDialog::addRomArea()
|
||||
{
|
||||
GUI::Rect r = instance().debugger().getRomBounds();
|
||||
const GUI::Rect& r = instance().debugger().getRomBounds();
|
||||
int xpos, ypos;
|
||||
|
||||
xpos = r.left + 10; ypos = 10;
|
||||
|
@ -320,7 +330,13 @@ void DebuggerDialog::doRewind()
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void DebuggerDialog::doExit()
|
||||
void DebuggerDialog::doExitDebugger()
|
||||
{
|
||||
instance().debugger().parser().run("run");
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void DebuggerDialog::doExitRom()
|
||||
{
|
||||
instance().debugger().parser().run("exitrom");
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ class EditTextWidget;
|
|||
class TiaInfoWidget;
|
||||
class TiaOutputWidget;
|
||||
class TiaZoomWidget;
|
||||
class MessageBox;
|
||||
|
||||
#include "Dialog.hxx"
|
||||
|
||||
|
@ -46,19 +47,31 @@ class DebuggerDialog : public Dialog
|
|||
int x, int y, int w, int h);
|
||||
~DebuggerDialog();
|
||||
|
||||
PromptWidget* prompt() { return myPrompt; }
|
||||
TiaInfoWidget* tiaInfo() { return myTiaInfo; }
|
||||
TiaOutputWidget* tiaOutput() { return myTiaOutput; }
|
||||
TiaZoomWidget* tiaZoom() { return myTiaZoom; }
|
||||
RomWidget* rom() { return myRom; }
|
||||
EditTextWidget* message() { return myMessageBox; }
|
||||
ButtonWidget* rewindButton() { return myRewindButton; }
|
||||
PromptWidget& prompt() { return *myPrompt; }
|
||||
TiaInfoWidget& tiaInfo() { return *myTiaInfo; }
|
||||
TiaOutputWidget& tiaOutput() { return *myTiaOutput; }
|
||||
TiaZoomWidget& tiaZoom() { return *myTiaZoom; }
|
||||
RomWidget& rom() { return *myRom; }
|
||||
EditTextWidget& message() { return *myMessageBox; }
|
||||
ButtonWidget& rewindButton() { return *myRewindButton; }
|
||||
|
||||
virtual void loadConfig();
|
||||
virtual void handleKeyDown(int ascii, int keycode, int modifiers);
|
||||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
void loadConfig();
|
||||
void handleKeyDown(int ascii, int keycode, int modifiers);
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
void showFatalMessage(const string& msg);
|
||||
|
||||
private:
|
||||
enum {
|
||||
kDDStepCmd = 'DDst',
|
||||
kDDTraceCmd = 'DDtr',
|
||||
kDDAdvCmd = 'DDav',
|
||||
kDDSAdvCmd = 'DDsv',
|
||||
kDDRewindCmd = 'DDrw',
|
||||
kDDExitCmd = 'DDex',
|
||||
kDDExitFatalCmd = 'DDer'
|
||||
};
|
||||
|
||||
TabWidget* myTab;
|
||||
|
||||
PromptWidget* myPrompt;
|
||||
|
@ -70,6 +83,7 @@ class DebuggerDialog : public Dialog
|
|||
RomWidget* myRom;
|
||||
EditTextWidget* myMessageBox;
|
||||
ButtonWidget* myRewindButton;
|
||||
MessageBox* myFatalError;
|
||||
|
||||
private:
|
||||
void addTiaArea();
|
||||
|
@ -82,7 +96,8 @@ class DebuggerDialog : public Dialog
|
|||
void doScanlineAdvance();
|
||||
void doAdvance();
|
||||
void doRewind();
|
||||
void doExit();
|
||||
void doExitDebugger();
|
||||
void doExitRom();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -212,9 +212,10 @@ inline void CartridgeDPCPlus::callFunction(uInt8 value)
|
|||
catch(const string& error) {
|
||||
if(!mySystem->autodectMode())
|
||||
{
|
||||
cerr << error << endl;
|
||||
#ifdef DEBUGGER_SUPPORT
|
||||
Debugger::debugger().startWithFatalError(error);
|
||||
#else
|
||||
cout << error << endl;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1034,7 +1034,8 @@ void EventHandler::handleEvent(Event::Type event, int state)
|
|||
return;
|
||||
|
||||
case Event::LauncherMode:
|
||||
if((myState == S_EMULATE || myState == S_CMDMENU) && state)
|
||||
if((myState == S_EMULATE || myState == S_CMDMENU ||
|
||||
myState == S_DEBUGGER) && state)
|
||||
{
|
||||
myOSystem->settings().saveConfig();
|
||||
|
||||
|
|
|
@ -72,7 +72,8 @@ string Thumbulator::run( void ) throw(const string&)
|
|||
inline int Thumbulator::fatalError(const char* opcode, uInt32 v1, const char* msg)
|
||||
throw(const string&)
|
||||
{
|
||||
statusMsg << opcode << "(" << HEX8 << v1 << "), " << msg << endl;
|
||||
statusMsg << "Thumb ARM emulation fatal error: " << endl
|
||||
<< opcode << "(" << HEX8 << v1 << "), " << msg << endl;
|
||||
dump_regs();
|
||||
throw statusMsg.str();
|
||||
}
|
||||
|
@ -82,7 +83,8 @@ inline int Thumbulator::fatalError(const char* opcode, uInt32 v1, uInt32 v2,
|
|||
const char* msg)
|
||||
throw(const string&)
|
||||
{
|
||||
statusMsg << opcode << "(" << HEX8 << v1 << "," << v2 << "), " << msg << endl;
|
||||
statusMsg << "Thumb ARM emulation fatal error: " << endl
|
||||
<< opcode << "(" << HEX8 << v1 << "," << v2 << "), " << msg << endl;
|
||||
dump_regs();
|
||||
throw statusMsg.str();
|
||||
}
|
||||
|
|
|
@ -584,7 +584,10 @@ Widget* Dialog::findWidget(int x, int y)
|
|||
void Dialog::addOKCancelBGroup(WidgetArray& wid, const GUI::Font& font,
|
||||
const string& okText, const string& cancelText)
|
||||
{
|
||||
int buttonWidth = font.getStringWidth("Cancel") + 15;
|
||||
|
||||
int buttonWidth = BSPF_max(font.getStringWidth("Cancel"),
|
||||
BSPF_max(font.getStringWidth(okText),
|
||||
font.getStringWidth(okText))) + 15;
|
||||
int buttonHeight = font.getLineHeight() + 4;
|
||||
ButtonWidget* b;
|
||||
#ifndef MAC_OSX
|
||||
|
|
|
@ -21,28 +21,60 @@
|
|||
#include "OSystem.hxx"
|
||||
#include "Version.hxx"
|
||||
#include "Widget.hxx"
|
||||
#include "StringParser.hxx"
|
||||
|
||||
#include "MessageBox.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
||||
const StringList& text, int max_w, int max_h, int cmd)
|
||||
: Dialog(&boss->instance(), &boss->parent(), 0, 0, 16, 16),
|
||||
const StringList& text, int max_w, int max_h, int cmd,
|
||||
const string& okText, const string& cancelText)
|
||||
: Dialog(&boss->instance(), &boss->parent(), 0, 0, max_w, max_h),
|
||||
CommandSender(boss),
|
||||
myCmd(cmd)
|
||||
{
|
||||
addText(font, text);
|
||||
|
||||
WidgetArray wid;
|
||||
addOKCancelBGroup(wid, font, okText, cancelText);
|
||||
addToFocusList(wid);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
||||
const string& text, int max_w, int max_h, int cmd,
|
||||
const string& okText, const string& cancelText)
|
||||
: Dialog(&boss->instance(), &boss->parent(), 0, 0, max_w, max_h),
|
||||
CommandSender(boss),
|
||||
myCmd(cmd)
|
||||
{
|
||||
StringParser p(text);
|
||||
addText(font, p.stringList());
|
||||
|
||||
WidgetArray wid;
|
||||
addOKCancelBGroup(wid, font, okText, cancelText);
|
||||
addToFocusList(wid);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
MessageBox::~MessageBox()
|
||||
{
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void MessageBox::addText(const GUI::Font& font, const StringList& text)
|
||||
{
|
||||
const int lineHeight = font.getLineHeight(),
|
||||
fontWidth = font.getMaxCharWidth(),
|
||||
fontHeight = font.getFontHeight();
|
||||
int xpos, ypos;
|
||||
WidgetArray wid;
|
||||
|
||||
// Set real dimensions
|
||||
int str_w = 0;
|
||||
for(uInt32 i = 0; i < text.size(); ++i)
|
||||
str_w = BSPF_max((int)text[i].length(), str_w);
|
||||
_w = BSPF_min(str_w * fontWidth + 20, max_w);
|
||||
_h = BSPF_min(((text.size() + 2) * lineHeight + 20), (uInt32)max_h);
|
||||
_w = BSPF_min(str_w * fontWidth + 20, _w);
|
||||
_h = BSPF_min(((text.size() + 2) * lineHeight + 20), (uInt32)_h);
|
||||
|
||||
xpos = 10; ypos = 10;
|
||||
for(uInt32 i = 0; i < text.size(); ++i)
|
||||
|
@ -51,15 +83,6 @@ MessageBox::MessageBox(GuiObject* boss, const GUI::Font& font,
|
|||
fontHeight, text[i], kTextAlignLeft);
|
||||
ypos += fontHeight;
|
||||
}
|
||||
|
||||
addOKCancelBGroup(wid, font);
|
||||
|
||||
addToFocusList(wid);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
MessageBox::~MessageBox()
|
||||
{
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -36,14 +36,19 @@ class MessageBox : public Dialog, public CommandSender
|
|||
{
|
||||
public:
|
||||
MessageBox(GuiObject* boss, const GUI::Font& font, const StringList& text,
|
||||
int max_w, int max_h, int cmd = 0);
|
||||
int max_w, int max_h, int cmd = 0,
|
||||
const string& okText = "", const string& cancelText = "");
|
||||
MessageBox(GuiObject* boss, const GUI::Font& font, const string& text,
|
||||
int max_w, int max_h, int cmd = 0,
|
||||
const string& okText = "", const string& cancelText = "");
|
||||
virtual ~MessageBox();
|
||||
|
||||
/** Place the input dialog onscreen and center it */
|
||||
void show() { parent().addDialog(this); }
|
||||
|
||||
private:
|
||||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
void addText(const GUI::Font& font, const StringList& text);
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
private:
|
||||
int myCmd;
|
||||
|
|
|
@ -69,7 +69,6 @@
|
|||
2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC7084578BF00812C11 /* PopUpWidget.hxx */; };
|
||||
2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */; };
|
||||
2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */; };
|
||||
2D91741509BA90380026E9FF /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACF084578BF00812C11 /* StringList.hxx */; };
|
||||
2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD1084578BF00812C11 /* TabWidget.hxx */; };
|
||||
2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD3084578BF00812C11 /* VideoDialog.hxx */; };
|
||||
2D91741809BA90380026E9FF /* Widget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD5084578BF00812C11 /* Widget.hxx */; };
|
||||
|
@ -251,6 +250,8 @@
|
|||
DC17E80C1361FDB500397A9E /* pngstruct.h in Headers */ = {isa = PBXBuildFile; fileRef = DC17E8081361FDB500397A9E /* pngstruct.h */; };
|
||||
DC1FC18A0DB3B2C7009B3DF7 /* SerialPortMACOSX.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC1FC1880DB3B2C7009B3DF7 /* SerialPortMACOSX.cxx */; };
|
||||
DC1FC18B0DB3B2C7009B3DF7 /* SerialPortMACOSX.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC1FC1890DB3B2C7009B3DF7 /* SerialPortMACOSX.hxx */; };
|
||||
DC20D6F3138EB130002A7428 /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC20D6F1138EB130002A7428 /* StringList.hxx */; };
|
||||
DC20D6F4138EB130002A7428 /* StringParser.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC20D6F2138EB130002A7428 /* StringParser.hxx */; };
|
||||
DC3FE47C11C7D35600C91C72 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = DC3FE46A11C7D35600C91C72 /* png.c */; };
|
||||
DC3FE47D11C7D35600C91C72 /* png.h in Headers */ = {isa = PBXBuildFile; fileRef = DC3FE46B11C7D35600C91C72 /* png.h */; };
|
||||
DC3FE47E11C7D35600C91C72 /* pngconf.h in Headers */ = {isa = PBXBuildFile; fileRef = DC3FE46C11C7D35600C91C72 /* pngconf.h */; };
|
||||
|
@ -336,7 +337,6 @@
|
|||
DCE9CC2B1103812700C86671 /* CartDebug.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE9CC271103812700C86671 /* CartDebug.hxx */; };
|
||||
DCE9CC2C1103812700C86671 /* DiStella.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCE9CC281103812700C86671 /* DiStella.cxx */; };
|
||||
DCE9CC2D1103812700C86671 /* DiStella.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE9CC291103812700C86671 /* DiStella.hxx */; };
|
||||
DCECDAFA10B9DBDC00AF4E1B /* Device.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCECDAF210B9DBDC00AF4E1B /* Device.cxx */; };
|
||||
DCECDAFB10B9DBDC00AF4E1B /* Device.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCECDAF310B9DBDC00AF4E1B /* Device.hxx */; };
|
||||
DCECDAFC10B9DBDC00AF4E1B /* M6502.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCECDAF410B9DBDC00AF4E1B /* M6502.cxx */; };
|
||||
DCECDAFD10B9DBDC00AF4E1B /* M6502.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCECDAF510B9DBDC00AF4E1B /* M6502.hxx */; };
|
||||
|
@ -547,7 +547,6 @@
|
|||
2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ProgressDialog.hxx; path = ../gui/ProgressDialog.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEACA084578BF00812C11 /* ScrollBarWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollBarWidget.cxx; path = ../gui/ScrollBarWidget.cxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ScrollBarWidget.hxx; path = ../gui/ScrollBarWidget.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEACF084578BF00812C11 /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../gui/StringList.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEAD0084578BF00812C11 /* TabWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = TabWidget.cxx; path = ../gui/TabWidget.cxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEAD1084578BF00812C11 /* TabWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = TabWidget.hxx; path = ../gui/TabWidget.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEAD2084578BF00812C11 /* VideoDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDialog.cxx; path = ../gui/VideoDialog.cxx; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -658,6 +657,8 @@
|
|||
DC17E8081361FDB500397A9E /* pngstruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pngstruct.h; path = ../libpng/pngstruct.h; sourceTree = SOURCE_ROOT; };
|
||||
DC1FC1880DB3B2C7009B3DF7 /* SerialPortMACOSX.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = SerialPortMACOSX.cxx; sourceTree = "<group>"; };
|
||||
DC1FC1890DB3B2C7009B3DF7 /* SerialPortMACOSX.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = SerialPortMACOSX.hxx; sourceTree = "<group>"; };
|
||||
DC20D6F1138EB130002A7428 /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../common/StringList.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DC20D6F2138EB130002A7428 /* StringParser.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringParser.hxx; path = ../common/StringParser.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DC3FE46A11C7D35600C91C72 /* png.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = png.c; path = ../libpng/png.c; sourceTree = SOURCE_ROOT; };
|
||||
DC3FE46B11C7D35600C91C72 /* png.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = png.h; path = ../libpng/png.h; sourceTree = SOURCE_ROOT; };
|
||||
DC3FE46C11C7D35600C91C72 /* pngconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pngconf.h; path = ../libpng/pngconf.h; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -744,7 +745,6 @@
|
|||
DCE9CC271103812700C86671 /* CartDebug.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CartDebug.hxx; path = ../debugger/CartDebug.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DCE9CC281103812700C86671 /* DiStella.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiStella.cxx; path = ../debugger/DiStella.cxx; sourceTree = SOURCE_ROOT; };
|
||||
DCE9CC291103812700C86671 /* DiStella.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DiStella.hxx; path = ../debugger/DiStella.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DCECDAF210B9DBDC00AF4E1B /* Device.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Device.cxx; path = ../emucore/Device.cxx; sourceTree = SOURCE_ROOT; };
|
||||
DCECDAF310B9DBDC00AF4E1B /* Device.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Device.hxx; path = ../emucore/Device.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DCECDAF410B9DBDC00AF4E1B /* M6502.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = M6502.cxx; path = ../emucore/M6502.cxx; sourceTree = SOURCE_ROOT; };
|
||||
DCECDAF510B9DBDC00AF4E1B /* M6502.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = M6502.hxx; path = ../emucore/M6502.hxx; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -946,6 +946,8 @@
|
|||
2DDA34020665817D00CDD299 /* SoundSDL.cxx */,
|
||||
2DDA34030665817D00CDD299 /* SoundSDL.hxx */,
|
||||
DC5D1AA6102C6FC900E59AC1 /* Stack.hxx */,
|
||||
DC20D6F1138EB130002A7428 /* StringList.hxx */,
|
||||
DC20D6F2138EB130002A7428 /* StringParser.hxx */,
|
||||
DCF467BC0F9399F500B25D7A /* Version.hxx */,
|
||||
);
|
||||
name = common;
|
||||
|
@ -1041,7 +1043,6 @@
|
|||
2DE2DF3A0627AE07006BEC99 /* Control.cxx */,
|
||||
2DE2DF3B0627AE07006BEC99 /* Control.hxx */,
|
||||
DC932D3F0F278A5200FEFEFC /* DefProps.hxx */,
|
||||
DCECDAF210B9DBDC00AF4E1B /* Device.cxx */,
|
||||
DCECDAF310B9DBDC00AF4E1B /* Device.hxx */,
|
||||
2DE2DF3E0627AE07006BEC99 /* Driving.cxx */,
|
||||
2DE2DF3F0627AE07006BEC99 /* Driving.hxx */,
|
||||
|
@ -1189,7 +1190,6 @@
|
|||
DC5D2C4F0F117CFD004D1660 /* StellaFont.hxx */,
|
||||
DC5D2C500F117CFD004D1660 /* StellaLargeFont.hxx */,
|
||||
DC5D2C510F117CFD004D1660 /* StellaMediumFont.hxx */,
|
||||
2DDBEACF084578BF00812C11 /* StringList.hxx */,
|
||||
2DEF21FA08BC033500B246B4 /* StringListWidget.cxx */,
|
||||
2DEF21FB08BC033500B246B4 /* StringListWidget.hxx */,
|
||||
2DDBEAD0084578BF00812C11 /* TabWidget.cxx */,
|
||||
|
@ -1358,7 +1358,6 @@
|
|||
2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */,
|
||||
2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */,
|
||||
2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */,
|
||||
2D91741509BA90380026E9FF /* StringList.hxx in Headers */,
|
||||
2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */,
|
||||
2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */,
|
||||
2D91741809BA90380026E9FF /* Widget.hxx in Headers */,
|
||||
|
@ -1475,6 +1474,8 @@
|
|||
DC17E80A1361FDB500397A9E /* pnginfo.h in Headers */,
|
||||
DC17E80B1361FDB500397A9E /* pnglibconf.h in Headers */,
|
||||
DC17E80C1361FDB500397A9E /* pngstruct.h in Headers */,
|
||||
DC20D6F3138EB130002A7428 /* StringList.hxx in Headers */,
|
||||
DC20D6F4138EB130002A7428 /* StringParser.hxx in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -1705,7 +1706,6 @@
|
|||
DCF467C40F939A1400B25D7A /* CartEFSC.cxx in Sources */,
|
||||
DCF7B0DD10A762FC007A2870 /* CartF0.cxx in Sources */,
|
||||
DCF7B0DF10A762FC007A2870 /* CartFA.cxx in Sources */,
|
||||
DCECDAFA10B9DBDC00AF4E1B /* Device.cxx in Sources */,
|
||||
DCECDAFC10B9DBDC00AF4E1B /* M6502.cxx in Sources */,
|
||||
DCECDAFE10B9DBDC00AF4E1B /* NullDev.cxx in Sources */,
|
||||
DCECDB0010B9DBDC00AF4E1B /* System.cxx in Sources */,
|
||||
|
|
|
@ -69,7 +69,6 @@
|
|||
2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC7084578BF00812C11 /* PopUpWidget.hxx */; };
|
||||
2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */; };
|
||||
2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */; };
|
||||
2D91741509BA90380026E9FF /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEACF084578BF00812C11 /* StringList.hxx */; };
|
||||
2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD1084578BF00812C11 /* TabWidget.hxx */; };
|
||||
2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD3084578BF00812C11 /* VideoDialog.hxx */; };
|
||||
2D91741809BA90380026E9FF /* Widget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = 2DDBEAD5084578BF00812C11 /* Widget.hxx */; };
|
||||
|
@ -280,6 +279,8 @@
|
|||
DC6B2BA511037FF200F199A7 /* CartDebug.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA111037FF200F199A7 /* CartDebug.hxx */; };
|
||||
DC6B2BA611037FF200F199A7 /* DiStella.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC6B2BA211037FF200F199A7 /* DiStella.cxx */; };
|
||||
DC6B2BA711037FF200F199A7 /* DiStella.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6B2BA311037FF200F199A7 /* DiStella.hxx */; };
|
||||
DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D69F138D4D7E00F05C5C /* StringList.hxx */; };
|
||||
DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */; };
|
||||
DC8078DB0B4BD5F3005E9305 /* DebuggerExpressions.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */; };
|
||||
DC8078E80B4BD697005E9305 /* FileSnapDialog.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC8078E40B4BD697005E9305 /* FileSnapDialog.cxx */; };
|
||||
DC8078E90B4BD697005E9305 /* FileSnapDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC8078E50B4BD697005E9305 /* FileSnapDialog.hxx */; };
|
||||
|
@ -543,7 +544,6 @@
|
|||
2DDBEAC9084578BF00812C11 /* ProgressDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ProgressDialog.hxx; path = ../gui/ProgressDialog.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEACA084578BF00812C11 /* ScrollBarWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ScrollBarWidget.cxx; path = ../gui/ScrollBarWidget.cxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEACB084578BF00812C11 /* ScrollBarWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = ScrollBarWidget.hxx; path = ../gui/ScrollBarWidget.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEACF084578BF00812C11 /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../gui/StringList.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEAD0084578BF00812C11 /* TabWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = TabWidget.cxx; path = ../gui/TabWidget.cxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEAD1084578BF00812C11 /* TabWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = TabWidget.hxx; path = ../gui/TabWidget.hxx; sourceTree = SOURCE_ROOT; };
|
||||
2DDBEAD2084578BF00812C11 /* VideoDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDialog.cxx; path = ../gui/VideoDialog.cxx; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -684,6 +684,8 @@
|
|||
DC6B2BA111037FF200F199A7 /* CartDebug.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = CartDebug.hxx; path = ../debugger/CartDebug.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DC6B2BA211037FF200F199A7 /* DiStella.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DiStella.cxx; path = ../debugger/DiStella.cxx; sourceTree = SOURCE_ROOT; };
|
||||
DC6B2BA311037FF200F199A7 /* DiStella.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DiStella.hxx; path = ../debugger/DiStella.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DC74D69F138D4D7E00F05C5C /* StringList.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringList.hxx; path = ../common/StringList.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = StringParser.hxx; path = ../common/StringParser.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DC8078DA0B4BD5F3005E9305 /* DebuggerExpressions.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = DebuggerExpressions.hxx; path = ../debugger/DebuggerExpressions.hxx; sourceTree = SOURCE_ROOT; };
|
||||
DC8078E40B4BD697005E9305 /* FileSnapDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = FileSnapDialog.cxx; path = ../gui/FileSnapDialog.cxx; sourceTree = SOURCE_ROOT; };
|
||||
DC8078E50B4BD697005E9305 /* FileSnapDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = FileSnapDialog.hxx; path = ../gui/FileSnapDialog.hxx; sourceTree = SOURCE_ROOT; };
|
||||
|
@ -941,6 +943,8 @@
|
|||
2DDA34020665817D00CDD299 /* SoundSDL.cxx */,
|
||||
2DDA34030665817D00CDD299 /* SoundSDL.hxx */,
|
||||
DC5D1AA6102C6FC900E59AC1 /* Stack.hxx */,
|
||||
DC74D69F138D4D7E00F05C5C /* StringList.hxx */,
|
||||
DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */,
|
||||
DCF467BC0F9399F500B25D7A /* Version.hxx */,
|
||||
);
|
||||
name = common;
|
||||
|
@ -1183,7 +1187,6 @@
|
|||
DC5D2C4F0F117CFD004D1660 /* StellaFont.hxx */,
|
||||
DC5D2C500F117CFD004D1660 /* StellaLargeFont.hxx */,
|
||||
DC5D2C510F117CFD004D1660 /* StellaMediumFont.hxx */,
|
||||
2DDBEACF084578BF00812C11 /* StringList.hxx */,
|
||||
2DEF21FA08BC033500B246B4 /* StringListWidget.cxx */,
|
||||
2DEF21FB08BC033500B246B4 /* StringListWidget.hxx */,
|
||||
2DDBEAD0084578BF00812C11 /* TabWidget.cxx */,
|
||||
|
@ -1352,7 +1355,6 @@
|
|||
2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */,
|
||||
2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */,
|
||||
2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */,
|
||||
2D91741509BA90380026E9FF /* StringList.hxx in Headers */,
|
||||
2D91741609BA90380026E9FF /* TabWidget.hxx in Headers */,
|
||||
2D91741709BA90380026E9FF /* VideoDialog.hxx in Headers */,
|
||||
2D91741809BA90380026E9FF /* Widget.hxx in Headers */,
|
||||
|
@ -1469,6 +1471,8 @@
|
|||
DC69670C1361FD0A0036499D /* pnginfo.h in Headers */,
|
||||
DC69670D1361FD0A0036499D /* pnglibconf.h in Headers */,
|
||||
DC69670E1361FD0A0036499D /* pngstruct.h in Headers */,
|
||||
DC74D6A1138D4D7E00F05C5C /* StringList.hxx in Headers */,
|
||||
DC74D6A2138D4D7E00F05C5C /* StringParser.hxx in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue