mirror of https://github.com/stella-emu/stella.git
Take power-on state into account during autodetection.
This commit is contained in:
parent
d105a833b6
commit
09bd0f817e
|
@ -198,6 +198,7 @@ Console::Console(OSystem& osystem, unique_ptr<Cartridge>& cart,
|
||||||
|
|
||||||
// Reset the system to its power-on state
|
// Reset the system to its power-on state
|
||||||
mySystem->reset();
|
mySystem->reset();
|
||||||
|
myRiot->update();
|
||||||
|
|
||||||
// Finally, add remaining info about the console
|
// Finally, add remaining info about the console
|
||||||
myConsoleInfo.CartName = myProperties.get(PropType::Cart_Name);
|
myConsoleInfo.CartName = myProperties.get(PropType::Cart_Name);
|
||||||
|
@ -239,7 +240,10 @@ void Console::autodetectFrameLayout(bool reset)
|
||||||
FrameLayoutDetector frameLayoutDetector;
|
FrameLayoutDetector frameLayoutDetector;
|
||||||
myTIA->setFrameManager(&frameLayoutDetector);
|
myTIA->setFrameManager(&frameLayoutDetector);
|
||||||
|
|
||||||
if (reset) mySystem->reset(true);
|
if (reset) {
|
||||||
|
mySystem->reset(true);
|
||||||
|
myRiot->update();
|
||||||
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 60; ++i) myTIA->update();
|
for(int i = 0; i < 60; ++i) myTIA->update();
|
||||||
|
|
||||||
|
@ -279,7 +283,10 @@ void Console::autodetectYStart(bool reset)
|
||||||
ystartDetector.setLayout(myDisplayFormat == "PAL" ? FrameLayout::pal : FrameLayout::ntsc);
|
ystartDetector.setLayout(myDisplayFormat == "PAL" ? FrameLayout::pal : FrameLayout::ntsc);
|
||||||
myTIA->setFrameManager(&ystartDetector);
|
myTIA->setFrameManager(&ystartDetector);
|
||||||
|
|
||||||
if (reset) mySystem->reset(true);
|
if (reset) {
|
||||||
|
mySystem->reset(true);
|
||||||
|
myRiot->update();
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 80; i++) myTIA->update();
|
for (int i = 0; i < 80; i++) myTIA->update();
|
||||||
|
|
||||||
|
|
|
@ -909,20 +909,14 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void EventHandler::handleConsoleStartupEvents()
|
void EventHandler::handleConsoleStartupEvents()
|
||||||
{
|
{
|
||||||
bool update = false;
|
|
||||||
if(myOSystem.settings().getBool("holdreset"))
|
if(myOSystem.settings().getBool("holdreset"))
|
||||||
{
|
|
||||||
handleEvent(Event::ConsoleReset);
|
handleEvent(Event::ConsoleReset);
|
||||||
update = true;
|
|
||||||
}
|
|
||||||
if(myOSystem.settings().getBool("holdselect"))
|
if(myOSystem.settings().getBool("holdselect"))
|
||||||
{
|
|
||||||
handleEvent(Event::ConsoleSelect);
|
handleEvent(Event::ConsoleSelect);
|
||||||
update = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
const string& holdjoy0 = myOSystem.settings().getString("holdjoy0");
|
const string& holdjoy0 = myOSystem.settings().getString("holdjoy0");
|
||||||
update = update || holdjoy0 != "";
|
|
||||||
if(BSPF::containsIgnoreCase(holdjoy0, "U"))
|
if(BSPF::containsIgnoreCase(holdjoy0, "U"))
|
||||||
handleEvent(Event::JoystickZeroUp);
|
handleEvent(Event::JoystickZeroUp);
|
||||||
if(BSPF::containsIgnoreCase(holdjoy0, "D"))
|
if(BSPF::containsIgnoreCase(holdjoy0, "D"))
|
||||||
|
@ -935,7 +929,6 @@ void EventHandler::handleConsoleStartupEvents()
|
||||||
handleEvent(Event::JoystickZeroFire);
|
handleEvent(Event::JoystickZeroFire);
|
||||||
|
|
||||||
const string& holdjoy1 = myOSystem.settings().getString("holdjoy1");
|
const string& holdjoy1 = myOSystem.settings().getString("holdjoy1");
|
||||||
update = update || holdjoy1 != "";
|
|
||||||
if(BSPF::containsIgnoreCase(holdjoy1, "U"))
|
if(BSPF::containsIgnoreCase(holdjoy1, "U"))
|
||||||
handleEvent(Event::JoystickOneUp);
|
handleEvent(Event::JoystickOneUp);
|
||||||
if(BSPF::containsIgnoreCase(holdjoy1, "D"))
|
if(BSPF::containsIgnoreCase(holdjoy1, "D"))
|
||||||
|
@ -946,14 +939,6 @@ void EventHandler::handleConsoleStartupEvents()
|
||||||
handleEvent(Event::JoystickOneRight);
|
handleEvent(Event::JoystickOneRight);
|
||||||
if(BSPF::containsIgnoreCase(holdjoy1, "F"))
|
if(BSPF::containsIgnoreCase(holdjoy1, "F"))
|
||||||
handleEvent(Event::JoystickOneFire);
|
handleEvent(Event::JoystickOneFire);
|
||||||
|
|
||||||
if(update)
|
|
||||||
myOSystem.console().riot().update();
|
|
||||||
|
|
||||||
#ifdef DEBUGGER_SUPPORT
|
|
||||||
if(myOSystem.settings().getBool("debug"))
|
|
||||||
enterDebugMode();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
#include "AudioSettings.hxx"
|
#include "AudioSettings.hxx"
|
||||||
#include "repository/KeyValueRepositoryNoop.hxx"
|
#include "repository/KeyValueRepositoryNoop.hxx"
|
||||||
#include "repository/KeyValueRepositoryConfigfile.hxx"
|
#include "repository/KeyValueRepositoryConfigfile.hxx"
|
||||||
|
#include "M6532.hxx"
|
||||||
|
|
||||||
#include "OSystem.hxx"
|
#include "OSystem.hxx"
|
||||||
|
|
||||||
|
@ -377,6 +378,9 @@ string OSystem::createConsole(const FilesystemNode& rom, const string& md5sum,
|
||||||
|
|
||||||
// Create an instance of the 2600 game console
|
// Create an instance of the 2600 game console
|
||||||
ostringstream buf;
|
ostringstream buf;
|
||||||
|
|
||||||
|
myEventHandler->handleConsoleStartupEvents();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
closeConsole();
|
closeConsole();
|
||||||
|
@ -425,9 +429,13 @@ string OSystem::createConsole(const FilesystemNode& rom, const string& md5sum,
|
||||||
|
|
||||||
myFrameBuffer->setCursorState();
|
myFrameBuffer->setCursorState();
|
||||||
|
|
||||||
// Also check if certain virtual buttons should be held down
|
|
||||||
// These must be checked each time a new console is being created
|
|
||||||
myEventHandler->handleConsoleStartupEvents();
|
myEventHandler->handleConsoleStartupEvents();
|
||||||
|
myConsole->riot().update();
|
||||||
|
|
||||||
|
#ifdef DEBUGGER_SUPPORT
|
||||||
|
if(mySettings->getBool("debug"))
|
||||||
|
myEventHandler->enterDebugMode();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return EmptyString;
|
return EmptyString;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue