mirror of https://github.com/stella-emu/stella.git
Added an oft-requested debugger feature: add buttons to the AtariVox/SaveKey
controller area to reset the EEPROM to default values. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2937 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
81d0dfdbdc
commit
e3cc672368
|
@ -0,0 +1,72 @@
|
|||
//============================================================================
|
||||
//
|
||||
// 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-2014 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$
|
||||
//============================================================================
|
||||
|
||||
#include "AtariVox.hxx"
|
||||
#include "MT24LC256.hxx"
|
||||
#include "AtariVoxWidget.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
AtariVoxWidget::AtariVoxWidget(GuiObject* boss, const GUI::Font& font,
|
||||
int x, int y, Controller& controller)
|
||||
: ControllerWidget(boss, font, x, y, controller)
|
||||
{
|
||||
bool leftport = myController.jack() == Controller::Left;
|
||||
const string& label = leftport ? "Left (AtariVox):" : "Right (AtariVox):";
|
||||
|
||||
const int fontWidth = font.getMaxCharWidth(),
|
||||
fontHeight = font.getFontHeight(),
|
||||
lineHeight = font.getLineHeight(),
|
||||
bwidth = font.getStringWidth("Erase EEPROM") + 20,
|
||||
bheight = lineHeight + 4;
|
||||
|
||||
int xpos = x, ypos = y, lwidth = font.getStringWidth("Right (AtariVox):");
|
||||
StaticTextWidget* t;
|
||||
|
||||
t = new StaticTextWidget(boss, font, xpos, ypos+2, lwidth,
|
||||
fontHeight, label, kTextAlignLeft);
|
||||
|
||||
ypos += t->getHeight() + 20;
|
||||
myEEPROMErase =
|
||||
new ButtonWidget(boss, font, xpos+10, ypos, bwidth, bheight,
|
||||
"Erase EEPROM", kEEPROMErase);
|
||||
myEEPROMErase->setTarget(this);
|
||||
ypos += lineHeight + 20;
|
||||
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "(*) This will erase", kTextAlignLeft);
|
||||
ypos += lineHeight + 2;
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "all EEPROM data, not", kTextAlignLeft);
|
||||
ypos += lineHeight + 2;
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "just the range used", kTextAlignLeft);
|
||||
ypos += lineHeight + 2;
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "for this ROM", kTextAlignLeft);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void AtariVoxWidget::handleCommand(CommandSender*, int cmd, int, int)
|
||||
{
|
||||
if(cmd == kEEPROMErase)
|
||||
{
|
||||
AtariVox& avox = (AtariVox&)myController;
|
||||
avox.myEEPROM->erase();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
//============================================================================
|
||||
//
|
||||
// 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-2014 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 ATARIVOX_WIDGET_HXX
|
||||
#define ATARIVOX_WIDGET_HXX
|
||||
|
||||
class ButtonWidget;
|
||||
|
||||
#include "Control.hxx"
|
||||
#include "ControllerWidget.hxx"
|
||||
|
||||
class AtariVoxWidget : public ControllerWidget
|
||||
{
|
||||
public:
|
||||
AtariVoxWidget(GuiObject* boss, const GUI::Font& font, int x, int y,
|
||||
Controller& controller);
|
||||
virtual ~AtariVoxWidget() { }
|
||||
|
||||
void loadConfig() { }
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
private:
|
||||
ButtonWidget* myEEPROMErase;
|
||||
enum { kEEPROMErase = 'eeER' };
|
||||
};
|
||||
|
||||
#endif
|
|
@ -35,6 +35,8 @@
|
|||
#include "DrivingWidget.hxx"
|
||||
#include "GenesisWidget.hxx"
|
||||
#include "KeyboardWidget.hxx"
|
||||
#include "AtariVoxWidget.hxx"
|
||||
#include "SaveKeyWidget.hxx"
|
||||
|
||||
#include "RiotWidget.hxx"
|
||||
|
||||
|
@ -440,6 +442,10 @@ ControllerWidget* RiotWidget::addControlWidget(GuiObject* boss, const GUI::Font&
|
|||
return new GenesisWidget(boss, font, x, y, controller);
|
||||
case Controller::Keyboard:
|
||||
return new KeyboardWidget(boss, font, x, y, controller);
|
||||
case Controller::AtariVox:
|
||||
return new AtariVoxWidget(boss, font, x, y, controller);
|
||||
case Controller::SaveKey:
|
||||
return new SaveKeyWidget(boss, font, x, y, controller);
|
||||
default:
|
||||
return new NullControlWidget(boss, font, x, y, controller);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
//============================================================================
|
||||
//
|
||||
// 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-2014 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$
|
||||
//============================================================================
|
||||
|
||||
#include "SaveKey.hxx"
|
||||
#include "MT24LC256.hxx"
|
||||
#include "SaveKeyWidget.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
SaveKeyWidget::SaveKeyWidget(GuiObject* boss, const GUI::Font& font,
|
||||
int x, int y, Controller& controller)
|
||||
: ControllerWidget(boss, font, x, y, controller)
|
||||
{
|
||||
bool leftport = myController.jack() == Controller::Left;
|
||||
const string& label = leftport ? "Left (SaveKey):" : "Right (SaveKey):";
|
||||
|
||||
const int fontWidth = font.getMaxCharWidth(),
|
||||
fontHeight = font.getFontHeight(),
|
||||
lineHeight = font.getLineHeight(),
|
||||
bwidth = font.getStringWidth("Erase EEPROM") + 20,
|
||||
bheight = lineHeight + 4;
|
||||
|
||||
int xpos = x, ypos = y, lwidth = font.getStringWidth("Right (SaveKey):");
|
||||
StaticTextWidget* t;
|
||||
|
||||
t = new StaticTextWidget(boss, font, xpos, ypos+2, lwidth,
|
||||
fontHeight, label, kTextAlignLeft);
|
||||
|
||||
ypos += t->getHeight() + 20;
|
||||
myEEPROMErase =
|
||||
new ButtonWidget(boss, font, xpos+10, ypos, bwidth, bheight,
|
||||
"Erase EEPROM", kEEPROMErase);
|
||||
myEEPROMErase->setTarget(this);
|
||||
ypos += lineHeight + 20;
|
||||
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "(*) This will erase", kTextAlignLeft);
|
||||
ypos += lineHeight + 2;
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "all EEPROM data, not", kTextAlignLeft);
|
||||
ypos += lineHeight + 2;
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "just the range used", kTextAlignLeft);
|
||||
ypos += lineHeight + 2;
|
||||
new StaticTextWidget(boss, font, xpos, ypos, fontWidth*22,
|
||||
fontHeight, "for this ROM", kTextAlignLeft);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void SaveKeyWidget::handleCommand(CommandSender*, int cmd, int, int)
|
||||
{
|
||||
if(cmd == kEEPROMErase)
|
||||
{
|
||||
SaveKey& skey = (SaveKey&)myController;
|
||||
skey.myEEPROM->erase();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
//============================================================================
|
||||
//
|
||||
// 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-2014 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 SAVEKEY_WIDGET_HXX
|
||||
#define SAVEKEY_WIDGET_HXX
|
||||
|
||||
class ButtonWidget;
|
||||
|
||||
#include "Control.hxx"
|
||||
#include "ControllerWidget.hxx"
|
||||
|
||||
class SaveKeyWidget : public ControllerWidget
|
||||
{
|
||||
public:
|
||||
SaveKeyWidget(GuiObject* boss, const GUI::Font& font, int x, int y,
|
||||
Controller& controller);
|
||||
virtual ~SaveKeyWidget() { }
|
||||
|
||||
void loadConfig() { }
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id);
|
||||
|
||||
private:
|
||||
ButtonWidget* myEEPROMErase;
|
||||
enum { kEEPROMErase = 'eeER' };
|
||||
};
|
||||
|
||||
#endif
|
|
@ -61,7 +61,9 @@ MODULE_OBJS := \
|
|||
src/debugger/gui/BoosterWidget.o \
|
||||
src/debugger/gui/DrivingWidget.o \
|
||||
src/debugger/gui/KeyboardWidget.o \
|
||||
src/debugger/gui/GenesisWidget.o
|
||||
src/debugger/gui/GenesisWidget.o \
|
||||
src/debugger/gui/AtariVoxWidget.o \
|
||||
src/debugger/gui/SaveKeyWidget.o
|
||||
|
||||
MODULE_DIRS += \
|
||||
src/debugger/gui
|
||||
|
|
|
@ -37,6 +37,8 @@ class MT24LC256;
|
|||
*/
|
||||
class AtariVox : public Controller
|
||||
{
|
||||
friend class AtariVoxWidget;
|
||||
|
||||
public:
|
||||
/**
|
||||
Create a new AtariVox controller plugged into the specified jack
|
||||
|
|
|
@ -148,6 +148,13 @@ void MT24LC256::update()
|
|||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void MT24LC256::erase()
|
||||
{
|
||||
memset(myData, 0xff, 32768);
|
||||
myDataChanged = true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void MT24LC256::systemCyclesReset()
|
||||
{
|
||||
|
|
|
@ -57,6 +57,9 @@ class MT24LC256
|
|||
void writeSDA(bool state);
|
||||
void writeSCL(bool state);
|
||||
|
||||
/** Erase entire EEPROM to known state ($FF) */
|
||||
void erase();
|
||||
|
||||
/**
|
||||
Notification method invoked by the system right before the
|
||||
system resets its cycle counter to zero. It may be necessary
|
||||
|
|
|
@ -36,6 +36,8 @@ class MT24LC256;
|
|||
*/
|
||||
class SaveKey : public Controller
|
||||
{
|
||||
friend class SaveKeyWidget;
|
||||
|
||||
public:
|
||||
/**
|
||||
Create a new SaveKey controller plugged into the specified jack
|
||||
|
|
Loading…
Reference in New Issue