mirror of https://github.com/stella-emu/stella.git
Move ROM properties normal enum to 'enum class'; this actually spread to other issues:
- properties names for 'Cartridge' changed to 'Cart'; this can speed up processing - fixed several bugs in stella.pro (missing newlines) - fixed 'create_props'; now it works from either the base directory or the tools directory Reworked properties database names
This commit is contained in:
parent
18babfc7a5
commit
bf865e37ab
|
@ -31,7 +31,9 @@
|
||||||
|
|
||||||
* Added proper Retron77 port. (TODO: doc)
|
* Added proper Retron77 port. (TODO: doc)
|
||||||
|
|
||||||
* Completely removed 'Display_Height' stuff. (TODO: doc)
|
* Reworked ROM properties database, making it load faster in certain
|
||||||
|
cases. Related to this, completely removed 'Display_Height' stuff.
|
||||||
|
(TODO: doc)
|
||||||
|
|
||||||
* Disabled some developer options for 'Player settings'. (TODO: doc)
|
* Disabled some developer options for 'Player settings'. (TODO: doc)
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@ MouseControl::MouseControl(Console& console, const string& mode)
|
||||||
|
|
||||||
// Now consider the possible modes for the mouse based on the left
|
// Now consider the possible modes for the mouse based on the left
|
||||||
// and right controllers
|
// and right controllers
|
||||||
bool noswap = BSPF::equalsIgnoreCase(myProps.get(Console_SwapPorts), "NO");
|
bool noswap = BSPF::equalsIgnoreCase(myProps.get(PropType::Console_SwapPorts), "NO");
|
||||||
if(noswap)
|
if(noswap)
|
||||||
{
|
{
|
||||||
addLeftControllerModes(noswap);
|
addLeftControllerModes(noswap);
|
||||||
|
@ -203,7 +203,7 @@ void MouseControl::addPaddleModes(int lport, int rport, int lname, int rname)
|
||||||
msg << "Mouse is Paddle " << rname << " controller";
|
msg << "Mouse is Paddle " << rname << " controller";
|
||||||
MouseMode mode1(type, rport, type, rport, msg.str());
|
MouseMode mode1(type, rport, type, rport, msg.str());
|
||||||
|
|
||||||
if(BSPF::equalsIgnoreCase(myProps.get(Controller_SwapPaddles), "NO"))
|
if(BSPF::equalsIgnoreCase(myProps.get(PropType::Controller_SwapPaddles), "NO"))
|
||||||
{
|
{
|
||||||
myModeList.push_back(mode0);
|
myModeList.push_back(mode0);
|
||||||
myModeList.push_back(mode1);
|
myModeList.push_back(mode1);
|
||||||
|
|
|
@ -293,7 +293,7 @@ void PNGLibrary::takeSnapshot(uInt32 number)
|
||||||
string sspath = myOSystem.snapshotSaveDir() +
|
string sspath = myOSystem.snapshotSaveDir() +
|
||||||
(myOSystem.settings().getString("snapname") != "int" ?
|
(myOSystem.settings().getString("snapname") != "int" ?
|
||||||
myOSystem.romFile().getNameWithExt("")
|
myOSystem.romFile().getNameWithExt("")
|
||||||
: myOSystem.console().properties().get(Cartridge_Name));
|
: myOSystem.console().properties().get(PropType::Cart_Name));
|
||||||
|
|
||||||
// Check whether we want multiple snapshots created
|
// Check whether we want multiple snapshots created
|
||||||
if(number > 0)
|
if(number > 0)
|
||||||
|
@ -333,10 +333,10 @@ void PNGLibrary::takeSnapshot(uInt32 number)
|
||||||
<< BSPF::ARCH << "]";
|
<< BSPF::ARCH << "]";
|
||||||
VarList::push_back(comments, "Software", version.str());
|
VarList::push_back(comments, "Software", version.str());
|
||||||
const string& name = (myOSystem.settings().getString("snapname") == "int")
|
const string& name = (myOSystem.settings().getString("snapname") == "int")
|
||||||
? myOSystem.console().properties().get(Cartridge_Name)
|
? myOSystem.console().properties().get(PropType::Cart_Name)
|
||||||
: myOSystem.romFile().getName();
|
: myOSystem.romFile().getName();
|
||||||
VarList::push_back(comments, "ROM Name", name);
|
VarList::push_back(comments, "ROM Name", name);
|
||||||
VarList::push_back(comments, "ROM MD5", myOSystem.console().properties().get(Cartridge_MD5));
|
VarList::push_back(comments, "ROM MD5", myOSystem.console().properties().get(PropType::Cart_MD5));
|
||||||
VarList::push_back(comments, "TV Effects", myOSystem.frameBuffer().tiaSurface().effectsInfo());
|
VarList::push_back(comments, "TV Effects", myOSystem.frameBuffer().tiaSurface().effectsInfo());
|
||||||
|
|
||||||
// Now create a PNG snapshot
|
// Now create a PNG snapshot
|
||||||
|
|
|
@ -209,7 +209,7 @@ void StateManager::loadState(int slot)
|
||||||
|
|
||||||
ostringstream buf;
|
ostringstream buf;
|
||||||
buf << myOSystem.stateDir()
|
buf << myOSystem.stateDir()
|
||||||
<< myOSystem.console().properties().get(Cartridge_Name)
|
<< myOSystem.console().properties().get(PropType::Cart_Name)
|
||||||
<< ".st" << slot;
|
<< ".st" << slot;
|
||||||
|
|
||||||
// Make sure the file can be opened in read-only mode
|
// Make sure the file can be opened in read-only mode
|
||||||
|
@ -255,7 +255,7 @@ void StateManager::saveState(int slot)
|
||||||
|
|
||||||
ostringstream buf;
|
ostringstream buf;
|
||||||
buf << myOSystem.stateDir()
|
buf << myOSystem.stateDir()
|
||||||
<< myOSystem.console().properties().get(Cartridge_Name)
|
<< myOSystem.console().properties().get(PropType::Cart_Name)
|
||||||
<< ".st" << slot;
|
<< ".st" << slot;
|
||||||
|
|
||||||
// Make sure the file can be opened for writing
|
// Make sure the file can be opened for writing
|
||||||
|
|
|
@ -815,7 +815,7 @@ string CartDebug::loadConfigFile()
|
||||||
if(myCfgFile == "")
|
if(myCfgFile == "")
|
||||||
{
|
{
|
||||||
const string& propsname =
|
const string& propsname =
|
||||||
myConsole.properties().get(Cartridge_Name) + ".cfg";
|
myConsole.properties().get(PropType::Cart_Name) + ".cfg";
|
||||||
|
|
||||||
FilesystemNode case1(myOSystem.romFile().getParent().getPath() + propsname);
|
FilesystemNode case1(myOSystem.romFile().getParent().getPath() + propsname);
|
||||||
FilesystemNode case2(myOSystem.cfgDir() + propsname);
|
FilesystemNode case2(myOSystem.cfgDir() + propsname);
|
||||||
|
@ -930,13 +930,13 @@ string CartDebug::saveConfigFile()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const string& propsname =
|
const string& propsname =
|
||||||
myConsole.properties().get(Cartridge_Name) + ".cfg";
|
myConsole.properties().get(PropType::Cart_Name) + ".cfg";
|
||||||
|
|
||||||
node = FilesystemNode(myOSystem.cfgDir() + propsname);
|
node = FilesystemNode(myOSystem.cfgDir() + propsname);
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& name = myConsole.properties().get(Cartridge_Name);
|
const string& name = myConsole.properties().get(PropType::Cart_Name);
|
||||||
const string& md5 = myConsole.properties().get(Cartridge_MD5);
|
const string& md5 = myConsole.properties().get(PropType::Cart_MD5);
|
||||||
|
|
||||||
ofstream out(node.getPath());
|
ofstream out(node.getPath());
|
||||||
if(!out.is_open())
|
if(!out.is_open())
|
||||||
|
@ -965,7 +965,7 @@ string CartDebug::saveDisassembly()
|
||||||
if(myDisasmFile == "")
|
if(myDisasmFile == "")
|
||||||
{
|
{
|
||||||
const string& propsname =
|
const string& propsname =
|
||||||
myConsole.properties().get(Cartridge_Name) + ".asm";
|
myConsole.properties().get(PropType::Cart_Name) + ".asm";
|
||||||
|
|
||||||
myDisasmFile = FilesystemNode(myOSystem.defaultSaveDir() + propsname).getPath();
|
myDisasmFile = FilesystemNode(myOSystem.defaultSaveDir() + propsname).getPath();
|
||||||
}
|
}
|
||||||
|
@ -1080,8 +1080,8 @@ string CartDebug::saveDisassembly()
|
||||||
out << "; Disassembly of " << myOSystem.romFile().getShortPath() << "\n"
|
out << "; Disassembly of " << myOSystem.romFile().getShortPath() << "\n"
|
||||||
<< "; Disassembled " << std::put_time(&timeinfo, "%c\n")
|
<< "; Disassembled " << std::put_time(&timeinfo, "%c\n")
|
||||||
<< "; Using Stella " << STELLA_VERSION << "\n;\n"
|
<< "; Using Stella " << STELLA_VERSION << "\n;\n"
|
||||||
<< "; ROM properties name : " << myConsole.properties().get(Cartridge_Name) << "\n"
|
<< "; ROM properties name : " << myConsole.properties().get(PropType::Cart_Name) << "\n"
|
||||||
<< "; ROM properties MD5 : " << myConsole.properties().get(Cartridge_MD5) << "\n"
|
<< "; ROM properties MD5 : " << myConsole.properties().get(PropType::Cart_MD5) << "\n"
|
||||||
<< "; Bankswitch type : " << myConsole.cartridge().about() << "\n;\n"
|
<< "; Bankswitch type : " << myConsole.cartridge().about() << "\n;\n"
|
||||||
<< "; Legend: * = CODE not yet run (tentative code)\n"
|
<< "; Legend: * = CODE not yet run (tentative code)\n"
|
||||||
<< "; D = DATA directive (referenced in some way)\n"
|
<< "; D = DATA directive (referenced in some way)\n"
|
||||||
|
@ -1212,7 +1212,7 @@ string CartDebug::saveDisassembly()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
string CartDebug::saveRom()
|
string CartDebug::saveRom()
|
||||||
{
|
{
|
||||||
const string& rom = myConsole.properties().get(Cartridge_Name) + ".a26";
|
const string& rom = myConsole.properties().get(PropType::Cart_Name) + ".a26";
|
||||||
|
|
||||||
FilesystemNode node(myOSystem.defaultSaveDir() + rom);
|
FilesystemNode node(myOSystem.defaultSaveDir() + rom);
|
||||||
ofstream out(node.getPath(), std::ios::binary);
|
ofstream out(node.getPath(), std::ios::binary);
|
||||||
|
|
|
@ -1062,7 +1062,8 @@ void DebuggerParser::executeDump()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ostringstream file;
|
ostringstream file;
|
||||||
file << debugger.myOSystem.defaultSaveDir() << debugger.myOSystem.console().properties().get(Cartridge_Name) << "_dbg_";
|
file << debugger.myOSystem.defaultSaveDir()
|
||||||
|
<< debugger.myOSystem.console().properties().get(PropType::Cart_Name) << "_dbg_";
|
||||||
if(execDepth > 0)
|
if(execDepth > 0)
|
||||||
{
|
{
|
||||||
file << execPrefix;
|
file << execPrefix;
|
||||||
|
|
|
@ -46,7 +46,8 @@ class ControllerWidget : public Widget, public CommandSender, public ControllerL
|
||||||
protected:
|
protected:
|
||||||
bool isLeftPort()
|
bool isLeftPort()
|
||||||
{
|
{
|
||||||
bool swappedPorts = instance().console().properties().get(Console_SwapPorts) == "YES";
|
bool swappedPorts =
|
||||||
|
instance().console().properties().get(PropType::Console_SwapPorts) == "YES";
|
||||||
return (controller().jack() == Controller::Jack::Left) ^ swappedPorts;
|
return (controller().jack() == Controller::Jack::Left) ^ swappedPorts;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ void TiaOutputWidget::saveSnapshot(int execDepth, const string& execPrefix)
|
||||||
}
|
}
|
||||||
ostringstream sspath;
|
ostringstream sspath;
|
||||||
sspath << instance().snapshotSaveDir()
|
sspath << instance().snapshotSaveDir()
|
||||||
<< instance().console().properties().get(Cartridge_Name);
|
<< instance().console().properties().get(PropType::Cart_Name);
|
||||||
sspath << "_dbg_";
|
sspath << "_dbg_";
|
||||||
if (execDepth > 0 && !execPrefix.empty()) {
|
if (execDepth > 0 && !execPrefix.empty()) {
|
||||||
sspath << execPrefix << "_";
|
sspath << execPrefix << "_";
|
||||||
|
|
|
@ -121,7 +121,7 @@ Console::Console(OSystem& osystem, unique_ptr<Cartridge>& cart,
|
||||||
|
|
||||||
// Let the cart know how to query for the 'Cartridge.StartBank' property
|
// Let the cart know how to query for the 'Cartridge.StartBank' property
|
||||||
myCart->setStartBankFromPropsFunc([this]() {
|
myCart->setStartBankFromPropsFunc([this]() {
|
||||||
const string& startbank = myProperties.get(Cartridge_StartBank);
|
const string& startbank = myProperties.get(PropType::Cart_StartBank);
|
||||||
return startbank == EmptyString ? -1 : atoi(startbank.c_str());
|
return startbank == EmptyString ? -1 : atoi(startbank.c_str());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -130,11 +130,11 @@ Console::Console(OSystem& osystem, unique_ptr<Cartridge>& cart,
|
||||||
|
|
||||||
// Auto-detect NTSC/PAL mode if it's requested
|
// Auto-detect NTSC/PAL mode if it's requested
|
||||||
string autodetected = "";
|
string autodetected = "";
|
||||||
myDisplayFormat = myProperties.get(Display_Format);
|
myDisplayFormat = myProperties.get(PropType::Display_Format);
|
||||||
|
|
||||||
// Add the real controllers for this system
|
// Add the real controllers for this system
|
||||||
// This must be done before the debugger is initialized
|
// This must be done before the debugger is initialized
|
||||||
const string& md5 = myProperties.get(Cartridge_MD5);
|
const string& md5 = myProperties.get(PropType::Cart_MD5);
|
||||||
setControllers(md5);
|
setControllers(md5);
|
||||||
|
|
||||||
// Mute audio and clear framebuffer while autodetection runs
|
// Mute audio and clear framebuffer while autodetection runs
|
||||||
|
@ -145,7 +145,7 @@ Console::Console(OSystem& osystem, unique_ptr<Cartridge>& cart,
|
||||||
{
|
{
|
||||||
autodetectFrameLayout();
|
autodetectFrameLayout();
|
||||||
|
|
||||||
if(myProperties.get(Display_Format) == "AUTO")
|
if(myProperties.get(PropType::Display_Format) == "AUTO")
|
||||||
{
|
{
|
||||||
autodetected = "*";
|
autodetected = "*";
|
||||||
myCurrentFormat = 0;
|
myCurrentFormat = 0;
|
||||||
|
@ -153,7 +153,7 @@ Console::Console(OSystem& osystem, unique_ptr<Cartridge>& cart,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atoi(myProperties.get(Display_YStart).c_str()) == 0) {
|
if (atoi(myProperties.get(PropType::Display_YStart).c_str()) == 0) {
|
||||||
autodetectYStart();
|
autodetectYStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,9 +203,9 @@ Console::Console(OSystem& osystem, unique_ptr<Cartridge>& cart,
|
||||||
mySystem->reset();
|
mySystem->reset();
|
||||||
|
|
||||||
// Finally, add remaining info about the console
|
// Finally, add remaining info about the console
|
||||||
myConsoleInfo.CartName = myProperties.get(Cartridge_Name);
|
myConsoleInfo.CartName = myProperties.get(PropType::Cart_Name);
|
||||||
myConsoleInfo.CartMD5 = myProperties.get(Cartridge_MD5);
|
myConsoleInfo.CartMD5 = myProperties.get(PropType::Cart_MD5);
|
||||||
bool swappedPorts = properties().get(Console_SwapPorts) == "YES";
|
bool swappedPorts = properties().get(PropType::Console_SwapPorts) == "YES";
|
||||||
myConsoleInfo.Control0 = myLeftControl->about(swappedPorts);
|
myConsoleInfo.Control0 = myLeftControl->about(swappedPorts);
|
||||||
myConsoleInfo.Control1 = myRightControl->about(swappedPorts);
|
myConsoleInfo.Control1 = myRightControl->about(swappedPorts);
|
||||||
myConsoleInfo.BankSwitch = myCart->about();
|
myConsoleInfo.BankSwitch = myCart->about();
|
||||||
|
@ -430,7 +430,7 @@ void Console::setFormat(uInt32 format)
|
||||||
myFormatAutodetected = false;
|
myFormatAutodetected = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
myProperties.set(Display_Format, saveformat);
|
myProperties.set(PropType::Display_Format, saveformat);
|
||||||
|
|
||||||
myConsoleInfo.DisplayFormat = myDisplayFormat + autodetected;
|
myConsoleInfo.DisplayFormat = myDisplayFormat + autodetected;
|
||||||
|
|
||||||
|
@ -550,13 +550,13 @@ void Console::togglePhosphor()
|
||||||
{
|
{
|
||||||
if(myOSystem.frameBuffer().tiaSurface().phosphorEnabled())
|
if(myOSystem.frameBuffer().tiaSurface().phosphorEnabled())
|
||||||
{
|
{
|
||||||
myProperties.set(Display_Phosphor, "NO");
|
myProperties.set(PropType::Display_Phosphor, "NO");
|
||||||
myOSystem.frameBuffer().tiaSurface().enablePhosphor(false);
|
myOSystem.frameBuffer().tiaSurface().enablePhosphor(false);
|
||||||
myOSystem.frameBuffer().showMessage("Phosphor effect disabled");
|
myOSystem.frameBuffer().showMessage("Phosphor effect disabled");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
myProperties.set(Display_Phosphor, "YES");
|
myProperties.set(PropType::Display_Phosphor, "YES");
|
||||||
myOSystem.frameBuffer().tiaSurface().enablePhosphor(true);
|
myOSystem.frameBuffer().tiaSurface().enablePhosphor(true);
|
||||||
myOSystem.frameBuffer().showMessage("Phosphor effect enabled");
|
myOSystem.frameBuffer().showMessage("Phosphor effect enabled");
|
||||||
}
|
}
|
||||||
|
@ -565,7 +565,7 @@ void Console::togglePhosphor()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Console::changePhosphor(int direction)
|
void Console::changePhosphor(int direction)
|
||||||
{
|
{
|
||||||
int blend = atoi(myProperties.get(Display_PPBlend).c_str());
|
int blend = atoi(myProperties.get(PropType::Display_PPBlend).c_str());
|
||||||
|
|
||||||
if(direction == +1) // increase blend
|
if(direction == +1) // increase blend
|
||||||
{
|
{
|
||||||
|
@ -594,7 +594,7 @@ void Console::changePhosphor(int direction)
|
||||||
|
|
||||||
ostringstream val;
|
ostringstream val;
|
||||||
val << blend;
|
val << blend;
|
||||||
myProperties.set(Display_PPBlend, val.str());
|
myProperties.set(PropType::Display_PPBlend, val.str());
|
||||||
myOSystem.frameBuffer().showMessage("Phosphor blend " + val.str());
|
myOSystem.frameBuffer().showMessage("Phosphor blend " + val.str());
|
||||||
myOSystem.frameBuffer().tiaSurface().enablePhosphor(true, blend);
|
myOSystem.frameBuffer().tiaSurface().enablePhosphor(true, blend);
|
||||||
}
|
}
|
||||||
|
@ -614,7 +614,7 @@ FBInitStatus Console::initializeVideo(bool full)
|
||||||
{
|
{
|
||||||
bool devSettings = myOSystem.settings().getBool("dev.settings");
|
bool devSettings = myOSystem.settings().getBool("dev.settings");
|
||||||
const string& title = string("Stella ") + STELLA_VERSION +
|
const string& title = string("Stella ") + STELLA_VERSION +
|
||||||
": \"" + myProperties.get(Cartridge_Name) + "\"";
|
": \"" + myProperties.get(PropType::Cart_Name) + "\"";
|
||||||
fbstatus = myOSystem.frameBuffer().createDisplay(title,
|
fbstatus = myOSystem.frameBuffer().createDisplay(title,
|
||||||
TIAConstants::viewableWidth, TIAConstants::viewableHeight);
|
TIAConstants::viewableWidth, TIAConstants::viewableHeight);
|
||||||
if(fbstatus != FBInitStatus::Success)
|
if(fbstatus != FBInitStatus::Success)
|
||||||
|
@ -707,13 +707,13 @@ void Console::changeYStart(int direction)
|
||||||
ystart = myAutodetectedYstart;
|
ystart = myAutodetectedYstart;
|
||||||
myYStartAutodetected = true;
|
myYStartAutodetected = true;
|
||||||
|
|
||||||
myProperties.set(Display_YStart, "0");
|
myProperties.set(PropType::Display_YStart, "0");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ostringstream ss;
|
ostringstream ss;
|
||||||
ss << ystart;
|
ss << ystart;
|
||||||
|
|
||||||
myProperties.set(Display_YStart, ss.str());
|
myProperties.set(PropType::Display_YStart, ss.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ystart != myTIA->ystart()) myTIA->setYStart(ystart);
|
if (ystart != myTIA->ystart()) myTIA->setYStart(ystart);
|
||||||
|
@ -747,7 +747,7 @@ void Console::updateYStart(uInt32 ystart)
|
||||||
void Console::setTIAProperties()
|
void Console::setTIAProperties()
|
||||||
{
|
{
|
||||||
// FIXME - ystart is probably disappearing soon, or at least autodetection is
|
// FIXME - ystart is probably disappearing soon, or at least autodetection is
|
||||||
uInt32 ystart = atoi(myProperties.get(Display_YStart).c_str());
|
uInt32 ystart = atoi(myProperties.get(PropType::Display_YStart).c_str());
|
||||||
if(ystart != 0)
|
if(ystart != 0)
|
||||||
ystart = BSPF::clamp(ystart, 0u, TIAConstants::maxYStart);
|
ystart = BSPF::clamp(ystart, 0u, TIAConstants::maxYStart);
|
||||||
else {
|
else {
|
||||||
|
@ -777,7 +777,7 @@ void Console::setTIAProperties()
|
||||||
void Console::createAudioQueue()
|
void Console::createAudioQueue()
|
||||||
{
|
{
|
||||||
bool useStereo = myOSystem.settings().getBool(AudioSettings::SETTING_STEREO)
|
bool useStereo = myOSystem.settings().getBool(AudioSettings::SETTING_STEREO)
|
||||||
|| myProperties.get(Cartridge_Sound) == "STEREO";
|
|| myProperties.get(PropType::Cart_Sound) == "STEREO";
|
||||||
|
|
||||||
myAudioQueue = make_shared<AudioQueue>(
|
myAudioQueue = make_shared<AudioQueue>(
|
||||||
myEmulationTiming.audioFragmentSize(),
|
myEmulationTiming.audioFragmentSize(),
|
||||||
|
@ -809,11 +809,11 @@ void Console::setControllers(const string& rommd5)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Setup the controllers based on properties
|
// Setup the controllers based on properties
|
||||||
string left = myProperties.get(Controller_Left);
|
string left = myProperties.get(PropType::Controller_Left);
|
||||||
string right = myProperties.get(Controller_Right);
|
string right = myProperties.get(PropType::Controller_Right);
|
||||||
uInt32 size = 0;
|
uInt32 size = 0;
|
||||||
const uInt8* image = myCart->getImage(size);
|
const uInt8* image = myCart->getImage(size);
|
||||||
const bool swappedPorts = myProperties.get(Console_SwapPorts) != "NO";
|
const bool swappedPorts = myProperties.get(PropType::Console_SwapPorts) != "NO";
|
||||||
|
|
||||||
// Try to detect controllers
|
// Try to detect controllers
|
||||||
if(image != nullptr || size != 0)
|
if(image != nullptr || size != 0)
|
||||||
|
@ -871,7 +871,7 @@ unique_ptr<Controller> Console::getControllerPort(const string& rommd5,
|
||||||
else if(BSPF::startsWithIgnoreCase(controllerName, "PADDLES"))
|
else if(BSPF::startsWithIgnoreCase(controllerName, "PADDLES"))
|
||||||
{
|
{
|
||||||
// Also check if we should swap the paddles plugged into a jack
|
// Also check if we should swap the paddles plugged into a jack
|
||||||
bool swapPaddles = myProperties.get(Controller_SwapPaddles) == "YES";
|
bool swapPaddles = myProperties.get(PropType::Controller_SwapPaddles) == "YES";
|
||||||
bool swapAxis = false, swapDir = false;
|
bool swapAxis = false, swapDir = false;
|
||||||
if(controllerName == "PADDLES_IAXIS")
|
if(controllerName == "PADDLES_IAXIS")
|
||||||
swapAxis = true;
|
swapAxis = true;
|
||||||
|
|
|
@ -491,7 +491,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
|
||||||
{ "2319922df4d0c820b3e5f15faa870cc3", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "2319922df4d0c820b3e5f15faa870cc3", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "2327456f86d7e0deda94758c518d05b3", "Digitel", "", "Mr. Postman (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "2327456f86d7e0deda94758c518d05b3", "Digitel", "", "Mr. Postman (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "2351d26d0bfdee3095bec9c05cbcf7b0", "", "", "Warring Worms (19-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "2351d26d0bfdee3095bec9c05cbcf7b0", "", "", "Warring Worms (19-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "2353725ec98e0f0073462109e886efd7", "Champ Games", "CG-03-P", "Scramble (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
|
{ "2353725ec98e0f0073462109e886efd7", "Champ Games", "CG-03-P", "Scramble (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "GENESIS", "", "", "", "PAL60", "", "YES", "" },
|
||||||
{ "235436ab0832370e73677c9c6f0c8b06", "", "", "Beast Invaders (Double Shot) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "235436ab0832370e73677c9c6f0c8b06", "", "", "Beast Invaders (Double Shot) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "2365e1534d67f94d8670394ab99150ce", "Thomas Jentzsch", "", "Missile Command (Atari Mouse) (2002) (TJ)", "Uses Atari ST Mouse Controller", "Homebrew", "", "", "", "", "", "", "", "ATARIMOUSE", "ATARIMOUSE", "", "", "", "", "YES", "" },
|
{ "2365e1534d67f94d8670394ab99150ce", "Thomas Jentzsch", "", "Missile Command (Atari Mouse) (2002) (TJ)", "Uses Atari ST Mouse Controller", "Homebrew", "", "", "", "", "", "", "", "ATARIMOUSE", "ATARIMOUSE", "", "", "", "", "YES", "" },
|
||||||
{ "23d445ea19a18fb78d5035878d9fb649", "CBS Electronics - JWDA, Sylvia Day, Todd Marshall, Henry Will IV", "4L1818, 4L1819, 4L1820, 4L1821", "Mouse Trap (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
|
{ "23d445ea19a18fb78d5035878d9fb649", "CBS Electronics - JWDA, Sylvia Day, Todd Marshall, Henry Will IV", "4L1818, 4L1819, 4L1820, 4L1821", "Mouse Trap (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
|
||||||
|
@ -1232,7 +1232,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
|
||||||
{ "59e53894b3899ee164c91cfa7842da66", "Data Age", "", "Survival Run (1983) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "59e53894b3899ee164c91cfa7842da66", "Data Age", "", "Survival Run (1983) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "59e96de9628e8373d1c685f5e57dcf10", "PlayAround - J.H.M.", "204", "Beat 'Em & Eat 'Em (1982) (PlayAround)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "AUTO 45", "", "", "", "" },
|
{ "59e96de9628e8373d1c685f5e57dcf10", "PlayAround - J.H.M.", "204", "Beat 'Em & Eat 'Em (1982) (PlayAround)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "AUTO 45", "", "", "", "" },
|
||||||
{ "59f596285d174233c84597dee6f34f1f", "CCE", "C-811", "River Raid (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "59f596285d174233c84597dee6f34f1f", "CCE", "C-811", "River Raid (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "5a0ff99ba10bd26d542e1d6f59f56850", "Champ Games", "CG-04-P", "Super Cobra Arcade (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" },
|
{ "5a0ff99ba10bd26d542e1d6f59f56850", "Champ Games", "CG-04-P", "Super Cobra Arcade (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "GENESIS", "", "", "", "PAL60", "", "YES", "" },
|
||||||
{ "5a17e30e6e911e74ccd7b716d02b16c6", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "5a17e30e6e911e74ccd7b716d02b16c6", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "5a272012a62becabcd52920348c7c60b", "Star Game", "", "Pitfall (Star Game)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "5a272012a62becabcd52920348c7c60b", "Star Game", "", "Pitfall (Star Game)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "5a2f2dcd775207536d9299e768bcd2df", "Otto Versand", "781698", "Flippern (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "5a2f2dcd775207536d9299e768bcd2df", "Otto Versand", "781698", "Flippern (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
|
@ -1828,7 +1828,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
|
||||||
{ "83f50fa0fbae545e4b88bb53b788c341", "Atari, Larry Kaplan - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "83f50fa0fbae545e4b88bb53b788c341", "Atari, Larry Kaplan - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "83fafd7bd12e3335166c6314b3bde528", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "83fafd7bd12e3335166c6314b3bde528", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "840a5a2eaea24d95d289f514fd12f9bb", "", "", "GBImprov (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "840a5a2eaea24d95d289f514fd12f9bb", "", "", "GBImprov (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "841057f83ce3731e6bbfda1707cbca58", "Champ Games", "CG-04-N", "Super Cobra Arcade (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "841057f83ce3731e6bbfda1707cbca58", "Champ Games", "CG-04-N", "Super Cobra Arcade (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "YES", "" },
|
||||||
{ "841b7bc1cad05f5408302308777d49dc", "Activision", "", "Unknown Activision Game (10-22-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "841b7bc1cad05f5408302308777d49dc", "Activision", "", "Unknown Activision Game (10-22-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "84290e333ff7567c2380f179430083b8", "Imagic, Dave Johnson", "13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "84290e333ff7567c2380f179430083b8", "Imagic, Dave Johnson", "13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "843435eb360ed72085f7ab9374f9749a", "Joe Grand", "", "SCSIcide (1.31) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "" },
|
{ "843435eb360ed72085f7ab9374f9749a", "Joe Grand", "", "SCSIcide (1.31) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "" },
|
||||||
|
@ -3146,7 +3146,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = {
|
||||||
{ "e9db2f91efe6ff7ea3546e2c2578fb09", "Omegamatrix", "", "Millipede (Atari Mouse) v6.5 (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "" },
|
{ "e9db2f91efe6ff7ea3546e2c2578fb09", "Omegamatrix", "", "Millipede (Atari Mouse) v6.5 (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "" },
|
||||||
{ "e9e646f730b8400cd5da08c849ef3e3b", "Tron", "", "Enduro (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "e9e646f730b8400cd5da08c849ef3e3b", "Tron", "", "Enduro (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "e9e6ad30549a6e2cd89fe93b7691d447", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)", "AKA Nile Flyer, Sphinx", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "e9e6ad30549a6e2cd89fe93b7691d447", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)", "AKA Nile Flyer, Sphinx", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "e9f25c7af4f27c9e1b5b8f6fe6141e8c", "Champ Games", "CG-03-N", "Scramble (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "e9f25c7af4f27c9e1b5b8f6fe6141e8c", "Champ Games", "CG-03-N", "Scramble (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "YES", "" },
|
||||||
{ "ea38fcfc06ad87a0aed1a3d1588744e4", "Atari, Lou Harp", "CX26122", "Sinistar (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "ea38fcfc06ad87a0aed1a3d1588744e4", "Atari, Lou Harp", "CX26122", "Sinistar (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "ea6d40db5498d6386571a76df448aa4c", "", "", "Vertical Playfield Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "ea6d40db5498d6386571a76df448aa4c", "", "", "Vertical Playfield Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
{ "ea7e25ade3fe68f5b786ee0aa82b1fe5", "", "", "Galatic (208 in 1) (Unknown) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
{ "ea7e25ade3fe68f5b786ee0aa82b1fe5", "", "", "Galatic (208 in 1) (Unknown) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" },
|
||||||
|
|
|
@ -109,7 +109,7 @@ void EventHandler::initialize()
|
||||||
Common::Base::setHexUppercase(myOSystem.settings().getBool("dbg.uhex"));
|
Common::Base::setHexUppercase(myOSystem.settings().getBool("dbg.uhex"));
|
||||||
|
|
||||||
// Default phosphor blend
|
// Default phosphor blend
|
||||||
Properties::setDefault(Display_PPBlend,
|
Properties::setDefault(PropType::Display_PPBlend,
|
||||||
myOSystem.settings().getString("tv.phosblend"));
|
myOSystem.settings().getString("tv.phosblend"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1106,7 +1106,7 @@ void EventHandler::setMouseControllerMode(const string& enable)
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& control = usemouse ?
|
const string& control = usemouse ?
|
||||||
myOSystem.console().properties().get(Controller_MouseAxis) : "none";
|
myOSystem.console().properties().get(PropType::Controller_MouseAxis) : "none";
|
||||||
|
|
||||||
myMouseControl = make_unique<MouseControl>(myOSystem.console(), control);
|
myMouseControl = make_unique<MouseControl>(myOSystem.console(), control);
|
||||||
myMouseControl->next(); // set first available mode
|
myMouseControl->next(); // set first available mode
|
||||||
|
|
|
@ -475,49 +475,52 @@ unique_ptr<Console> OSystem::openConsole(const FilesystemNode& romfile, string&
|
||||||
myPropSet->getMD5(md5, props);
|
myPropSet->getMD5(md5, props);
|
||||||
|
|
||||||
// Local helper method
|
// Local helper method
|
||||||
auto CMDLINE_PROPS_UPDATE = [&](const string& name, PropertyType prop)
|
auto CMDLINE_PROPS_UPDATE = [&](const string& name, PropType prop)
|
||||||
{
|
{
|
||||||
const string& s = mySettings->getString(name);
|
const string& s = mySettings->getString(name);
|
||||||
if(s != "") props.set(prop, s);
|
if(s != "") props.set(prop, s);
|
||||||
};
|
};
|
||||||
|
|
||||||
CMDLINE_PROPS_UPDATE("bs", Cartridge_Type);
|
CMDLINE_PROPS_UPDATE("bs", PropType::Cart_Type);
|
||||||
CMDLINE_PROPS_UPDATE("type", Cartridge_Type);
|
CMDLINE_PROPS_UPDATE("type", PropType::Cart_Type);
|
||||||
|
|
||||||
// Now create the cartridge
|
// Now create the cartridge
|
||||||
string cartmd5 = md5;
|
string cartmd5 = md5;
|
||||||
const string& type = props.get(Cartridge_Type);
|
const string& type = props.get(PropType::Cart_Type);
|
||||||
unique_ptr<Cartridge> cart =
|
unique_ptr<Cartridge> cart =
|
||||||
CartDetector::create(romfile, image, size, cartmd5, type, *mySettings);
|
CartDetector::create(romfile, image, size, cartmd5, type, *mySettings);
|
||||||
|
|
||||||
// It's possible that the cart created was from a piece of the image,
|
// It's possible that the cart created was from a piece of the image,
|
||||||
// and that the md5 (and hence the cart) has changed
|
// and that the md5 (and hence the cart) has changed
|
||||||
if(props.get(Cartridge_MD5) != cartmd5)
|
if(props.get(PropType::Cart_MD5) != cartmd5)
|
||||||
{
|
{
|
||||||
if(!myPropSet->getMD5(cartmd5, props))
|
if(!myPropSet->getMD5(cartmd5, props))
|
||||||
{
|
{
|
||||||
// Cart md5 wasn't found, so we create a new props for it
|
// Cart md5 wasn't found, so we create a new props for it
|
||||||
props.set(Cartridge_MD5, cartmd5);
|
props.set(PropType::Cart_MD5, cartmd5);
|
||||||
props.set(Cartridge_Name, props.get(Cartridge_Name)+cart->multiCartID());
|
props.set(PropType::Cart_Name, props.get(PropType::Cart_Name)+cart->multiCartID());
|
||||||
myPropSet->insert(props, false);
|
myPropSet->insert(props, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CMDLINE_PROPS_UPDATE("sp", Console_SwapPorts);
|
CMDLINE_PROPS_UPDATE("sp", PropType::Console_SwapPorts);
|
||||||
CMDLINE_PROPS_UPDATE("lc", Controller_Left);
|
CMDLINE_PROPS_UPDATE("lc", PropType::Controller_Left);
|
||||||
CMDLINE_PROPS_UPDATE("rc", Controller_Right);
|
CMDLINE_PROPS_UPDATE("rc", PropType::Controller_Right);
|
||||||
const string& s = mySettings->getString("bc");
|
const string& s = mySettings->getString("bc");
|
||||||
if(s != "") { props.set(Controller_Left, s); props.set(Controller_Right, s); }
|
if(s != "") {
|
||||||
CMDLINE_PROPS_UPDATE("cp", Controller_SwapPaddles);
|
props.set(PropType::Controller_Left, s);
|
||||||
CMDLINE_PROPS_UPDATE("ma", Controller_MouseAxis);
|
props.set(PropType::Controller_Right, s);
|
||||||
CMDLINE_PROPS_UPDATE("channels", Cartridge_Sound);
|
}
|
||||||
CMDLINE_PROPS_UPDATE("ld", Console_LeftDifficulty);
|
CMDLINE_PROPS_UPDATE("cp", PropType::Controller_SwapPaddles);
|
||||||
CMDLINE_PROPS_UPDATE("rd", Console_RightDifficulty);
|
CMDLINE_PROPS_UPDATE("ma", PropType::Controller_MouseAxis);
|
||||||
CMDLINE_PROPS_UPDATE("tv", Console_TelevisionType);
|
CMDLINE_PROPS_UPDATE("channels", PropType::Cart_Sound);
|
||||||
CMDLINE_PROPS_UPDATE("format", Display_Format);
|
CMDLINE_PROPS_UPDATE("ld", PropType::Console_LeftDiff);
|
||||||
CMDLINE_PROPS_UPDATE("ystart", Display_YStart);
|
CMDLINE_PROPS_UPDATE("rd", PropType::Console_RightDiff);
|
||||||
CMDLINE_PROPS_UPDATE("pp", Display_Phosphor);
|
CMDLINE_PROPS_UPDATE("tv", PropType::Console_TVType);
|
||||||
CMDLINE_PROPS_UPDATE("ppblend", Display_PPBlend);
|
CMDLINE_PROPS_UPDATE("format", PropType::Display_Format);
|
||||||
|
CMDLINE_PROPS_UPDATE("ystart", PropType::Display_YStart);
|
||||||
|
CMDLINE_PROPS_UPDATE("pp", PropType::Display_Phosphor);
|
||||||
|
CMDLINE_PROPS_UPDATE("ppblend", PropType::Display_PPBlend);
|
||||||
|
|
||||||
// Finally, create the cart with the correct properties
|
// Finally, create the cart with the correct properties
|
||||||
if(cart)
|
if(cart)
|
||||||
|
@ -534,7 +537,7 @@ void OSystem::closeConsole()
|
||||||
{
|
{
|
||||||
#ifdef CHEATCODE_SUPPORT
|
#ifdef CHEATCODE_SUPPORT
|
||||||
// If a previous console existed, save cheats before creating a new one
|
// If a previous console existed, save cheats before creating a new one
|
||||||
myCheatManager->saveCheats(myConsole->properties().get(Cartridge_MD5));
|
myCheatManager->saveCheats(myConsole->properties().get(PropType::Cart_MD5));
|
||||||
#endif
|
#endif
|
||||||
myConsole.reset();
|
myConsole.reset();
|
||||||
}
|
}
|
||||||
|
@ -717,7 +720,7 @@ void OSystem::mainLoop()
|
||||||
// Cleanup time
|
// Cleanup time
|
||||||
#ifdef CHEATCODE_SUPPORT
|
#ifdef CHEATCODE_SUPPORT
|
||||||
if(myConsole)
|
if(myConsole)
|
||||||
myCheatManager->saveCheats(myConsole->properties().get(Cartridge_MD5));
|
myCheatManager->saveCheats(myConsole->properties().get(PropType::Cart_MD5));
|
||||||
|
|
||||||
myCheatManager->saveCheatDatabase();
|
myCheatManager->saveCheatDatabase();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -33,38 +33,39 @@ Properties::Properties(const Properties& properties)
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Properties::set(PropertyType key, const string& value)
|
void Properties::set(PropType key, const string& value)
|
||||||
{
|
{
|
||||||
if(key != LastPropType)
|
uInt8 pos = static_cast<uInt8>(key);
|
||||||
|
if(pos < static_cast<uInt8>(PropType::NumTypes))
|
||||||
{
|
{
|
||||||
myProperties[key] = value;
|
myProperties[pos] = value;
|
||||||
if(BSPF::equalsIgnoreCase(myProperties[key], "AUTO-DETECT"))
|
if(BSPF::equalsIgnoreCase(myProperties[pos], "AUTO-DETECT"))
|
||||||
myProperties[key] = "AUTO";
|
myProperties[pos] = "AUTO";
|
||||||
|
|
||||||
switch(key)
|
switch(key)
|
||||||
{
|
{
|
||||||
case Cartridge_Type:
|
case PropType::Cart_Sound:
|
||||||
case Display_Format:
|
case PropType::Cart_Type:
|
||||||
case Cartridge_Sound:
|
case PropType::Console_LeftDiff:
|
||||||
case Console_LeftDifficulty:
|
case PropType::Console_RightDiff:
|
||||||
case Console_RightDifficulty:
|
case PropType::Console_TVType:
|
||||||
case Console_TelevisionType:
|
case PropType::Console_SwapPorts:
|
||||||
case Console_SwapPorts:
|
case PropType::Controller_Left:
|
||||||
case Controller_Left:
|
case PropType::Controller_Right:
|
||||||
case Controller_Right:
|
case PropType::Controller_SwapPaddles:
|
||||||
case Controller_SwapPaddles:
|
case PropType::Controller_MouseAxis:
|
||||||
case Controller_MouseAxis:
|
case PropType::Display_Format:
|
||||||
case Display_Phosphor:
|
case PropType::Display_Phosphor:
|
||||||
{
|
{
|
||||||
BSPF::toUpperCase(myProperties[key]);
|
BSPF::toUpperCase(myProperties[pos]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case Display_PPBlend:
|
case PropType::Display_PPBlend:
|
||||||
{
|
{
|
||||||
int blend = atoi(myProperties[key].c_str());
|
int blend = atoi(myProperties[pos].c_str());
|
||||||
if(blend < 0 || blend > 100)
|
if(blend < 0 || blend > 100)
|
||||||
myProperties[key] = ourDefaultProperties[key];
|
myProperties[pos] = ourDefaultProperties[pos];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ istream& operator>>(istream& is, Properties& p)
|
||||||
return is;
|
return is;
|
||||||
|
|
||||||
// Set the property
|
// Set the property
|
||||||
PropertyType type = Properties::getPropertyType(key);
|
PropType type = Properties::getPropType(key);
|
||||||
p.set(type, value);
|
p.set(type, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +115,7 @@ ostream& operator<<(ostream& os, const Properties& p)
|
||||||
{
|
{
|
||||||
// Write out each of the key and value pairs
|
// Write out each of the key and value pairs
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
for(int i = 0; i < LastPropType; ++i)
|
for(uInt8 i = 0; i < static_cast<uInt8>(PropType::NumTypes); ++i)
|
||||||
{
|
{
|
||||||
// Try to save some space by only saving the items that differ from default
|
// Try to save some space by only saving the items that differ from default
|
||||||
if(p.myProperties[i] != Properties::ourDefaultProperties[i])
|
if(p.myProperties[i] != Properties::ourDefaultProperties[i])
|
||||||
|
@ -191,7 +192,7 @@ void Properties::writeQuotedString(ostream& out, const string& s)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Properties::operator==(const Properties& properties) const
|
bool Properties::operator==(const Properties& properties) const
|
||||||
{
|
{
|
||||||
for(int i = 0; i < LastPropType; ++i)
|
for(uInt8 i = 0; i < static_cast<uInt8>(PropType::NumTypes); ++i)
|
||||||
if(myProperties[i] != properties.myProperties[i])
|
if(myProperties[i] != properties.myProperties[i])
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -218,79 +219,79 @@ Properties& Properties::operator=(const Properties& properties)
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Properties::setDefault(PropertyType key, const string& value)
|
void Properties::setDefault(PropType key, const string& value)
|
||||||
{
|
{
|
||||||
ourDefaultProperties[key] = value;
|
ourDefaultProperties[static_cast<uInt8>(key)] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Properties::copy(const Properties& properties)
|
void Properties::copy(const Properties& properties)
|
||||||
{
|
{
|
||||||
// Now, copy each property from properties
|
// Now, copy each property from properties
|
||||||
for(int i = 0; i < LastPropType; ++i)
|
for(uInt8 i = 0; i < static_cast<uInt8>(PropType::NumTypes); ++i)
|
||||||
myProperties[i] = properties.myProperties[i];
|
myProperties[i] = properties.myProperties[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Properties::print() const
|
void Properties::print() const
|
||||||
{
|
{
|
||||||
cout << get(Cartridge_MD5) << "|"
|
cout << get(PropType::Cart_MD5) << "|"
|
||||||
<< get(Cartridge_Name) << "|"
|
<< get(PropType::Cart_Name) << "|"
|
||||||
<< get(Cartridge_Manufacturer) << "|"
|
<< get(PropType::Cart_Manufacturer) << "|"
|
||||||
<< get(Cartridge_ModelNo) << "|"
|
<< get(PropType::Cart_ModelNo) << "|"
|
||||||
<< get(Cartridge_Note) << "|"
|
<< get(PropType::Cart_Note) << "|"
|
||||||
<< get(Cartridge_Rarity) << "|"
|
<< get(PropType::Cart_Rarity) << "|"
|
||||||
<< get(Cartridge_Sound) << "|"
|
<< get(PropType::Cart_Sound) << "|"
|
||||||
<< get(Cartridge_StartBank) << "|"
|
<< get(PropType::Cart_StartBank) << "|"
|
||||||
<< get(Cartridge_Type) << "|"
|
<< get(PropType::Cart_Type) << "|"
|
||||||
<< get(Console_LeftDifficulty) << "|"
|
<< get(PropType::Console_LeftDiff) << "|"
|
||||||
<< get(Console_RightDifficulty)<< "|"
|
<< get(PropType::Console_RightDiff) << "|"
|
||||||
<< get(Console_TelevisionType) << "|"
|
<< get(PropType::Console_TVType) << "|"
|
||||||
<< get(Console_SwapPorts) << "|"
|
<< get(PropType::Console_SwapPorts) << "|"
|
||||||
<< get(Controller_Left) << "|"
|
<< get(PropType::Controller_Left) << "|"
|
||||||
<< get(Controller_Right) << "|"
|
<< get(PropType::Controller_Right) << "|"
|
||||||
<< get(Controller_SwapPaddles) << "|"
|
<< get(PropType::Controller_SwapPaddles) << "|"
|
||||||
<< get(Controller_MouseAxis) << "|"
|
<< get(PropType::Controller_MouseAxis) << "|"
|
||||||
<< get(Display_Format) << "|"
|
<< get(PropType::Display_Format) << "|"
|
||||||
<< get(Display_YStart) << "|"
|
<< get(PropType::Display_YStart) << "|"
|
||||||
<< get(Display_Phosphor) << "|"
|
<< get(PropType::Display_Phosphor) << "|"
|
||||||
<< get(Display_PPBlend)
|
<< get(PropType::Display_PPBlend)
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Properties::setDefaults()
|
void Properties::setDefaults()
|
||||||
{
|
{
|
||||||
for(int i = 0; i < LastPropType; ++i)
|
for(uInt8 i = 0; i < static_cast<uInt8>(PropType::NumTypes); ++i)
|
||||||
myProperties[i] = ourDefaultProperties[i];
|
myProperties[i] = ourDefaultProperties[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
PropertyType Properties::getPropertyType(const string& name)
|
PropType Properties::getPropType(const string& name)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < LastPropType; ++i)
|
for(uInt8 i = 0; i < static_cast<uInt8>(PropType::NumTypes); ++i)
|
||||||
if(ourPropertyNames[i] == name)
|
if(ourPropertyNames[i] == name)
|
||||||
return PropertyType(i);
|
return PropType(i);
|
||||||
|
|
||||||
// Otherwise, indicate that the item wasn't found
|
// Otherwise, indicate that the item wasn't found
|
||||||
return LastPropType;
|
return PropType::NumTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Properties::printHeader()
|
void Properties::printHeader()
|
||||||
{
|
{
|
||||||
cout << "Cartridge_MD5|"
|
cout << "Cart_MD5|"
|
||||||
<< "Cartridge_Name|"
|
<< "Cart_Name|"
|
||||||
<< "Cartridge_Manufacturer|"
|
<< "Cart_Manufacturer|"
|
||||||
<< "Cartridge_ModelNo|"
|
<< "Cart_ModelNo|"
|
||||||
<< "Cartridge_Note|"
|
<< "Cart_Note|"
|
||||||
<< "Cartridge_Rarity|"
|
<< "Cart_Rarity|"
|
||||||
<< "Cartridge_Sound|"
|
<< "Cart_Sound|"
|
||||||
<< "Cartridge_StartBank|"
|
<< "Cart_StartBank|"
|
||||||
<< "Cartridge_Type|"
|
<< "Cart_Type|"
|
||||||
<< "Console_LeftDifficulty|"
|
<< "Console_LeftDiff|"
|
||||||
<< "Console_RightDifficulty|"
|
<< "Console_RightDiff|"
|
||||||
<< "Console_TelevisionType|"
|
<< "Console_TVType|"
|
||||||
<< "Console_SwapPorts|"
|
<< "Console_SwapPorts|"
|
||||||
<< "Controller_Left|"
|
<< "Controller_Left|"
|
||||||
<< "Controller_Right|"
|
<< "Controller_Right|"
|
||||||
|
@ -304,44 +305,46 @@ void Properties::printHeader()
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
string Properties::ourDefaultProperties[LastPropType] = {
|
string Properties::ourDefaultProperties[static_cast<uInt8>(PropType::NumTypes)] =
|
||||||
"", // Cartridge.MD5
|
{
|
||||||
"", // Cartridge.Manufacturer
|
"", // Cart.MD5
|
||||||
"", // Cartridge.ModelNo
|
"", // Cart.Manufacturer
|
||||||
"Untitled", // Cartridge.Name
|
"", // Cart.ModelNo
|
||||||
"", // Cartridge.Note
|
"", // Cart.Name
|
||||||
"", // Cartridge.Rarity
|
"", // Cart.Note
|
||||||
"MONO", // Cartridge.Sound
|
"", // Cart.Rarity
|
||||||
"", // Cartridge.StartBank
|
"MONO", // Cart.Sound
|
||||||
"AUTO", // Cartridge.Type
|
"", // Cart.StartBank
|
||||||
"B", // Console.LeftDifficulty
|
"AUTO", // Cart.Type
|
||||||
"B", // Console.RightDifficulty
|
"B", // Console.LeftDiff
|
||||||
"COLOR", // Console.TelevisionType
|
"B", // Console.RightDiff
|
||||||
"NO", // Console.SwapPorts
|
"COLOR", // Console.TVType
|
||||||
"AUTO", // Controller.Left
|
"NO", // Console.SwapPorts
|
||||||
"AUTO", // Controller.Right
|
"AUTO", // Controller.Left
|
||||||
"NO", // Controller.SwapPaddles
|
"AUTO", // Controller.Right
|
||||||
"AUTO", // Controller.MouseAxis
|
"NO", // Controller.SwapPaddles
|
||||||
"AUTO", // Display.Format
|
"AUTO", // Controller.MouseAxis
|
||||||
"0", // Display.YStart
|
"AUTO", // Display.Format
|
||||||
"NO", // Display.Phosphor
|
"0", // Display.YStart
|
||||||
"0" // Display.PPBlend
|
"NO", // Display.Phosphor
|
||||||
|
"0" // Display.PPBlend
|
||||||
};
|
};
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
const char* const Properties::ourPropertyNames[LastPropType] = {
|
const char* const Properties::ourPropertyNames[static_cast<uInt8>(PropType::NumTypes)] =
|
||||||
"Cartridge.MD5",
|
{
|
||||||
"Cartridge.Manufacturer",
|
"Cart.MD5",
|
||||||
"Cartridge.ModelNo",
|
"Cart.Manufacturer",
|
||||||
"Cartridge.Name",
|
"Cart.ModelNo",
|
||||||
"Cartridge.Note",
|
"Cart.Name",
|
||||||
"Cartridge.Rarity",
|
"Cart.Note",
|
||||||
"Cartridge.Sound",
|
"Cart.Rarity",
|
||||||
"Cartridge.StartBank",
|
"Cart.Sound",
|
||||||
"Cartridge.Type",
|
"Cart.StartBank",
|
||||||
"Console.LeftDifficulty",
|
"Cart.Type",
|
||||||
"Console.RightDifficulty",
|
"Console.LeftDiff",
|
||||||
"Console.TelevisionType",
|
"Console.RightDiff",
|
||||||
|
"Console.TVType",
|
||||||
"Console.SwapPorts",
|
"Console.SwapPorts",
|
||||||
"Controller.Left",
|
"Controller.Left",
|
||||||
"Controller.Right",
|
"Controller.Right",
|
||||||
|
|
|
@ -20,19 +20,19 @@
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
|
||||||
enum PropertyType {
|
enum class PropType : uInt8 {
|
||||||
Cartridge_MD5,
|
Cart_MD5,
|
||||||
Cartridge_Manufacturer,
|
Cart_Manufacturer,
|
||||||
Cartridge_ModelNo,
|
Cart_ModelNo,
|
||||||
Cartridge_Name,
|
Cart_Name,
|
||||||
Cartridge_Note,
|
Cart_Note,
|
||||||
Cartridge_Rarity,
|
Cart_Rarity,
|
||||||
Cartridge_Sound,
|
Cart_Sound,
|
||||||
Cartridge_StartBank,
|
Cart_StartBank,
|
||||||
Cartridge_Type,
|
Cart_Type,
|
||||||
Console_LeftDifficulty,
|
Console_LeftDiff,
|
||||||
Console_RightDifficulty,
|
Console_RightDiff,
|
||||||
Console_TelevisionType,
|
Console_TVType,
|
||||||
Console_SwapPorts,
|
Console_SwapPorts,
|
||||||
Controller_Left,
|
Controller_Left,
|
||||||
Controller_Right,
|
Controller_Right,
|
||||||
|
@ -42,7 +42,7 @@ enum PropertyType {
|
||||||
Display_YStart,
|
Display_YStart,
|
||||||
Display_Phosphor,
|
Display_Phosphor,
|
||||||
Display_PPBlend,
|
Display_PPBlend,
|
||||||
LastPropType
|
NumTypes
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -81,8 +81,9 @@ class Properties
|
||||||
@param key The key of the property to lookup
|
@param key The key of the property to lookup
|
||||||
@return The value of the property
|
@return The value of the property
|
||||||
*/
|
*/
|
||||||
const string& get(PropertyType key) const {
|
const string& get(PropType key) const {
|
||||||
return key != LastPropType ? myProperties[key] : EmptyString;
|
uInt8 pos = static_cast<uInt8>(key);
|
||||||
|
return pos < static_cast<uInt8>(PropType::NumTypes) ? myProperties[pos] : EmptyString;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -91,7 +92,7 @@ class Properties
|
||||||
@param key The key of the property to set
|
@param key The key of the property to set
|
||||||
@param value The value to assign to the property
|
@param value The value to assign to the property
|
||||||
*/
|
*/
|
||||||
void set(PropertyType key, const string& value);
|
void set(PropType key, const string& value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Load properties from the specified input stream
|
Load properties from the specified input stream
|
||||||
|
@ -142,7 +143,7 @@ class Properties
|
||||||
@param key The key of the property to set
|
@param key The key of the property to set
|
||||||
@param value The value to assign to the property
|
@param value The value to assign to the property
|
||||||
*/
|
*/
|
||||||
static void setDefault(PropertyType key, const string& value);
|
static void setDefault(PropType key, const string& value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
@ -175,9 +176,9 @@ class Properties
|
||||||
/**
|
/**
|
||||||
Get the property type associated with the named property
|
Get the property type associated with the named property
|
||||||
|
|
||||||
@param name The PropertyType key associated with the given string
|
@param name The PropType key associated with the given string
|
||||||
*/
|
*/
|
||||||
static PropertyType getPropertyType(const string& name);
|
static PropType getPropType(const string& name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
When printing each collection of ROM properties, it is useful to
|
When printing each collection of ROM properties, it is useful to
|
||||||
|
@ -188,13 +189,13 @@ class Properties
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// The array of properties
|
// The array of properties
|
||||||
string myProperties[LastPropType];
|
string myProperties[static_cast<uInt8>(PropType::NumTypes)];
|
||||||
|
|
||||||
// List of default properties to use when none have been provided
|
// List of default properties to use when none have been provided
|
||||||
static string ourDefaultProperties[LastPropType];
|
static string ourDefaultProperties[static_cast<uInt8>(PropType::NumTypes)];
|
||||||
|
|
||||||
// The text strings associated with each property type
|
// The text strings associated with each property type
|
||||||
static const char* const ourPropertyNames[LastPropType];
|
static const char* const ourPropertyNames[static_cast<uInt8>(PropType::NumTypes)];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -101,13 +101,14 @@ bool PropertiesSet::getMD5(const string& md5, Properties& properties,
|
||||||
while(low <= high)
|
while(low <= high)
|
||||||
{
|
{
|
||||||
int i = (low + high) / 2;
|
int i = (low + high) / 2;
|
||||||
int cmp = BSPF::compareIgnoreCase(md5, DefProps[i][Cartridge_MD5]);
|
int cmp = BSPF::compareIgnoreCase(md5,
|
||||||
|
DefProps[i][static_cast<uInt8>(PropType::Cart_MD5)]);
|
||||||
|
|
||||||
if(cmp == 0) // found it
|
if(cmp == 0) // found it
|
||||||
{
|
{
|
||||||
for(int p = 0; p < LastPropType; ++p)
|
for(uInt8 p = 0; p < static_cast<uInt8>(PropType::NumTypes); ++p)
|
||||||
if(DefProps[i][p][0] != 0)
|
if(DefProps[i][p][0] != 0)
|
||||||
properties.set(PropertyType(p), DefProps[i][p]);
|
properties.set(PropType(p), DefProps[i][p]);
|
||||||
|
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
|
@ -128,9 +129,9 @@ void PropertiesSet::getMD5WithInsert(const FilesystemNode& rom,
|
||||||
{
|
{
|
||||||
if(!getMD5(md5, properties))
|
if(!getMD5(md5, properties))
|
||||||
{
|
{
|
||||||
properties.set(Cartridge_MD5, md5);
|
properties.set(PropType::Cart_MD5, md5);
|
||||||
// Create a name suitable for using in properties
|
// Create a name suitable for using in properties
|
||||||
properties.set(Cartridge_Name, rom.getNameWithExt(""));
|
properties.set(PropType::Cart_Name, rom.getNameWithExt(""));
|
||||||
|
|
||||||
insert(properties, false);
|
insert(properties, false);
|
||||||
}
|
}
|
||||||
|
@ -149,7 +150,7 @@ void PropertiesSet::insert(const Properties& properties, bool save)
|
||||||
// most people tend not to do
|
// most people tend not to do
|
||||||
|
|
||||||
// Since the PropSet is keyed by md5, we can't insert without a valid one
|
// Since the PropSet is keyed by md5, we can't insert without a valid one
|
||||||
const string& md5 = properties.get(Cartridge_MD5);
|
const string& md5 = properties.get(PropType::Cart_MD5);
|
||||||
if(md5 == "")
|
if(md5 == "")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -196,11 +197,11 @@ void PropertiesSet::print() const
|
||||||
for(int i = 0; i < DEF_PROPS_SIZE; ++i)
|
for(int i = 0; i < DEF_PROPS_SIZE; ++i)
|
||||||
{
|
{
|
||||||
properties.setDefaults();
|
properties.setDefaults();
|
||||||
for(int p = 0; p < LastPropType; ++p)
|
for(uInt8 p = 0; p < static_cast<uInt8>(PropType::NumTypes); ++p)
|
||||||
if(DefProps[i][p][0] != 0)
|
if(DefProps[i][p][0] != 0)
|
||||||
properties.set(PropertyType(p), DefProps[i][p]);
|
properties.set(PropType(p), DefProps[i][p]);
|
||||||
|
|
||||||
list.emplace(DefProps[i][Cartridge_MD5], properties);
|
list.emplace(DefProps[i][static_cast<uInt8>(PropType::Cart_MD5)], properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now, print the resulting list
|
// Now, print the resulting list
|
||||||
|
|
|
@ -27,7 +27,7 @@ Switches::Switches(const Event& event, const Properties& properties,
|
||||||
mySwitches(0xFF),
|
mySwitches(0xFF),
|
||||||
myIs7800(false)
|
myIs7800(false)
|
||||||
{
|
{
|
||||||
if(properties.get(Console_RightDifficulty) == "B")
|
if(properties.get(PropType::Console_RightDiff) == "B")
|
||||||
{
|
{
|
||||||
mySwitches &= ~0x80;
|
mySwitches &= ~0x80;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ Switches::Switches(const Event& event, const Properties& properties,
|
||||||
mySwitches |= 0x80;
|
mySwitches |= 0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(properties.get(Console_LeftDifficulty) == "B")
|
if(properties.get(PropType::Console_LeftDiff) == "B")
|
||||||
{
|
{
|
||||||
mySwitches &= ~0x40;
|
mySwitches &= ~0x40;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ Switches::Switches(const Event& event, const Properties& properties,
|
||||||
mySwitches |= 0x40;
|
mySwitches |= 0x40;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(properties.get(Console_TelevisionType) == "COLOR")
|
if(properties.get(PropType::Console_TVType) == "COLOR")
|
||||||
{
|
{
|
||||||
mySwitches |= 0x08;
|
mySwitches |= 0x08;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,8 +86,8 @@ void TIASurface::initialize(const Console& console,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
p_blend = atoi(console.properties().get(Display_PPBlend).c_str());
|
p_blend = atoi(console.properties().get(PropType::Display_PPBlend).c_str());
|
||||||
enable = console.properties().get(Display_Phosphor) == "YES";
|
enable = console.properties().get(PropType::Display_Phosphor) == "YES";
|
||||||
}
|
}
|
||||||
enablePhosphor(enable, p_blend);
|
enablePhosphor(enable, p_blend);
|
||||||
|
|
||||||
|
|
26188
src/emucore/stella.pro
26188
src/emucore/stella.pro
File diff suppressed because it is too large
Load Diff
|
@ -363,7 +363,7 @@ void GameInfoDialog::loadConfig()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void GameInfoDialog::loadEmulationProperties(const Properties& props)
|
void GameInfoDialog::loadEmulationProperties(const Properties& props)
|
||||||
{
|
{
|
||||||
myBSType->setSelected(props.get(Cartridge_Type), "AUTO");
|
myBSType->setSelected(props.get(PropType::Cart_Type), "AUTO");
|
||||||
|
|
||||||
if(instance().hasConsole() && myBSType->getSelectedTag().toString() == "AUTO")
|
if(instance().hasConsole() && myBSType->getSelectedTag().toString() == "AUTO")
|
||||||
{
|
{
|
||||||
|
@ -377,7 +377,7 @@ void GameInfoDialog::loadEmulationProperties(const Properties& props)
|
||||||
else
|
else
|
||||||
myTypeDetected->setLabel("");
|
myTypeDetected->setLabel("");
|
||||||
|
|
||||||
myFormat->setSelected(props.get(Display_Format), "AUTO");
|
myFormat->setSelected(props.get(PropType::Display_Format), "AUTO");
|
||||||
if(instance().hasConsole() && myFormat->getSelectedTag().toString() == "AUTO")
|
if(instance().hasConsole() && myFormat->getSelectedTag().toString() == "AUTO")
|
||||||
{
|
{
|
||||||
const string& format = instance().console().about().DisplayFormat;
|
const string& format = instance().console().about().DisplayFormat;
|
||||||
|
@ -389,7 +389,7 @@ void GameInfoDialog::loadEmulationProperties(const Properties& props)
|
||||||
|
|
||||||
// if phosphor is always enabled, disable game specific phosphor settings
|
// if phosphor is always enabled, disable game specific phosphor settings
|
||||||
bool alwaysPhosphor = instance().settings().getString("tv.phosphor") == "always";
|
bool alwaysPhosphor = instance().settings().getString("tv.phosphor") == "always";
|
||||||
bool usePhosphor = props.get(Display_Phosphor) == "YES";
|
bool usePhosphor = props.get(PropType::Display_Phosphor) == "YES";
|
||||||
myPhosphor->setState(usePhosphor);
|
myPhosphor->setState(usePhosphor);
|
||||||
myPhosphor->setEnabled(!alwaysPhosphor);
|
myPhosphor->setEnabled(!alwaysPhosphor);
|
||||||
if (alwaysPhosphor)
|
if (alwaysPhosphor)
|
||||||
|
@ -398,10 +398,10 @@ void GameInfoDialog::loadEmulationProperties(const Properties& props)
|
||||||
myPhosphor->setLabel("Phosphor");
|
myPhosphor->setLabel("Phosphor");
|
||||||
myPPBlend->setEnabled(!alwaysPhosphor && usePhosphor);
|
myPPBlend->setEnabled(!alwaysPhosphor && usePhosphor);
|
||||||
|
|
||||||
const string& blend = props.get(Display_PPBlend);
|
const string& blend = props.get(PropType::Display_PPBlend);
|
||||||
myPPBlend->setValue(atoi(blend.c_str()));
|
myPPBlend->setValue(atoi(blend.c_str()));
|
||||||
|
|
||||||
mySound->setState(props.get(Cartridge_Sound) == "STEREO");
|
mySound->setState(props.get(PropType::Cart_Sound) == "STEREO");
|
||||||
// if stereo is always enabled, disable game specific stereo setting
|
// if stereo is always enabled, disable game specific stereo setting
|
||||||
mySound->setEnabled(!instance().audioSettings().stereo());
|
mySound->setEnabled(!instance().audioSettings().stereo());
|
||||||
}
|
}
|
||||||
|
@ -409,18 +409,18 @@ void GameInfoDialog::loadEmulationProperties(const Properties& props)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void GameInfoDialog::loadConsoleProperties(const Properties& props)
|
void GameInfoDialog::loadConsoleProperties(const Properties& props)
|
||||||
{
|
{
|
||||||
myLeftDiffGroup->setSelected(props.get(Console_LeftDifficulty) == "A" ? 0 : 1);
|
myLeftDiffGroup->setSelected(props.get(PropType::Console_LeftDiff) == "A" ? 0 : 1);
|
||||||
myRightDiffGroup->setSelected(props.get(Console_RightDifficulty) == "A" ? 0 : 1);
|
myRightDiffGroup->setSelected(props.get(PropType::Console_RightDiff) == "A" ? 0 : 1);
|
||||||
myTVTypeGroup->setSelected(props.get(Console_TelevisionType) == "BW" ? 1 : 0);
|
myTVTypeGroup->setSelected(props.get(PropType::Console_TVType) == "BW" ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void GameInfoDialog::loadControllerProperties(const Properties& props)
|
void GameInfoDialog::loadControllerProperties(const Properties& props)
|
||||||
{
|
{
|
||||||
bool swapPorts = props.get(Console_SwapPorts) == "YES";
|
bool swapPorts = props.get(PropType::Console_SwapPorts) == "YES";
|
||||||
bool autoDetect = false;
|
bool autoDetect = false;
|
||||||
BytePtr image;
|
BytePtr image;
|
||||||
string md5 = props.get(Cartridge_MD5);
|
string md5 = props.get(PropType::Cart_MD5);
|
||||||
uInt32 size = 0;
|
uInt32 size = 0;
|
||||||
const FilesystemNode& node = FilesystemNode(instance().launcher().selectedRom());
|
const FilesystemNode& node = FilesystemNode(instance().launcher().selectedRom());
|
||||||
|
|
||||||
|
@ -430,7 +430,7 @@ void GameInfoDialog::loadControllerProperties(const Properties& props)
|
||||||
autoDetect = true;
|
autoDetect = true;
|
||||||
|
|
||||||
string label = "";
|
string label = "";
|
||||||
string controller = props.get(Controller_Left);
|
string controller = props.get(PropType::Controller_Left);
|
||||||
|
|
||||||
myLeftPort->setSelected(controller, "AUTO");
|
myLeftPort->setSelected(controller, "AUTO");
|
||||||
if(myLeftPort->getSelectedTag().toString() == "AUTO")
|
if(myLeftPort->getSelectedTag().toString() == "AUTO")
|
||||||
|
@ -446,7 +446,7 @@ void GameInfoDialog::loadControllerProperties(const Properties& props)
|
||||||
myLeftPortDetected->setLabel(label);
|
myLeftPortDetected->setLabel(label);
|
||||||
|
|
||||||
label = "";
|
label = "";
|
||||||
controller = props.get(Controller_Right);
|
controller = props.get(PropType::Controller_Right);
|
||||||
|
|
||||||
myRightPort->setSelected(controller, "AUTO");
|
myRightPort->setSelected(controller, "AUTO");
|
||||||
if(myRightPort->getSelectedTag().toString() == "AUTO")
|
if(myRightPort->getSelectedTag().toString() == "AUTO")
|
||||||
|
@ -461,11 +461,11 @@ void GameInfoDialog::loadControllerProperties(const Properties& props)
|
||||||
}
|
}
|
||||||
myRightPortDetected->setLabel(label);
|
myRightPortDetected->setLabel(label);
|
||||||
|
|
||||||
mySwapPorts->setState(props.get(Console_SwapPorts) == "YES");
|
mySwapPorts->setState(props.get(PropType::Console_SwapPorts) == "YES");
|
||||||
mySwapPaddles->setState(props.get(Controller_SwapPaddles) == "YES");
|
mySwapPaddles->setState(props.get(PropType::Controller_SwapPaddles) == "YES");
|
||||||
|
|
||||||
// MouseAxis property (potentially contains 'range' information)
|
// MouseAxis property (potentially contains 'range' information)
|
||||||
istringstream m_axis(props.get(Controller_MouseAxis));
|
istringstream m_axis(props.get(PropType::Controller_MouseAxis));
|
||||||
string m_control, m_range;
|
string m_control, m_range;
|
||||||
m_axis >> m_control;
|
m_axis >> m_control;
|
||||||
bool autoAxis = BSPF::equalsIgnoreCase(m_control, "AUTO");
|
bool autoAxis = BSPF::equalsIgnoreCase(m_control, "AUTO");
|
||||||
|
@ -497,36 +497,36 @@ void GameInfoDialog::loadControllerProperties(const Properties& props)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void GameInfoDialog::loadCartridgeProperties(const Properties& props)
|
void GameInfoDialog::loadCartridgeProperties(const Properties& props)
|
||||||
{
|
{
|
||||||
myName->setText(props.get(Cartridge_Name));
|
myName->setText(props.get(PropType::Cart_Name));
|
||||||
myMD5->setText(props.get(Cartridge_MD5));
|
myMD5->setText(props.get(PropType::Cart_MD5));
|
||||||
myManufacturer->setText(props.get(Cartridge_Manufacturer));
|
myManufacturer->setText(props.get(PropType::Cart_Manufacturer));
|
||||||
myModelNo->setText(props.get(Cartridge_ModelNo));
|
myModelNo->setText(props.get(PropType::Cart_ModelNo));
|
||||||
myRarity->setText(props.get(Cartridge_Rarity));
|
myRarity->setText(props.get(PropType::Cart_Rarity));
|
||||||
myNote->setText(props.get(Cartridge_Note));
|
myNote->setText(props.get(PropType::Cart_Note));
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void GameInfoDialog::saveConfig()
|
void GameInfoDialog::saveConfig()
|
||||||
{
|
{
|
||||||
// Emulation properties
|
// Emulation properties
|
||||||
myGameProperties.set(Cartridge_Type, myBSType->getSelectedTag().toString());
|
myGameProperties.set(PropType::Cart_Type, myBSType->getSelectedTag().toString());
|
||||||
myGameProperties.set(Display_Format, myFormat->getSelectedTag().toString());
|
myGameProperties.set(PropType::Display_Format, myFormat->getSelectedTag().toString());
|
||||||
myGameProperties.set(Display_Phosphor, myPhosphor->getState() ? "YES" : "NO");
|
myGameProperties.set(PropType::Display_Phosphor, myPhosphor->getState() ? "YES" : "NO");
|
||||||
|
|
||||||
myGameProperties.set(Display_PPBlend, myPPBlend->getValueLabel() == "Off" ? "0" :
|
myGameProperties.set(PropType::Display_PPBlend, myPPBlend->getValueLabel() == "Off" ? "0" :
|
||||||
myPPBlend->getValueLabel());
|
myPPBlend->getValueLabel());
|
||||||
myGameProperties.set(Cartridge_Sound, mySound->getState() ? "STEREO" : "MONO");
|
myGameProperties.set(PropType::Cart_Sound, mySound->getState() ? "STEREO" : "MONO");
|
||||||
|
|
||||||
// Console properties
|
// Console properties
|
||||||
myGameProperties.set(Console_LeftDifficulty, myLeftDiffGroup->getSelected() ? "B" : "A");
|
myGameProperties.set(PropType::Console_LeftDiff, myLeftDiffGroup->getSelected() ? "B" : "A");
|
||||||
myGameProperties.set(Console_RightDifficulty, myRightDiffGroup->getSelected() ? "B" : "A");
|
myGameProperties.set(PropType::Console_RightDiff, myRightDiffGroup->getSelected() ? "B" : "A");
|
||||||
myGameProperties.set(Console_TelevisionType, myTVTypeGroup->getSelected() ? "BW" : "COLOR");
|
myGameProperties.set(PropType::Console_TVType, myTVTypeGroup->getSelected() ? "BW" : "COLOR");
|
||||||
|
|
||||||
// Controller properties
|
// Controller properties
|
||||||
myGameProperties.set(Controller_Left, myLeftPort->getSelectedTag().toString());
|
myGameProperties.set(PropType::Controller_Left, myLeftPort->getSelectedTag().toString());
|
||||||
myGameProperties.set(Controller_Right, myRightPort->getSelectedTag().toString());
|
myGameProperties.set(PropType::Controller_Right, myRightPort->getSelectedTag().toString());
|
||||||
myGameProperties.set(Console_SwapPorts, (mySwapPorts->isEnabled() && mySwapPorts->getState()) ? "YES" : "NO");
|
myGameProperties.set(PropType::Console_SwapPorts, (mySwapPorts->isEnabled() && mySwapPorts->getState()) ? "YES" : "NO");
|
||||||
myGameProperties.set(Controller_SwapPaddles, (/*mySwapPaddles->isEnabled() &&*/ mySwapPaddles->getState()) ? "YES" : "NO");
|
myGameProperties.set(PropType::Controller_SwapPaddles, (/*mySwapPaddles->isEnabled() &&*/ mySwapPaddles->getState()) ? "YES" : "NO");
|
||||||
|
|
||||||
// MouseAxis property (potentially contains 'range' information)
|
// MouseAxis property (potentially contains 'range' information)
|
||||||
string mcontrol = "AUTO";
|
string mcontrol = "AUTO";
|
||||||
|
@ -536,14 +536,14 @@ void GameInfoDialog::saveConfig()
|
||||||
string range = myMouseRange->getValueLabel();
|
string range = myMouseRange->getValueLabel();
|
||||||
if(range != "100")
|
if(range != "100")
|
||||||
mcontrol += " " + range;
|
mcontrol += " " + range;
|
||||||
myGameProperties.set(Controller_MouseAxis, mcontrol);
|
myGameProperties.set(PropType::Controller_MouseAxis, mcontrol);
|
||||||
|
|
||||||
// Cartridge properties
|
// Cartridge properties
|
||||||
myGameProperties.set(Cartridge_Name, myName->getText());
|
myGameProperties.set(PropType::Cart_Name, myName->getText());
|
||||||
myGameProperties.set(Cartridge_Manufacturer, myManufacturer->getText());
|
myGameProperties.set(PropType::Cart_Manufacturer, myManufacturer->getText());
|
||||||
myGameProperties.set(Cartridge_ModelNo, myModelNo->getText());
|
myGameProperties.set(PropType::Cart_ModelNo, myModelNo->getText());
|
||||||
myGameProperties.set(Cartridge_Rarity, myRarity->getText());
|
myGameProperties.set(PropType::Cart_Rarity, myRarity->getText());
|
||||||
myGameProperties.set(Cartridge_Note, myNote->getText());
|
myGameProperties.set(PropType::Cart_Note, myNote->getText());
|
||||||
|
|
||||||
// Always insert; if the properties are already present, nothing will happen
|
// Always insert; if the properties are already present, nothing will happen
|
||||||
instance().propSet().insert(myGameProperties);
|
instance().propSet().insert(myGameProperties);
|
||||||
|
@ -571,7 +571,7 @@ void GameInfoDialog::setDefaults()
|
||||||
{
|
{
|
||||||
// Load the default properties
|
// Load the default properties
|
||||||
Properties defaultProperties;
|
Properties defaultProperties;
|
||||||
const string& md5 = myGameProperties.get(Cartridge_MD5);
|
const string& md5 = myGameProperties.get(PropType::Cart_MD5);
|
||||||
|
|
||||||
instance().propSet().getMD5(md5, defaultProperties, true);
|
instance().propSet().getMD5(md5, defaultProperties, true);
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ void RomAuditDialog::auditRoms()
|
||||||
const string& md5 = MD5::hash(files[idx]);
|
const string& md5 = MD5::hash(files[idx]);
|
||||||
if(instance().propSet().getMD5(md5, props))
|
if(instance().propSet().getMD5(md5, props))
|
||||||
{
|
{
|
||||||
const string& name = props.get(Cartridge_Name);
|
const string& name = props.get(PropType::Cart_Name);
|
||||||
|
|
||||||
// Only rename the file if we found a valid properties entry
|
// Only rename the file if we found a valid properties entry
|
||||||
if(name != "" && name != files[idx].getName())
|
if(name != "" && name != files[idx].getName())
|
||||||
|
|
|
@ -100,7 +100,7 @@ void RomInfoWidget::parseProperties(const FilesystemNode& node)
|
||||||
|
|
||||||
// Get a valid filename representing a snapshot file for this rom
|
// Get a valid filename representing a snapshot file for this rom
|
||||||
const string& filename = instance().snapshotLoadDir() +
|
const string& filename = instance().snapshotLoadDir() +
|
||||||
myProperties.get(Cartridge_Name) + ".png";
|
myProperties.get(PropType::Cart_Name) + ".png";
|
||||||
|
|
||||||
// Read the PNG file
|
// Read the PNG file
|
||||||
try
|
try
|
||||||
|
@ -121,20 +121,20 @@ void RomInfoWidget::parseProperties(const FilesystemNode& node)
|
||||||
mySurface->setVisible(mySurfaceIsValid);
|
mySurface->setVisible(mySurfaceIsValid);
|
||||||
|
|
||||||
// Now add some info for the message box below the image
|
// Now add some info for the message box below the image
|
||||||
myRomInfo.push_back("Name: " + myProperties.get(Cartridge_Name));
|
myRomInfo.push_back("Name: " + myProperties.get(PropType::Cart_Name));
|
||||||
myRomInfo.push_back("Manufacturer: " + myProperties.get(Cartridge_Manufacturer));
|
myRomInfo.push_back("Manufacturer: " + myProperties.get(PropType::Cart_Manufacturer));
|
||||||
myRomInfo.push_back("Model: " + myProperties.get(Cartridge_ModelNo));
|
myRomInfo.push_back("Model: " + myProperties.get(PropType::Cart_ModelNo));
|
||||||
myRomInfo.push_back("Rarity: " + myProperties.get(Cartridge_Rarity));
|
myRomInfo.push_back("Rarity: " + myProperties.get(PropType::Cart_Rarity));
|
||||||
myRomInfo.push_back("Note: " + myProperties.get(Cartridge_Note));
|
myRomInfo.push_back("Note: " + myProperties.get(PropType::Cart_Note));
|
||||||
bool swappedPorts = myProperties.get(Console_SwapPorts) == "YES";
|
bool swappedPorts = myProperties.get(PropType::Console_SwapPorts) == "YES";
|
||||||
|
|
||||||
// Load the image for controller auto detection
|
// Load the image for controller auto detection
|
||||||
string left = myProperties.get(Controller_Left);
|
string left = myProperties.get(PropType::Controller_Left);
|
||||||
string right = myProperties.get(Controller_Right);
|
string right = myProperties.get(PropType::Controller_Right);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
BytePtr image;
|
BytePtr image;
|
||||||
string md5 = myProperties.get(Cartridge_MD5);
|
string md5 = myProperties.get(PropType::Cart_MD5);
|
||||||
uInt32 size = 0;
|
uInt32 size = 0;
|
||||||
|
|
||||||
if(node.exists() && !node.isDirectory() &&
|
if(node.exists() && !node.isDirectory() &&
|
||||||
|
|
|
@ -239,8 +239,8 @@ void StellaSettingsDialog::saveConfig()
|
||||||
levelToValue(myTVScanIntense->getValue()));
|
levelToValue(myTVScanIntense->getValue()));
|
||||||
|
|
||||||
// Controller properties
|
// Controller properties
|
||||||
myGameProperties.set(Controller_Left, myLeftPort->getSelectedTag().toString());
|
myGameProperties.set(PropType::Controller_Left, myLeftPort->getSelectedTag().toString());
|
||||||
myGameProperties.set(Controller_Right, myRightPort->getSelectedTag().toString());
|
myGameProperties.set(PropType::Controller_Right, myRightPort->getSelectedTag().toString());
|
||||||
|
|
||||||
// Always insert; if the properties are already present, nothing will happen
|
// Always insert; if the properties are already present, nothing will happen
|
||||||
instance().propSet().insert(myGameProperties);
|
instance().propSet().insert(myGameProperties);
|
||||||
|
@ -271,7 +271,7 @@ void StellaSettingsDialog::setDefaults()
|
||||||
|
|
||||||
// Load the default game properties
|
// Load the default game properties
|
||||||
Properties defaultProperties;
|
Properties defaultProperties;
|
||||||
const string& md5 = myGameProperties.get(Cartridge_MD5);
|
const string& md5 = myGameProperties.get(PropType::Cart_MD5);
|
||||||
|
|
||||||
instance().propSet().getMD5(md5, defaultProperties, true);
|
instance().propSet().getMD5(md5, defaultProperties, true);
|
||||||
|
|
||||||
|
@ -342,7 +342,7 @@ void StellaSettingsDialog::loadControllerProperties(const Properties& props)
|
||||||
{
|
{
|
||||||
bool autoDetect = false;
|
bool autoDetect = false;
|
||||||
BytePtr image;
|
BytePtr image;
|
||||||
string md5 = props.get(Cartridge_MD5);
|
string md5 = props.get(PropType::Cart_MD5);
|
||||||
uInt32 size = 0;
|
uInt32 size = 0;
|
||||||
const FilesystemNode& node = FilesystemNode(instance().launcher().selectedRom());
|
const FilesystemNode& node = FilesystemNode(instance().launcher().selectedRom());
|
||||||
|
|
||||||
|
@ -352,8 +352,8 @@ void StellaSettingsDialog::loadControllerProperties(const Properties& props)
|
||||||
autoDetect = true;
|
autoDetect = true;
|
||||||
|
|
||||||
string label = "";
|
string label = "";
|
||||||
string controller = props.get(Controller_Left);
|
string controller = props.get(PropType::Controller_Left);
|
||||||
bool swapPorts = props.get(Console_SwapPorts) == "YES";
|
bool swapPorts = props.get(PropType::Console_SwapPorts) == "YES";
|
||||||
|
|
||||||
myLeftPort->setSelected(controller, "AUTO");
|
myLeftPort->setSelected(controller, "AUTO");
|
||||||
if (myLeftPort->getSelectedTag().toString() == "AUTO")
|
if (myLeftPort->getSelectedTag().toString() == "AUTO")
|
||||||
|
@ -369,7 +369,7 @@ void StellaSettingsDialog::loadControllerProperties(const Properties& props)
|
||||||
myLeftPortDetected->setLabel(label);
|
myLeftPortDetected->setLabel(label);
|
||||||
|
|
||||||
label = "";
|
label = "";
|
||||||
controller = props.get(Controller_Right);
|
controller = props.get(PropType::Controller_Right);
|
||||||
|
|
||||||
myRightPort->setSelected(controller, "AUTO");
|
myRightPort->setSelected(controller, "AUTO");
|
||||||
if (myRightPort->getSelectedTag().toString() == "AUTO")
|
if (myRightPort->getSelectedTag().toString() == "AUTO")
|
||||||
|
|
|
@ -3,18 +3,18 @@ package PropSet;
|
||||||
# NOTE: If the property types ever change in Stella, the following hashmap
|
# NOTE: If the property types ever change in Stella, the following hashmap
|
||||||
# and array must be updated (and stay in sequence)
|
# and array must be updated (and stay in sequence)
|
||||||
my %prop_type = (
|
my %prop_type = (
|
||||||
"Cartridge.MD5" => 0,
|
"Cart.MD5" => 0,
|
||||||
"Cartridge.Manufacturer" => 1,
|
"Cart.Manufacturer" => 1,
|
||||||
"Cartridge.ModelNo" => 2,
|
"Cart.ModelNo" => 2,
|
||||||
"Cartridge.Name" => 3,
|
"Cart.Name" => 3,
|
||||||
"Cartridge.Note" => 4,
|
"Cart.Note" => 4,
|
||||||
"Cartridge.Rarity" => 5,
|
"Cart.Rarity" => 5,
|
||||||
"Cartridge.Sound" => 6,
|
"Cart.Sound" => 6,
|
||||||
"Cartridge.StartBank" => 7,
|
"Cart.StartBank" => 7,
|
||||||
"Cartridge.Type" => 8,
|
"Cart.Type" => 8,
|
||||||
"Console.LeftDifficulty" => 9,
|
"Console.LeftDiff" => 9,
|
||||||
"Console.RightDifficulty" => 10,
|
"Console.RightDiff" => 10,
|
||||||
"Console.TelevisionType" => 11,
|
"Console.TVType" => 11,
|
||||||
"Console.SwapPorts" => 12,
|
"Console.SwapPorts" => 12,
|
||||||
"Controller.Left" => 13,
|
"Controller.Left" => 13,
|
||||||
"Controller.Right" => 14,
|
"Controller.Right" => 14,
|
||||||
|
@ -26,18 +26,18 @@ my %prop_type = (
|
||||||
"Display.PPBlend" => 20
|
"Display.PPBlend" => 20
|
||||||
);
|
);
|
||||||
my @prop_type_as_string = (
|
my @prop_type_as_string = (
|
||||||
"Cartridge.MD5",
|
"Cart.MD5",
|
||||||
"Cartridge.Manufacturer",
|
"Cart.Manufacturer",
|
||||||
"Cartridge.ModelNo",
|
"Cart.ModelNo",
|
||||||
"Cartridge.Name",
|
"Cart.Name",
|
||||||
"Cartridge.Note",
|
"Cart.Note",
|
||||||
"Cartridge.Rarity",
|
"Cart.Rarity",
|
||||||
"Cartridge.Sound",
|
"Cart.Sound",
|
||||||
"Cartridge.StartBank",
|
"Cart.StartBank",
|
||||||
"Cartridge.Type",
|
"Cart.Type",
|
||||||
"Console.LeftDifficulty",
|
"Console.LeftDiff",
|
||||||
"Console.RightDifficulty",
|
"Console.RightDiff",
|
||||||
"Console.TelevisionType",
|
"Console.TVType",
|
||||||
"Console.SwapPorts",
|
"Console.SwapPorts",
|
||||||
"Controller.Left",
|
"Controller.Left",
|
||||||
"Controller.Right",
|
"Controller.Right",
|
||||||
|
@ -53,7 +53,7 @@ my @prop_defaults = (
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"Untitled",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"MONO",
|
"MONO",
|
||||||
|
|
|
@ -15,8 +15,16 @@ if (@ARGV != 2)
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
# Saves me from having to type these paths *every single time*
|
# Saves me from having to type these paths *every single time*
|
||||||
$infile = "../emucore/stella.pro";
|
if (-f "src/emucore/stella.pro") {
|
||||||
$outfile = "../emucore/DefProps.hxx";
|
$infile = "src/emucore/stella.pro";
|
||||||
|
} else {
|
||||||
|
$infile = "../emucore/stella.pro";
|
||||||
|
}
|
||||||
|
if (-f "src/emucore/DefProps.hxx") {
|
||||||
|
$outfile = "src/emucore/DefProps.hxx";
|
||||||
|
} else {
|
||||||
|
$outfile = "../emucore/DefProps.hxx";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue