diff --git a/Changes.txt b/Changes.txt index e670d2b28..388634bf2 100644 --- a/Changes.txt +++ b/Changes.txt @@ -27,6 +27,11 @@ * Updated FA2 bankswitch scheme (Star Castle) to emulate load/save 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: - 'Juno First' ROMs now use an AtariVox/SaveKey when possible - 'Astroblast' ROMs now use the paddles by default diff --git a/docs/graphics/launcher_options.png b/docs/graphics/launcher_options.png deleted file mode 100644 index 63f8be610..000000000 Binary files a/docs/graphics/launcher_options.png and /dev/null differ diff --git a/docs/graphics/options_ui.png b/docs/graphics/options_ui.png index 63f8be610..c10faec84 100644 Binary files a/docs/graphics/options_ui.png and b/docs/graphics/options_ui.png differ diff --git a/docs/index.html b/docs/index.html index 21ba50b33..b49caa635 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2028,10 +2028,9 @@
-uselauncher <1|0>
-exitlauncher <1|0>
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 UI Settings => Launcher dialog, as shown below:
- +Most of the options are self-explanatory, except for the 'ROM Info viewer', which is described below.
diff --git a/src/common/Array.hxx b/src/common/Array.hxx index 6e55d5bd7..c841a4980 100644 --- a/src/common/Array.hxx +++ b/src/common/Array.hxx @@ -104,8 +104,6 @@ class Array return tmp; } - // TODO: insert, remove, ... - T& operator [](int idx) { assert(idx >= 0 && idx < _size); diff --git a/src/common/FrameBufferSoft.cxx b/src/common/FrameBufferSoft.cxx index 84e1e8d41..98cc185a8 100644 --- a/src/common/FrameBufferSoft.cxx +++ b/src/common/FrameBufferSoft.cxx @@ -750,7 +750,6 @@ void FBSurfaceSoft::addDirtyRect(uInt32 x, uInt32 y, uInt32 w, uInt32 h) if(myIsBaseSurface) { // Add a dirty rect to the UI rectangle list - // TODO - intelligent merging of rectangles, to avoid overlap SDL_Rect temp; temp.x = x + myXOrig; temp.y = y + myYOrig; temp.w = w; temp.h = h; myFB.myRectList->add(&temp); diff --git a/src/common/mainSDL.cxx b/src/common/mainSDL.cxx index c1a353a4f..7681782ec 100644 --- a/src/common/mainSDL.cxx +++ b/src/common/mainSDL.cxx @@ -171,14 +171,9 @@ int main(int argc, char* argv[]) if(romfile == "" || romnode.isDirectory()) { theOSystem->logMessage("Attempting to use ROM launcher ...\n", 2); - if(theOSystem->settings().getBool("uselauncher")) - { - bool launcherOpened = romfile != "" ? - theOSystem->createLauncher(romnode.getPath()) : theOSystem->createLauncher(); - if(!launcherOpened) - return Cleanup(); - } - else + bool launcherOpened = romfile != "" ? + theOSystem->createLauncher(romnode.getPath()) : theOSystem->createLauncher(); + if(!launcherOpened) { theOSystem->logMessage("Launcher could not be started, showing usage\n", 2); theOSystem->settings().usage(); diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index 8200a881e..559c5441d 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -216,7 +216,7 @@ static const char* DefProps[DEF_PROPS_SIZE][21] = { { "0dfbdadf8f1bc718e7e1bb3ccd5fef3d", "", "", "Mr. Pac-Man (New start tune) (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0e0808227ef41f6825c06f25082c2e56", "", "", "Candi (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0e713d4e272ea7322c5b27d645f56dd0", "Home Vision - Gem International Corp.", "VCS83105", "Panda Chase (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "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]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2dfec1615c49501fefc02165c81955e6", "", "", "Song (05-11-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "60bbd425cb7214ddb9f9a31948e91ecb", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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", "", "", "" }, { "6141c095d0aee4e734bebfaac939030a", "Rainbow Vision - Suntek", "SS-017", "Mariana (Rainbow Vision) (PAL)", "AKA Seaquest", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "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", "", "", "", "" }, { "c032c2bd7017fdfbba9a105ec50f800e", "Activision, Charlie Heath", "", "Thwocker (04-09-1984) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "fe0b7f27e3ad50bbf9ff468ee56d553d", "", "", "Lines Demo (Eckhard Stolberg) (PAL) (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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index e32682e88..77d3fa873 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -1032,7 +1032,8 @@ void EventHandler::handleEvent(Event::Type event, int state) myOSystem->settings().saveConfig(); // Go back to the launcher, or immediately quit - if(myOSystem->settings().getBool("uselauncher")) + if(myOSystem->settings().getBool("exitlauncher") || + myOSystem->launcherUsed()) { myOSystem->deleteConsole(); myOSystem->createLauncher(); diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index b6d8d8635..4a83d65a4 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -86,6 +86,7 @@ OSystem::OSystem() myMenu(NULL), myCommandMenu(NULL), myLauncher(NULL), + myLauncherUsed(false), myDebugger(NULL), myCheatManager(NULL), myStateManager(NULL), @@ -603,21 +604,24 @@ void OSystem::deleteConsole() bool OSystem::createLauncher(const string& startdir) { mySettings->setString("tmpromdir", startdir); + bool status = false; myEventHandler->reset(EventHandler::S_LAUNCHER); - if(createFrameBuffer() != kSuccess) + if(createFrameBuffer() == kSuccess) { - logMessage("ERROR: Couldn't create launcher\n", 0); - return false; + myLauncher->reStack(); + myFrameBuffer->setCursorState(); + myFrameBuffer->refresh(); + + setFramerate(60); + resetLoopTiming(); + status = true; } - myLauncher->reStack(); - myFrameBuffer->setCursorState(); - myFrameBuffer->refresh(); + else + logMessage("ERROR: Couldn't create launcher\n", 0); - setFramerate(60); - resetLoopTiming(); - - return true; + myLauncherUsed = myLauncherUsed || status; + return status; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/OSystem.hxx b/src/emucore/OSystem.hxx index cf0c65da5..e906f8b74 100644 --- a/src/emucore/OSystem.hxx +++ b/src/emucore/OSystem.hxx @@ -350,6 +350,14 @@ class OSystem */ 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 Console object and querying it. @@ -509,6 +517,7 @@ class OSystem // Pointer to the Launcher object Launcher* myLauncher; + bool myLauncherUsed; // Pointer to the Debugger object Debugger* myDebugger; diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 2bc914e9c..d4809bb58 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -98,7 +98,7 @@ Settings::Settings(OSystem* osystem) setInternal("cfgdir", ""); // ROM browser options - setInternal("uselauncher", "true"); + setInternal("exitlauncher", "false"); setInternal("launcherres", "640x480"); setInternal("launcherfont", "medium"); setInternal("launcherexts", "allroms"); @@ -384,7 +384,7 @@ void Settings::usage() << endl << " -rominfo