When starting Stella for the first time (ie, when the ROM directory hasn't

been chosen), a dialog box now appears, asking the user to enter the
default directory.  This directory will appear each time the ROM launcher
is entered, until the user selects a directory.  This will hopefully
eliminate bug reports from users that don't know what to do when first
starting Stella.

Big changes to the manual, separating the necessary, up-front information
from the advanced stuff that can be considered later (or not at all).
Also added more links to ease navigation.  This should make the manual more
readable for those that have complained it's too long.

The setting for TV color type is now 'Color' and 'BW', instead of
'BlackAndWhite', as before.  The old one will continue to work, though.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2059 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2010-07-06 15:08:35 +00:00
parent 78fd3c0c7d
commit c3f5aa2810
8 changed files with 935 additions and 924 deletions

View File

@ -50,7 +50,7 @@ feature that no other 2600 debugger has; it's <b>completely</b> cross-platform.<
<li>Built-in VCS.H symbols, if no symbol file is loaded.</li>
<li><strike>Symbolic names in disassembly.</strike> <b>Note:</b> Disabled until a future release</li>
<li>Symbolic names in disassembly.</li>
<li>Symbolic names accepted as input.</li>
<li>Tab completion for commands, symbol names and functions.</li>
@ -925,11 +925,9 @@ decreased by 1:</p>
<!-- ///////////////////////////////////////////////////////////////////////// -->
<br>
<h2><u>(M)</u> ROM Listing</h2>
<p>The ROM Widget is a disassembly of the current bank of ROM. <strike>If a symbol
file is loaded, the disassembly will have labels.</strike>. For now, labels
from a symbol file are not shown in the disasembly; this feature will return
in a future release. Even without a symbol file, the standard TIA/RIOT labels
will still be present.</p>
<p>The ROM Widget is a disassembly of the current bank of ROM. If a symbol
file is loaded, the disassembly will have labels. Even without a symbol file, the standard
TIA/RIOT labels will still be present.</p>
<p><img src="graphics/debugger_rom.png"></p>
<p>The top area contains two items:

File diff suppressed because it is too large Load Diff

View File

@ -95,7 +95,7 @@ Settings::Settings(OSystem* osystem)
setInternal("ssinterval", "2");
// Config files and paths
setInternal("romdir", "~");
setInternal("romdir", "");
setInternal("statedir", "");
setInternal("cheatfile", "");
setInternal("palettefile", "");

View File

@ -204,7 +204,7 @@ GameInfoDialog::GameInfoDialog(
"TV Type:", kTextAlignLeft);
items.clear();
items.push_back("Color", "COLOR");
items.push_back("B & W", "BLACKANDWHITE");
items.push_back("B & W", "BW");
myTVType = new PopUpWidget(myTab, font, xpos+lwidth, ypos,
pwidth, lineHeight, items, "", 0, 0);
wid.push_back(myTVType);

View File

@ -131,7 +131,7 @@ GlobalPropsDialog::
items.clear();
items.push_back("Default", "DEFAULT");
items.push_back("Color", "COLOR");
items.push_back("B & W", "BLACKANDWHITE");
items.push_back("B & W", "BW");
myTVType = new PopUpWidget(this, font, xpos+lwidth, ypos,
pwidth, lineHeight, items, "", 0, 0);
wid.push_back(myTVType);

View File

@ -61,6 +61,7 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
myMenu(NULL),
myGlobalProps(NULL),
myFilters(NULL),
myRomDir(NULL),
mySelectedItem(0)
{
const GUI::Font& font = instance().launcherFont();
@ -191,8 +192,7 @@ LauncherDialog::LauncherDialog(OSystem* osystem, DialogContainer* parent,
// ROM properties
myGlobalProps = new GlobalPropsDialog(this, osystem->font());
// Create dialog whereby the files shown in the ROM listing can be
// customized
// Create dialog whereby the files shown in the ROM listing can be customized
myFilters = new LauncherFilterDialog(this, osystem->font());
// Figure out which filters are needed for the ROM listing
@ -207,6 +207,7 @@ LauncherDialog::~LauncherDialog()
delete myMenu;
delete myGlobalProps;
delete myFilters;
delete myRomDir;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -230,8 +231,21 @@ string LauncherDialog::selectedRomMD5()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void LauncherDialog::loadConfig()
{
const string& romdir = instance().settings().getString("romdir");
// When romdir hasn't been set, it probably indicates that this is the first
// time running Stella; in this case, we should prompt the user
if(romdir == "")
{
if(!myRomDir)
myRomDir = new BrowserDialog(this, instance().font(), _w, _h);
myRomDir->show("First startup -> Select ROM directory:", romdir,
FilesystemNode::kListDirectoriesOnly, kStartupRomDirChosenCmd);
}
// Assume that if the list is empty, this is the first time that loadConfig()
// has been called (and we should reload the list).
// has been called (and we should reload the list)
if(myList->getList().isEmpty())
{
myPrevDirButton->setEnabled(false);
@ -503,7 +517,7 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
if(!myNodeNames.empty())
dirname = myNodeNames.pop();
}
else
else
{
myCurrentNode = FilesystemNode(rom);
myNodeNames.push(myGameList->name(item));
@ -551,6 +565,12 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd,
instance().eventHandler().quit();
break;
case kStartupRomDirChosenCmd:
{
FilesystemNode dir(myRomDir->getResult());
instance().settings().setString("romdir", dir.getRelativePath());
// fall through to the next case
}
case kRomDirChosenCmd:
myCurrentNode = FilesystemNode(instance().settings().getString("romdir"));
if(!(myCurrentNode.exists() && myCurrentNode.isDirectory()))

View File

@ -30,6 +30,7 @@ class CommandSender;
class ContextMenu;
class DialogContainer;
class GameList;
class BrowserDialog;
class OptionsDialog;
class GlobalPropsDialog;
class LauncherFilterDialog;
@ -102,6 +103,7 @@ class LauncherDialog : public Dialog
ContextMenu* myMenu;
GlobalPropsDialog* myGlobalProps;
LauncherFilterDialog* myFilters;
BrowserDialog* myRomDir;
int mySelectedItem;
int myRomInfoSize;
@ -115,7 +117,9 @@ class LauncherDialog : public Dialog
kStartCmd = 'STRT',
kPrevDirCmd = 'PRVD',
kOptionsCmd = 'OPTI',
kQuitCmd = 'QUIT'
kQuitCmd = 'QUIT',
kStartupRomDirChosenCmd = 'rmsc'
};
};

View File

@ -26,10 +26,7 @@ SettingsWin32::SettingsWin32(OSystem* osystem)
: Settings(osystem)
{
setInternal("gl_lib", "opengl32.dll");
// Anything less than this usually causes sound skipping
setInternal("fragsize", "2048");
// Most Windows systems work better without this
setInternal("romdir", "c:\\");
setInternal("fragsize", "512");
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -