Replaced 'uselauncher' with 'exitlauncher', which specifies how the

ROM launcher should be used when exiting from a ROM.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2448 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2012-04-20 20:47:53 +00:00
parent f853518540
commit 6737091149
15 changed files with 89 additions and 60 deletions

View File

@ -27,6 +27,11 @@
* Updated FA2 bankswitch scheme (Star Castle) to emulate load/save * Updated FA2 bankswitch scheme (Star Castle) to emulate load/save
high score functionality to the Harmony cart flash RAM. high score functionality to the Harmony cart flash RAM.
* Replaced commandline argument 'uselauncher' with 'exitlauncher'. The
new option specifies the behaviour of the ROM launcher when exiting
a ROM (always exit to launcher, or only when the launcher was actually
used). This setting can now be changed in the GUI.
* Several updates to the internal properties database: * Several updates to the internal properties database:
- 'Juno First' ROMs now use an AtariVox/SaveKey when possible - 'Juno First' ROMs now use an AtariVox/SaveKey when possible
- 'Astroblast' ROMs now use the paddles by default - 'Astroblast' ROMs now use the paddles by default

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -2028,10 +2028,9 @@
</tr> </tr>
<tr> <tr>
<td><pre>-uselauncher &lt;1|0&gt;</pre></td> <td><pre>-exitlauncher &lt;1|0&gt;</pre></td>
<td>Use the built-in ROM launcher. If disabled, launching Stella will <td>Always exit to ROM launcher when exiting a ROM (normally, an exit to
simply print a help message, and exiting a ROM will completely launcher only happens when started with the launcher).</td>
exit the program.</td>
</tr> </tr>
<tr> <tr>
@ -2547,7 +2546,7 @@
<p>Several options are configurable in the ROM launcher. The size of the <p>Several options are configurable in the ROM launcher. The size of the
launcher and fonts, as well as the 'ROM info viewer' can be changed in launcher and fonts, as well as the 'ROM info viewer' can be changed in
<b>UI Settings =&gt; Launcher</b> dialog, as shown below:</p> <b>UI Settings =&gt; Launcher</b> dialog, as shown below:</p>
<img src="graphics/launcher_options.png"> <img src="graphics/options_ui.png">
<p>Most of the options are self-explanatory, except for the 'ROM Info <p>Most of the options are self-explanatory, except for the 'ROM Info
viewer', which is described below.</p> viewer', which is described below.</p>

View File

@ -104,8 +104,6 @@ class Array
return tmp; return tmp;
} }
// TODO: insert, remove, ...
T& operator [](int idx) T& operator [](int idx)
{ {
assert(idx >= 0 && idx < _size); assert(idx >= 0 && idx < _size);

View File

@ -750,7 +750,6 @@ void FBSurfaceSoft::addDirtyRect(uInt32 x, uInt32 y, uInt32 w, uInt32 h)
if(myIsBaseSurface) if(myIsBaseSurface)
{ {
// Add a dirty rect to the UI rectangle list // Add a dirty rect to the UI rectangle list
// TODO - intelligent merging of rectangles, to avoid overlap
SDL_Rect temp; SDL_Rect temp;
temp.x = x + myXOrig; temp.y = y + myYOrig; temp.w = w; temp.h = h; temp.x = x + myXOrig; temp.y = y + myYOrig; temp.w = w; temp.h = h;
myFB.myRectList->add(&temp); myFB.myRectList->add(&temp);

View File

@ -171,14 +171,9 @@ int main(int argc, char* argv[])
if(romfile == "" || romnode.isDirectory()) if(romfile == "" || romnode.isDirectory())
{ {
theOSystem->logMessage("Attempting to use ROM launcher ...\n", 2); theOSystem->logMessage("Attempting to use ROM launcher ...\n", 2);
if(theOSystem->settings().getBool("uselauncher")) bool launcherOpened = romfile != "" ?
{ theOSystem->createLauncher(romnode.getPath()) : theOSystem->createLauncher();
bool launcherOpened = romfile != "" ? if(!launcherOpened)
theOSystem->createLauncher(romnode.getPath()) : theOSystem->createLauncher();
if(!launcherOpened)
return Cleanup();
}
else
{ {
theOSystem->logMessage("Launcher could not be started, showing usage\n", 2); theOSystem->logMessage("Launcher could not be started, showing usage\n", 2);
theOSystem->settings().usage(); theOSystem->settings().usage();

View File

@ -216,7 +216,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "0dfbdadf8f1bc718e7e1bb3ccd5fef3d", "", "", "Mr. Pac-Man (New start tune) (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0dfbdadf8f1bc718e7e1bb3ccd5fef3d", "", "", "Mr. Pac-Man (New start tune) (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "0e0808227ef41f6825c06f25082c2e56", "", "", "Candi (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0e0808227ef41f6825c06f25082c2e56", "", "", "Candi (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "0e08cd2c5bcf11c6a7e5a009a7715b6a", "", "", "Boing! (PD) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0e08cd2c5bcf11c6a7e5a009a7715b6a", "", "", "Boing! (PD) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "0e224ea74310da4e7e2103400eb1b4bf", "Atari, Peter C. Niday, Howard Scott Warshaw", "", "Mind Maze (10-10-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0e224ea74310da4e7e2103400eb1b4bf", "Atari, Peter C. Niday, Howard Scott Warshaw", "", "Mind Maze (10-10-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "MINDLINK", "", "", "", "", "", "", "" },
{ "0e4b2b6e014a93ef8be896823da0d4ec", "", "", "Skiing (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0e4b2b6e014a93ef8be896823da0d4ec", "", "", "Skiing (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "0e713d4e272ea7322c5b27d645f56dd0", "Home Vision - Gem International Corp.", "VCS83105", "Panda Chase (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0e713d4e272ea7322c5b27d645f56dd0", "Home Vision - Gem International Corp.", "VCS83105", "Panda Chase (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "0e7e73421606873b544e858c59dc283e", "Digivision", "", "Super Soccer (Digivision)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "0e7e73421606873b544e858c59dc283e", "Digivision", "", "Super Soccer (Digivision)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
@ -621,7 +621,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "2d9e5d8d083b6367eda880e80dfdfaeb", "Selchow & Righter - QDI", "87", "Glib (1983) (Selchow & Righter)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2d9e5d8d083b6367eda880e80dfdfaeb", "Selchow & Righter - QDI", "87", "Glib (1983) (Selchow & Righter)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2d9e65959808a6098c16c82a59c9d9dc", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2d9e65959808a6098c16c82a59c9d9dc", "Arcadia Corporation, Stephen Harland Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2dbc92688f9ba92a7e086d62be9df79d", "", "", "How to Draw a Playfield (1997) (Jim Crawford) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2dbc92688f9ba92a7e086d62be9df79d", "", "", "How to Draw a Playfield (1997) (Jim Crawford) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2dbdca3058035d2b40c734dcf06a86d9", "Thomas Jentzsch", "", "Asteroids DC+ (Thomas Jentzsch) (Hack)", "Uses the Joystick (left) or Steering (right) Controller", "Hack", "", "", "", "", "", "", "", "DRIVING", "", "54", "", "", "", "YES", "" }, { "2dbdca3058035d2b40c734dcf06a86d9", "Thomas Jentzsch", "", "Asteroids DC+ (Thomas Jentzsch) (Hack)", "Uses the Joystick (left) or Steering (right) Controller", "Hack", "", "", "", "", "", "", "", "DRIVING", "", "58", "", "", "", "YES", "" },
{ "2dcf9ce486393cd36ca0928cd53b96cb", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2dcf9ce486393cd36ca0928cd53b96cb", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "2dfec1615c49501fefc02165c81955e6", "", "", "Song (05-11-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "2dfec1615c49501fefc02165c81955e6", "", "", "Song (05-11-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
{ "2e0aed5bb619edcefa3fafb4fbe7c551", "", "", "Qb (2.06) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "2e0aed5bb619edcefa3fafb4fbe7c551", "", "", "Qb (2.06) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
@ -1272,7 +1272,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "60a61da9b2f43dd7e13a5093ec41a53d", "VentureVision, Dan Oliver", "VV2001", "Rescue Terra I (1982) (VentureVision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "60a61da9b2f43dd7e13a5093ec41a53d", "VentureVision, Dan Oliver", "VV2001", "Rescue Terra I (1982) (VentureVision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "60bbd425cb7214ddb9f9a31948e91ecb", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "60bbd425cb7214ddb9f9a31948e91ecb", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "60d304582d33e2957b73eb300a7495bb", "", "", "Jam Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "60d304582d33e2957b73eb300a7495bb", "", "", "Jam Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "60e0ea3cbe0913d39803477945e9e5ec", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "10", "", "", "", "", "" }, { "60e0ea3cbe0913d39803477945e9e5ec", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "", "" },
{ "613abf596c304ef6dbd8f3351920c37a", "", "", "Boring Pac-Man (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, { "613abf596c304ef6dbd8f3351920c37a", "", "", "Boring Pac-Man (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" },
{ "6141c095d0aee4e734bebfaac939030a", "Rainbow Vision - Suntek", "SS-017", "Mariana (Rainbow Vision) (PAL)", "AKA Seaquest", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "6141c095d0aee4e734bebfaac939030a", "Rainbow Vision - Suntek", "SS-017", "Mariana (Rainbow Vision) (PAL)", "AKA Seaquest", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "61426cee013306e7f7367534ab124747", "", "", "One Blue Bar Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "61426cee013306e7f7367534ab124747", "", "", "One Blue Bar Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -2436,7 +2436,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "bff8f8f53a8aeb1ee804004ccbb08313", "", "", "Droid Demo 22 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bff8f8f53a8aeb1ee804004ccbb08313", "", "", "Droid Demo 22 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "bffe34516aaa3cbf5d307eab382a7e95", "", "", "Euchre (Release Candidate) (PAL) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bffe34516aaa3cbf5d307eab382a7e95", "", "", "Euchre (Release Candidate) (PAL) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "c00734a2233ef683d9b6e622ac97a5c8", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (03-30-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c00734a2233ef683d9b6e622ac97a5c8", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (03-30-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "c00b65d1bae0aef6a1b5652c9c2156a1", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "10", "", "", "", "", "" }, { "c00b65d1bae0aef6a1b5652c9c2156a1", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "", "" },
{ "c02e1afa0671e438fd526055c556d231", "Atari", "", "A-Team (Atari) (Prototype) (PAL60)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, { "c02e1afa0671e438fd526055c556d231", "Atari", "", "A-Team (Atari) (Prototype) (PAL60)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" },
{ "c032c2bd7017fdfbba9a105ec50f800e", "Activision, Charlie Heath", "", "Thwocker (04-09-1984) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c032c2bd7017fdfbba9a105ec50f800e", "Activision, Charlie Heath", "", "Thwocker (04-09-1984) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "c033dc1d7b6fde41b9cadce9638909bb", "", "", "Skeleton (V1.1) (06-09-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c033dc1d7b6fde41b9cadce9638909bb", "", "", "Skeleton (V1.1) (06-09-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
@ -3287,7 +3287,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = {
{ "fdf6680b2b1e8054293a39700a765692", "", "", "Alpha Demo - The Beta Demo 2 (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fdf6680b2b1e8054293a39700a765692", "", "", "Alpha Demo - The Beta Demo 2 (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fe0b7f27e3ad50bbf9ff468ee56d553d", "", "", "Lines Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fe0b7f27e3ad50bbf9ff468ee56d553d", "", "", "Lines Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fe0bc4bb92c1c4de7d5706aaa8d8c10d", "", "", "Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fe0bc4bb92c1c4de7d5706aaa8d8c10d", "", "", "Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fe3b461d4c8b179fe68bc77760294c25", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "10", "", "", "", "", "" }, { "fe3b461d4c8b179fe68bc77760294c25", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "", "" },
{ "fe67087f9c22655ce519616fc6c6ef4d", "Atari, Randy Bowker", "CX26142", "Crack'ed (11-28-1988) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fe67087f9c22655ce519616fc6c6ef4d", "Atari, Randy Bowker", "CX26142", "Crack'ed (11-28-1988) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fe6abc0f63e31e2646c9c600926b5b7f", "Atari", "CX26137", "4 in 1 (02-19-1987) (Atari) (Prototype)", "Home Run, Canyon Bomber, Sky Diver, Night Driver", "Prototype", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fe6abc0f63e31e2646c9c600926b5b7f", "Atari", "CX26137", "4 in 1 (02-19-1987) (Atari) (Prototype)", "Home Run, Canyon Bomber, Sky Diver, Night Driver", "Prototype", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" },
{ "fe870018332a0221eb59fb18b0c6bccc", "", "", "Incoming (08-11-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fe870018332a0221eb59fb18b0c6bccc", "", "", "Incoming (08-11-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },

View File

@ -1032,7 +1032,8 @@ void EventHandler::handleEvent(Event::Type event, int state)
myOSystem->settings().saveConfig(); myOSystem->settings().saveConfig();
// Go back to the launcher, or immediately quit // Go back to the launcher, or immediately quit
if(myOSystem->settings().getBool("uselauncher")) if(myOSystem->settings().getBool("exitlauncher") ||
myOSystem->launcherUsed())
{ {
myOSystem->deleteConsole(); myOSystem->deleteConsole();
myOSystem->createLauncher(); myOSystem->createLauncher();

View File

@ -86,6 +86,7 @@ OSystem::OSystem()
myMenu(NULL), myMenu(NULL),
myCommandMenu(NULL), myCommandMenu(NULL),
myLauncher(NULL), myLauncher(NULL),
myLauncherUsed(false),
myDebugger(NULL), myDebugger(NULL),
myCheatManager(NULL), myCheatManager(NULL),
myStateManager(NULL), myStateManager(NULL),
@ -603,21 +604,24 @@ void OSystem::deleteConsole()
bool OSystem::createLauncher(const string& startdir) bool OSystem::createLauncher(const string& startdir)
{ {
mySettings->setString("tmpromdir", startdir); mySettings->setString("tmpromdir", startdir);
bool status = false;
myEventHandler->reset(EventHandler::S_LAUNCHER); myEventHandler->reset(EventHandler::S_LAUNCHER);
if(createFrameBuffer() != kSuccess) if(createFrameBuffer() == kSuccess)
{ {
logMessage("ERROR: Couldn't create launcher\n", 0); myLauncher->reStack();
return false; myFrameBuffer->setCursorState();
myFrameBuffer->refresh();
setFramerate(60);
resetLoopTiming();
status = true;
} }
myLauncher->reStack(); else
myFrameBuffer->setCursorState(); logMessage("ERROR: Couldn't create launcher\n", 0);
myFrameBuffer->refresh();
setFramerate(60); myLauncherUsed = myLauncherUsed || status;
resetLoopTiming(); return status;
return true;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -350,6 +350,14 @@ class OSystem
*/ */
bool createLauncher(const string& startdir = ""); bool createLauncher(const string& startdir = "");
/**
Answers whether the ROM launcher was actually successfully used
at some point since the app started.
@return True on success, otherwise false
*/
bool launcherUsed() const { return myLauncherUsed; }
/** /**
Gets all possible info about the ROM by creating a temporary Gets all possible info about the ROM by creating a temporary
Console object and querying it. Console object and querying it.
@ -509,6 +517,7 @@ class OSystem
// Pointer to the Launcher object // Pointer to the Launcher object
Launcher* myLauncher; Launcher* myLauncher;
bool myLauncherUsed;
// Pointer to the Debugger object // Pointer to the Debugger object
Debugger* myDebugger; Debugger* myDebugger;

View File

@ -98,7 +98,7 @@ Settings::Settings(OSystem* osystem)
setInternal("cfgdir", ""); setInternal("cfgdir", "");
// ROM browser options // ROM browser options
setInternal("uselauncher", "true"); setInternal("exitlauncher", "false");
setInternal("launcherres", "640x480"); setInternal("launcherres", "640x480");
setInternal("launcherfont", "medium"); setInternal("launcherfont", "medium");
setInternal("launcherexts", "allroms"); setInternal("launcherexts", "allroms");
@ -384,7 +384,7 @@ void Settings::usage()
<< endl << endl
<< " -rominfo <rom> Display detailed information for the given ROM\n" << " -rominfo <rom> Display detailed information for the given ROM\n"
<< " -listrominfo Display contents of stella.pro, one line per ROM entry\n" << " -listrominfo Display contents of stella.pro, one line per ROM entry\n"
<< " -uselauncher <1|0> Use the built-in ROM launcher\n" << " -exitlauncher <1|0> On exiting a ROM, go back to the ROM launcher\n"
<< " -launcherres <WxH> The resolution to use in ROM launcher mode\n" << " -launcherres <WxH> The resolution to use in ROM launcher mode\n"
<< " -launcherfont <small|medium| Use the specified font in the ROM launcher\n" << " -launcherfont <small|medium| Use the specified font in the ROM launcher\n"
<< " large>\n" << " large>\n"

View File

@ -402,13 +402,6 @@
"Controller.MouseAxis" "01" "Controller.MouseAxis" "01"
"" ""
"Cartridge.MD5" "7b5207e68ee85b16998bea861987c690"
"Cartridge.Manufacturer" "Atari, Carol Shaw"
"Cartridge.ModelNo" "CX26163P"
"Cartridge.Name" "3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)"
"Display.YStart" "62"
""
"Cartridge.MD5" "f1beca5a198cf08190487e5c27b8e540" "Cartridge.MD5" "f1beca5a198cf08190487e5c27b8e540"
"Cartridge.Name" "Fu Kung! (V0.16) (2003) (AD)" "Cartridge.Name" "Fu Kung! (V0.16) (2003) (AD)"
"" ""
@ -421,6 +414,13 @@
"Display.Height" "230" "Display.Height" "230"
"" ""
"Cartridge.MD5" "7b5207e68ee85b16998bea861987c690"
"Cartridge.Manufacturer" "Atari, Carol Shaw"
"Cartridge.ModelNo" "CX26163P"
"Cartridge.Name" "3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)"
"Display.YStart" "62"
""
"Cartridge.MD5" "cba56e939252b05df7b7de87307d12ca" "Cartridge.MD5" "cba56e939252b05df7b7de87307d12ca"
"Cartridge.Name" "Playfield Text Demo (2001) (Roger Williams)" "Cartridge.Name" "Playfield Text Demo (2001) (Roger Williams)"
"" ""
@ -760,16 +760,6 @@
"Cartridge.Rarity" "Prototype" "Cartridge.Rarity" "Prototype"
"" ""
"Cartridge.MD5" "81414174f1816d5c1e583af427ac89fc"
"Cartridge.Manufacturer" "Thomas Jentzsch"
"Cartridge.Name" "Treasure Below (Thomas Jentzsch)"
"Cartridge.Note" "NTSC Conversion"
"Cartridge.Rarity" "Homebrew"
"Console.RightDifficulty" "A"
"Display.YStart" "20"
"Display.Height" "230"
""
"Cartridge.MD5" "cd568d6acb2f14477ebf7e59fb382292" "Cartridge.MD5" "cd568d6acb2f14477ebf7e59fb382292"
"Cartridge.Manufacturer" "Videospielkassette - Ariola" "Cartridge.Manufacturer" "Videospielkassette - Ariola"
"Cartridge.ModelNo" "PGP235" "Cartridge.ModelNo" "PGP235"
@ -782,6 +772,16 @@
"Cartridge.Name" "H.E.R.O. (Tron)" "Cartridge.Name" "H.E.R.O. (Tron)"
"" ""
"Cartridge.MD5" "81414174f1816d5c1e583af427ac89fc"
"Cartridge.Manufacturer" "Thomas Jentzsch"
"Cartridge.Name" "Treasure Below (Thomas Jentzsch)"
"Cartridge.Note" "NTSC Conversion"
"Cartridge.Rarity" "Homebrew"
"Console.RightDifficulty" "A"
"Display.YStart" "20"
"Display.Height" "230"
""
"Cartridge.MD5" "521f4dd1eb84a09b2b19959a41839aad" "Cartridge.MD5" "521f4dd1eb84a09b2b19959a41839aad"
"Cartridge.Manufacturer" "Bit Corporation" "Cartridge.Manufacturer" "Bit Corporation"
"Cartridge.ModelNo" "PG206" "Cartridge.ModelNo" "PG206"
@ -2617,9 +2617,8 @@
"Cartridge.ModelNo" "CX2621, CX2621P" "Cartridge.ModelNo" "CX2621, CX2621P"
"Cartridge.Name" "Video Olympics (1977) (Atari) (PAL) (4K)" "Cartridge.Name" "Video Olympics (1977) (Atari) (PAL) (4K)"
"Cartridge.Note" "Uses the Paddle Controllers" "Cartridge.Note" "Uses the Paddle Controllers"
"Controller.Left" "PADDLES" "Controller.Left" "PADDLES_IAXDR"
"Controller.Right" "PADDLES" "Controller.SwapPaddles" "YES"
"Controller.MouseAxis" "10"
"" ""
"Cartridge.MD5" "b2d5d200f0af8485413fad957828582a" "Cartridge.MD5" "b2d5d200f0af8485413fad957828582a"
@ -5025,7 +5024,6 @@
"Cartridge.Note" "Uses the Paddle Controllers" "Cartridge.Note" "Uses the Paddle Controllers"
"Controller.Left" "PADDLES_IAXDR" "Controller.Left" "PADDLES_IAXDR"
"Controller.SwapPaddles" "YES" "Controller.SwapPaddles" "YES"
"Controller.MouseAxis" "10"
"" ""
"Cartridge.MD5" "3556e125681aea864e17b09f3f3b2a75" "Cartridge.MD5" "3556e125681aea864e17b09f3f3b2a75"
@ -5535,7 +5533,6 @@
"Cartridge.Note" "Uses the Paddle Controllers" "Cartridge.Note" "Uses the Paddle Controllers"
"Controller.Left" "PADDLES_IAXDR" "Controller.Left" "PADDLES_IAXDR"
"Controller.SwapPaddles" "YES" "Controller.SwapPaddles" "YES"
"Controller.MouseAxis" "10"
"" ""
"Cartridge.MD5" "afd2cf258d51ae4965ee21abba3627ab" "Cartridge.MD5" "afd2cf258d51ae4965ee21abba3627ab"
@ -9246,6 +9243,7 @@
"Cartridge.Manufacturer" "Atari, Peter C. Niday, Howard Scott Warshaw" "Cartridge.Manufacturer" "Atari, Peter C. Niday, Howard Scott Warshaw"
"Cartridge.Name" "Mind Maze (10-10-1984) (Atari) (Prototype)" "Cartridge.Name" "Mind Maze (10-10-1984) (Atari) (Prototype)"
"Cartridge.Rarity" "Prototype" "Cartridge.Rarity" "Prototype"
"Controller.Right" "MINDLINK"
"" ""
"Cartridge.MD5" "eb503cc64c3560cd78b7051188b7ba56" "Cartridge.MD5" "eb503cc64c3560cd78b7051188b7ba56"
@ -15960,7 +15958,7 @@
"Cartridge.Note" "Uses the Joystick (left) or Steering (right) Controller" "Cartridge.Note" "Uses the Joystick (left) or Steering (right) Controller"
"Cartridge.Rarity" "Hack" "Cartridge.Rarity" "Hack"
"Controller.Right" "DRIVING" "Controller.Right" "DRIVING"
"Controller.MouseAxis" "54" "Controller.MouseAxis" "58"
"Display.Phosphor" "YES" "Display.Phosphor" "YES"
"" ""

View File

@ -55,7 +55,7 @@ UIDialog::UIDialog(OSystem* osystem, DialogContainer* parent,
// Set real dimensions // Set real dimensions
_w = 37 * fontWidth + 10; _w = 37 * fontWidth + 10;
_h = 9 * (lineHeight + 4) + 10; _h = 10 * (lineHeight + 4) + 10;
// The tab widget // The tab widget
xpos = ypos = vBorder; xpos = ypos = vBorder;
@ -67,7 +67,7 @@ UIDialog::UIDialog(OSystem* osystem, DialogContainer* parent,
// 1) Launcher options // 1) Launcher options
wid.clear(); wid.clear();
tabID = myTab->addTab(" Launcher "); tabID = myTab->addTab(" Launcher ");
lwidth = font.getStringWidth("Launcher Height: "); lwidth = font.getStringWidth("Exit to Launcher: ");
// Launcher width and height // Launcher width and height
myLauncherWidthSlider = new SliderWidget(myTab, font, xpos, ypos, pwidth, myLauncherWidthSlider = new SliderWidget(myTab, font, xpos, ypos, pwidth,
@ -137,6 +137,17 @@ UIDialog::UIDialog(OSystem* osystem, DialogContainer* parent,
wid.push_back(myRomViewerPopup); wid.push_back(myRomViewerPopup);
ypos += lineHeight + 4; ypos += lineHeight + 4;
// Exit to Launcher
pwidth = font.getStringWidth("If in use");
items.clear();
items.push_back("If in use", "0");
items.push_back("Always", "1");
myLauncherExitPopup =
new PopUpWidget(myTab, font, xpos, ypos+1, pwidth, lineHeight, items,
"Exit to Launcher: ", lwidth);
wid.push_back(myLauncherExitPopup);
ypos += lineHeight + 4;
// Add message concerning usage // Add message concerning usage
xpos = vBorder; ypos += 1*(lineHeight + 4); xpos = vBorder; ypos += 1*(lineHeight + 4);
lwidth = ifont.getStringWidth("(*) Changes require application restart"); lwidth = ifont.getStringWidth("(*) Changes require application restart");
@ -291,12 +302,16 @@ void UIDialog::loadConfig()
// Launcher font // Launcher font
const string& font = instance().settings().getString("launcherfont"); const string& font = instance().settings().getString("launcherfont");
myLauncherFontPopup->setSelected(font, "medium"); myLauncherFontPopup->setSelected(font, "medium");
// ROM launcher info viewer // ROM launcher info viewer
const string& viewer = instance().settings().getString("romviewer"); const string& viewer = instance().settings().getString("romviewer");
myRomViewerPopup->setSelected(viewer, "0"); myRomViewerPopup->setSelected(viewer, "0");
// Exit to launcher
bool exitlauncher = instance().settings().getBool("exitlauncher");
myLauncherExitPopup->setSelected(exitlauncher ? "1" : "0", "0");
#ifdef DEBUGGER_SUPPORT #ifdef DEBUGGER_SUPPORT
// Debugger size // Debugger size
instance().settings().getSize("debuggerres", w, h); instance().settings().getSize("debuggerres", w, h);
@ -341,6 +356,10 @@ void UIDialog::saveConfig()
instance().settings().setString("romviewer", instance().settings().setString("romviewer",
myRomViewerPopup->getSelectedTag()); myRomViewerPopup->getSelectedTag());
// Exit to Launcher
instance().settings().setString("exitlauncher",
myLauncherExitPopup->getSelectedTag());
// Debugger size // Debugger size
instance().settings().setSize("debuggerres", instance().settings().setSize("debuggerres",
myDebuggerWidthSlider->getValue(), myDebuggerHeightSlider->getValue()); myDebuggerWidthSlider->getValue(), myDebuggerHeightSlider->getValue());
@ -375,6 +394,7 @@ void UIDialog::setDefaults()
myLauncherHeightLabel->setValue(h); myLauncherHeightLabel->setValue(h);
myLauncherFontPopup->setSelected("medium", ""); myLauncherFontPopup->setSelected("medium", "");
myRomViewerPopup->setSelected("0", ""); myRomViewerPopup->setSelected("0", "");
myLauncherExitPopup->setSelected("0", "");
break; break;
} }

View File

@ -49,6 +49,7 @@ class UIDialog : public Dialog
StaticTextWidget* myLauncherWidthLabel; StaticTextWidget* myLauncherWidthLabel;
SliderWidget* myLauncherHeightSlider; SliderWidget* myLauncherHeightSlider;
StaticTextWidget* myLauncherHeightLabel; StaticTextWidget* myLauncherHeightLabel;
PopUpWidget* myLauncherExitPopup;
PopUpWidget* myLauncherFontPopup; PopUpWidget* myLauncherFontPopup;
PopUpWidget* myRomViewerPopup; PopUpWidget* myRomViewerPopup;