From 46f7668216ae3a8ef460e7d4e8b9c9dcd19ab4c1 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 16 Jan 2019 17:58:02 +0100 Subject: [PATCH] added missing oddball TIA options --- src/emucore/Settings.cxx | 25 +++--- src/emucore/tia/Ball.cxx | 24 ++++- src/emucore/tia/Ball.hxx | 5 ++ src/emucore/tia/TIA.cxx | 61 +++++++------ src/emucore/tia/TIA.hxx | 27 +++--- src/gui/DeveloperDialog.cxx | 170 +++++++++++++----------------------- src/gui/DeveloperDialog.hxx | 18 ++-- 7 files changed, 163 insertions(+), 167 deletions(-) diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index ddb9497ef..e70368902 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -182,12 +182,13 @@ Settings::Settings(OSystem& osystem) setInternal("dev.tiadriven", "true"); setInternal("dev.console", "2600"); // 7800 setInternal("dev.tia.type", "standard"); - setInternal("dev.tia.playerinvphase", "true"); - setInternal("dev.tia.missileinvphase", "true"); + setInternal("dev.tia.plinvphase", "true"); + setInternal("dev.tia.msinvphase", "true"); + setInternal("dev.tia.blinvphase", "true"); setInternal("dev.tia.delaypfbits", "true"); setInternal("dev.tia.delaypfcolor", "true"); - setInternal("dev.tia.delayp0swap", "true"); - setInternal("dev.tia.delayp1swap", "true"); + setInternal("dev.tia.delayplswap", "true"); + setInternal("dev.tia.delayblswap", "true"); setInternal("dev.timemachine", true); setInternal("dev.tm.size", 1000); setInternal("dev.tm.uncompressed", 600); @@ -648,15 +649,17 @@ void Settings::usage() const << " -dev.eepromaccess <1|0> Enable messages for AtariVox/SaveKey access\n" << " messages\n" << " -dev.tia.type \n" - << " -dev.tia.playerinvphase <1|0> Enable inverted HMOVE clock phase for players\n" - << " -dev.tia.missileinvphase <1|0> Enable inverted HMOVE clock phase for missiles\n" + << " koolaidman|\n" + << " cosmicark|pesco|\n" + << " quickstep|heman|>\n" + << " -dev.tia.plinvphase <1|0> Enable inverted HMOVE clock phase for players\n" + << " -dev.tia.msinvphase <1|0> Enable inverted HMOVE clock phase for\n" + << " missiles\n" + << " -dev.tia.blinvphase <1|0> Enable inverted HMOVE clock phase for ball\n" << " -dev.tia.delaypfbits <1|0> Enable extra delay cycle for PF bits access\n" << " -dev.tia.delaypfcolor <1|0> Enable extra delay cycle for PF color\n" - << " -dev.tia.delayp0swap <1|0> Enable extra delay cycle for player 0 swap\n" - << " -dev.tia.delayp1swap <1|0> Enable extra delay cycle for player 1 swap\n" + << " -dev.tia.delayplswap <1|0> Enable extra delay cycle for VDELP0/1 swap\n" + << " -dev.tia.delayblswap <1|0> Enable extra delay cycle for VDELBL swap\n" << endl << std::flush; } diff --git a/src/emucore/tia/Ball.cxx b/src/emucore/tia/Ball.cxx index 31970517c..63144d6ea 100644 --- a/src/emucore/tia/Ball.cxx +++ b/src/emucore/tia/Ball.cxx @@ -52,6 +52,8 @@ void Ball::reset() myDebugEnabled = false; myRenderCounter = 0; myIsEnabled = false; + myInvertedPhaseClock = false; + myUseInvertedPhaseClock = false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -154,6 +156,13 @@ void Ball::applyColorLoss() applyColors(); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Ball::setInvertedPhaseClock(bool enable) +{ + myUseInvertedPhaseClock = enable; +} + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Ball::startMovement() { @@ -167,8 +176,11 @@ bool Ball::movementTick(uInt32 clock, bool apply) if (clock == myHmmClocks) myIsMoving = false; - else if (myIsMoving && apply) - tick(false); + else if(myIsMoving) + { + if(apply) tick(false); + else myInvertedPhaseClock = true; + } return myIsMoving; } @@ -176,6 +188,12 @@ bool Ball::movementTick(uInt32 clock, bool apply) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Ball::tick(bool isReceivingMclock) { + if(myUseInvertedPhaseClock && myInvertedPhaseClock) + { + myInvertedPhaseClock = false; + return; + } + myIsVisible = myIsRendering && myRenderCounter >= 0; collision = (myIsVisible && myIsEnabled) ? myCollisionMaskEnabled : myCollisionMaskDisabled; @@ -314,6 +332,7 @@ bool Ball::save(Serializer& out) const out.putBool(myIsRendering); out.putByte(myRenderCounter); + out.putBool(myInvertedPhaseClock); } catch(...) { @@ -354,6 +373,7 @@ bool Ball::load(Serializer& in) myIsRendering = in.getBool(); myRenderCounter = in.getByte(); + myInvertedPhaseClock = in.getBool(); applyColors(); } diff --git a/src/emucore/tia/Ball.hxx b/src/emucore/tia/Ball.hxx index 9aad59482..d1e8facb3 100644 --- a/src/emucore/tia/Ball.hxx +++ b/src/emucore/tia/Ball.hxx @@ -56,6 +56,8 @@ class Ball : public Serializable void applyColorLoss(); + void setInvertedPhaseClock(bool enable); + void startMovement(); bool movementTick(uInt32 clock, bool apply); @@ -118,6 +120,9 @@ class Ball : public Serializable bool myIsRendering; Int8 myRenderCounter; + bool myInvertedPhaseClock; + bool myUseInvertedPhaseClock; + TIA* myTIA; private: diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index fcee2df6a..063681582 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -176,34 +176,33 @@ void TIA::reset() { bool custom = BSPF::equalsIgnoreCase("custom", mySettings.getString("dev.tia.type")); - setPlayerInvertedPhaseClock(custom - ? mySettings.getBool("dev.tia.playerinvphase") - : BSPF::equalsIgnoreCase("koolaidman", mySettings.getString("dev.tia.type"))); - setMissileInvertedPhaseClock(custom - ? mySettings.getBool("dev.tia.missileinvphase") - : BSPF::equalsIgnoreCase("cosmicark", mySettings.getString("dev.tia.type"))); + setPlInvertedPhaseClock(custom + ? mySettings.getBool("dev.tia.plinvphase") + : BSPF::equalsIgnoreCase("koolaidman", mySettings.getString("dev.tia.type"))); + setMsInvertedPhaseClock(custom + ? mySettings.getBool("dev.tia.msinvphase") + : BSPF::equalsIgnoreCase("cosmicark", mySettings.getString("dev.tia.type"))); + setBlInvertedPhaseClock(custom ? mySettings.getBool("dev.tia.blinvphase") : false); setPFBitsDelay(custom ? mySettings.getBool("dev.tia.delaypfbits") : BSPF::equalsIgnoreCase("pesco", mySettings.getString("dev.tia.type"))); setPFColorDelay(custom ? mySettings.getBool("dev.tia.delaypfcolor") : BSPF::equalsIgnoreCase("quickstep", mySettings.getString("dev.tia.type"))); - setP0SwapDelay(custom - ? mySettings.getBool("dev.tia.delayp0swap") - : BSPF::equalsIgnoreCase("hemanv2", mySettings.getString("dev.tia.type"))); - setP1SwapDelay(custom - ? mySettings.getBool("dev.tia.delayp1swap") - : BSPF::equalsIgnoreCase("hemanv1", mySettings.getString("dev.tia.type")) - || BSPF::equalsIgnoreCase("hemanv2", mySettings.getString("dev.tia.type"))); + setPlSwapDelay(custom + ? mySettings.getBool("dev.tia.delayplswap") + : BSPF::equalsIgnoreCase("heman", mySettings.getString("dev.tia.type"))); + setBlSwapDelay(custom ? mySettings.getBool("dev.tia.delayblswap") : false); } else { - setPlayerInvertedPhaseClock(false); - setMissileInvertedPhaseClock(false); + setPlInvertedPhaseClock(false); + setMsInvertedPhaseClock(false); + setBlInvertedPhaseClock(false); setPFBitsDelay(false); setPFColorDelay(false); - setP0SwapDelay(false); - setP1SwapDelay(false); + setPlSwapDelay(false); + setBlSwapDelay(false); } myDelayQueue.reset(); @@ -324,8 +323,7 @@ bool TIA::save(Serializer& out) const out.putByte(myPFBitsDelay); out.putByte(myPFColorDelay); - out.putByte(myP0SwapDelay); - out.putByte(myP1SwapDelay); + out.putByte(myPlSwapDelay); } catch(...) { @@ -398,8 +396,7 @@ bool TIA::load(Serializer& in) myPFBitsDelay = in.getByte(); myPFColorDelay = in.getByte(); - myP0SwapDelay = in.getByte(); - myP1SwapDelay = in.getByte(); + myPlSwapDelay = in.getByte(); } catch(...) { @@ -739,7 +736,7 @@ bool TIA::poke(uInt16 address, uInt8 value) case GRP0: { myDelayQueue.push(GRP0, value, Delay::grp); - myDelayQueue.push(DummyRegisters::shuffleP1, 0, myP0SwapDelay); + myDelayQueue.push(DummyRegisters::shuffleP1, 0, myPlSwapDelay); #ifdef DEBUGGER_SUPPORT uInt16 dataAddr = mySystem->m6502().lastDataAddressForPoke(); if(dataAddr) @@ -751,7 +748,7 @@ bool TIA::poke(uInt16 address, uInt8 value) case GRP1: { myDelayQueue.push(GRP1, value, Delay::grp); - myDelayQueue.push(DummyRegisters::shuffleP0, 0, myP1SwapDelay); + myDelayQueue.push(DummyRegisters::shuffleP0, 0, myPlSwapDelay); myDelayQueue.push(DummyRegisters::shuffleBL, 0, Delay::shuffleBall); #ifdef DEBUGGER_SUPPORT uInt16 dataAddr = mySystem->m6502().lastDataAddressForPoke(); @@ -1517,31 +1514,37 @@ void TIA::setPFColorDelay(bool delayed) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::setP0SwapDelay(bool delayed) +void TIA::setPlSwapDelay(bool delayed) { - myP0SwapDelay = delayed ? Delay::shufflePlayer + 1 : Delay::shufflePlayer; + myPlSwapDelay = delayed ? Delay::shufflePlayer + 1 : Delay::shufflePlayer; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::setP1SwapDelay(bool delayed) +void TIA::setBlSwapDelay(bool delayed) { - myP1SwapDelay = delayed ? Delay::shufflePlayer + 1 : Delay::shufflePlayer; + myBlSwapDelay = delayed ? Delay::shuffleBall + 1 : Delay::shuffleBall; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::setPlayerInvertedPhaseClock(bool enable) +void TIA::setPlInvertedPhaseClock(bool enable) { myPlayer0.setInvertedPhaseClock(enable); myPlayer1.setInvertedPhaseClock(enable); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::setMissileInvertedPhaseClock(bool enable) +void TIA::setMsInvertedPhaseClock(bool enable) { myMissile0.setInvertedPhaseClock(enable); myMissile1.setInvertedPhaseClock(enable); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void TIA::setBlInvertedPhaseClock(bool enable) +{ + myBall.setInvertedPhaseClock(enable); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void TIA::delayedWrite(uInt8 address, uInt8 value) { diff --git a/src/emucore/tia/TIA.hxx b/src/emucore/tia/TIA.hxx index 8e936d589..6c858a6f4 100644 --- a/src/emucore/tia/TIA.hxx +++ b/src/emucore/tia/TIA.hxx @@ -432,32 +432,39 @@ class TIA : public Device void setPFColorDelay(bool delayed); /** - Enables/disables delayed player 0 swapping. + Enables/disables delayed player swapping. - @param delayed Wether to enable player 0 swapping + @param delayed Wether to enable delayed player swapping */ - void setP0SwapDelay(bool delayed); + void setPlSwapDelay(bool delayed); /** - Enables/disables delayed player 1 swapping. + Enables/disables delayed ball swapping. - @param delayed Wether to enable player 1 swapping + @param delayed Wether to enable delayed ball swapping */ - void setP1SwapDelay(bool delayed); + void setBlSwapDelay(bool delayed); /** Enables/disables inverted HMOVE phase clock for players. @param enable Wether to enable inverted HMOVE phase clock for players */ - void setPlayerInvertedPhaseClock(bool enable); + void setPlInvertedPhaseClock(bool enable); /** Enables/disables inverted HMOVE phase clock for missiles. @param enable Wether to enable inverted HMOVE phase clock for missiles */ - void setMissileInvertedPhaseClock(bool enable); + void setMsInvertedPhaseClock(bool enable); + + /** + Enables/disables inverted HMOVE phase clock for ball. + + @param enable Wether to enable inverted HMOVE phase clock for ball + */ + void setBlInvertedPhaseClock(bool enable); /** This method should be called to update the TIA with a new scanline. @@ -708,8 +715,8 @@ class TIA : public Device */ uInt8 myPFBitsDelay; uInt8 myPFColorDelay; - uInt8 myP0SwapDelay; - uInt8 myP1SwapDelay; + uInt8 myPlSwapDelay; + uInt8 myBlSwapDelay; /** * The frame manager is responsible for detecting frame boundaries and the visible diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index 32579958d..4496e5c82 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -185,7 +185,7 @@ void DeveloperDialog::addTiaTab(const GUI::Font& font) const int VGAP = 4; int ypos = VBORDER; int lineHeight = font.getLineHeight(); - int pwidth = font.getStringWidth("Glitched He-Man title V2"); + int pwidth = font.getStringWidth("Faulty Cosmic Ark stars"); WidgetArray wid; VariantList items; int tabID = myTab->addTab("TIA"); @@ -209,24 +209,27 @@ void DeveloperDialog::addTiaTab(const GUI::Font& font) VarList::push_back(items, "Faulty Cosmic Ark stars", "cosmicark"); VarList::push_back(items, "Glitched Pesco", "pesco"); VarList::push_back(items, "Glitched Quick Step!", "quickstep"); - VarList::push_back(items, "Glitched He-Man title V1", "hemanv1"); - VarList::push_back(items, "Glitched He-Man title V2", "hemanv2"); + VarList::push_back(items, "Glitched He-Man title", "heman"); VarList::push_back(items, "Custom", "custom"); myTIATypeWidget = new PopUpWidget(myTab, font, HBORDER + INDENT, ypos - 1, pwidth, lineHeight, items, "Chip type ", 0, kTIAType); wid.push_back(myTIATypeWidget); ypos += lineHeight + VGAP * 1; - myPlayerInvPhaseWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, - "Inverted HMOVE clock phase for players"); - wid.push_back(myPlayerInvPhaseWidget); + myPlInvPhaseWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, + "Inverted HMOVE clock phase for players"); + wid.push_back(myPlInvPhaseWidget); ypos += lineHeight + VGAP * 1; - myMissileInvPhaseWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, - "Inverted HMOVE clock phase for missiles"); - wid.push_back(myMissileInvPhaseWidget); + myMsInvPhaseWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, + "Inverted HMOVE clock phase for missiles"); + wid.push_back(myMsInvPhaseWidget); ypos += lineHeight + VGAP * 1; + myBlInvPhaseWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, + "Inverted HMOVE clock phase for ball"); + wid.push_back(myBlInvPhaseWidget); + ypos += lineHeight + VGAP * 1; myPFBitsWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, "Delayed playfield bits"); @@ -238,15 +241,14 @@ void DeveloperDialog::addTiaTab(const GUI::Font& font) wid.push_back(myPFColorWidget); ypos += lineHeight + VGAP * 1; - myGRP0SwapWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, - "Delayed player 0 swap"); - wid.push_back(myGRP0SwapWidget); + myPlSwapWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, + "Delayed VDELP0/1 players swap"); + wid.push_back(myPlSwapWidget); ypos += lineHeight + VGAP * 1; - myGRP1SwapWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, - "Delayed player 1 swap"); - wid.push_back(myGRP1SwapWidget); - ypos += lineHeight + VGAP * 1; + myBlSwapWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, + "Delayed VDELBL ball swap"); + wid.push_back(myBlSwapWidget); // Add items for tab 2 addToFocusList(wid, myTab, tabID); @@ -585,12 +587,13 @@ void DeveloperDialog::loadSettings(SettingsSet set) // TIA tab myTIAType[set] = devSettings ? instance().settings().getString("dev.tia.type") : "standard"; - myPlayerInvPhase[set] = devSettings ? instance().settings().getBool("dev.tia.playerinvphase") : false; - myMissileInvPhase[set] = devSettings ? instance().settings().getBool("dev.tia.missileinvphase") : false; + myPlInvPhase[set] = devSettings ? instance().settings().getBool("dev.tia.plinvphase") : false; + myMsInvPhase[set] = devSettings ? instance().settings().getBool("dev.tia.msinvphase") : false; + myBlInvPhase[set] = devSettings ? instance().settings().getBool("dev.tia.blinvphase") : false; myPFBits[set] = devSettings ? instance().settings().getBool("dev.tia.delaypfbits") : false; myPFColor[set] = devSettings ? instance().settings().getBool("dev.tia.delaypfcolor") : false; - myGRP0Swap[set] = devSettings ? instance().settings().getBool("dev.tia.delayp0swap") : false; - myGRP1Swap[set] = devSettings ? instance().settings().getBool("dev.tia.delayp1swap") : false; + myPlSwap[set] = devSettings ? instance().settings().getBool("dev.tia.delayplswap") : false; + myBlSwap[set] = devSettings ? instance().settings().getBool("dev.tia.delayblswap") : false; // Debug colors myDebugColors[set] = instance().settings().getBool(prefix + "debugcolors"); @@ -643,12 +646,13 @@ void DeveloperDialog::saveSettings(SettingsSet set) instance().settings().setValue("dev.tia.type", myTIAType[set]); if (BSPF::equalsIgnoreCase("custom", myTIAType[set])) { - instance().settings().setValue("dev.tia.playerinvphase", myPlayerInvPhase[set]); - instance().settings().setValue("dev.tia.missileinvphase", myMissileInvPhase[set]); + instance().settings().setValue("dev.tia.plinvphase", myPlInvPhase[set]); + instance().settings().setValue("dev.tia.msinvphase", myMsInvPhase[set]); + instance().settings().setValue("dev.tia.blinvphase", myBlInvPhase[set]); instance().settings().setValue("dev.tia.delaypfbits", myPFBits[set]); instance().settings().setValue("dev.tia.delaypfcolor", myPFColor[set]); - instance().settings().setValue("dev.tia.delayp0swap", myGRP0Swap[set]); - instance().settings().setValue("dev.tia.delayp1swap", myGRP1Swap[set]); + instance().settings().setValue("dev.tia.delayplswap", myPlSwap[set]); + instance().settings().setValue("dev.tia.delayblswap", myBlSwap[set]); } } @@ -695,12 +699,13 @@ void DeveloperDialog::getWidgetStates(SettingsSet set) // TIA tab myTIAType[set] = myTIATypeWidget->getSelectedTag().toString(); - myPlayerInvPhase[set] = myPlayerInvPhaseWidget->getState(); - myMissileInvPhase[set] = myMissileInvPhaseWidget->getState(); + myPlInvPhase[set] = myPlInvPhaseWidget->getState(); + myMsInvPhase[set] = myMsInvPhaseWidget->getState(); + myBlInvPhase[set] = myBlInvPhaseWidget->getState(); myPFBits[set] = myPFBitsWidget->getState(); myPFColor[set] = myPFColorWidget->getState(); - myGRP0Swap[set] = myGRP0SwapWidget->getState(); - myGRP1Swap[set] = myGRP1SwapWidget->getState(); + myPlSwap[set] = myPlSwapWidget->getState(); + myBlSwap[set] = myBlSwapWidget->getState(); // Debug colors myDebugColors[set] = myDebugColorsWidget->getState(); @@ -840,12 +845,13 @@ void DeveloperDialog::saveConfig() // TIA tab if(instance().hasConsole()) { - instance().console().tia().setPlayerInvertedPhaseClock(myPlayerInvPhaseWidget->getState()); - instance().console().tia().setMissileInvertedPhaseClock(myMissileInvPhaseWidget->getState()); + instance().console().tia().setPlInvertedPhaseClock(myPlInvPhaseWidget->getState()); + instance().console().tia().setMsInvertedPhaseClock(myMsInvPhaseWidget->getState()); + instance().console().tia().setBlInvertedPhaseClock(myBlInvPhaseWidget->getState()); instance().console().tia().setPFBitsDelay(myPFBitsWidget->getState()); instance().console().tia().setPFColorDelay(myPFColorWidget->getState()); - instance().console().tia().setP0SwapDelay(myGRP0SwapWidget->getState()); - instance().console().tia().setP1SwapDelay(myGRP1SwapWidget->getState()); + instance().console().tia().setPlSwapDelay(myPlSwapWidget->getState()); + instance().console().tia().setBlSwapDelay(myBlSwapWidget->getState()); } handleEnableDebugColors(); @@ -920,12 +926,13 @@ void DeveloperDialog::setDefaults() case 1: // TIA myTIAType[set] = "standard"; // reset "custom" mode - myPlayerInvPhase[set] = devSettings ? true : false; - myMissileInvPhase[set] = devSettings ? true : false; + myPlInvPhase[set] = devSettings ? true : false; + myMsInvPhase[set] = devSettings ? true : false; + myBlInvPhase[set] = devSettings ? true : false; myPFBits[set] = devSettings ? true : false; myPFColor[set] = devSettings ? true : false; - myGRP0Swap[set] = devSettings ? true : false; - myGRP1Swap[set] = devSettings ? true : false; + myPlSwap[set] = devSettings ? true : false; + myBlSwap[set] = devSettings ? true : false; setWidgetStates(set); break; @@ -1131,84 +1138,33 @@ void DeveloperDialog::handleTia() bool enable = BSPF::equalsIgnoreCase("custom", myTIATypeWidget->getSelectedTag().toString()); myTIATypeWidget->setEnabled(mySettings); - myPlayerInvPhaseWidget->setEnabled(enable); - myMissileInvPhaseWidget->setEnabled(enable); + myPlInvPhaseWidget->setEnabled(enable); + myMsInvPhaseWidget->setEnabled(enable); + myBlInvPhaseWidget->setEnabled(enable); myPFBitsWidget->setEnabled(enable); myPFColorWidget->setEnabled(enable); - myGRP0SwapWidget->setEnabled(enable); - myGRP1SwapWidget->setEnabled(enable); + myPlSwapWidget->setEnabled(enable); + myBlSwapWidget->setEnabled(enable); - if(BSPF::equalsIgnoreCase("standard", myTIATypeWidget->getSelectedTag().toString())) - { - myPlayerInvPhaseWidget->setState(false); - myMissileInvPhaseWidget->setState(false); - myPFBitsWidget->setState(false); - myPFColorWidget->setState(false); - myGRP0SwapWidget->setState(false); - myGRP1SwapWidget->setState(false); - } - if(BSPF::equalsIgnoreCase("koolaidman", myTIATypeWidget->getSelectedTag().toString())) - { - myPlayerInvPhaseWidget->setState(true); - myMissileInvPhaseWidget->setState(false); - myPFBitsWidget->setState(false); - myPFColorWidget->setState(false); - myGRP0SwapWidget->setState(false); - myGRP1SwapWidget->setState(false); - } - if(BSPF::equalsIgnoreCase("cosmicark", myTIATypeWidget->getSelectedTag().toString())) - { - myPlayerInvPhaseWidget->setState(false); - myMissileInvPhaseWidget->setState(true); - myPFBitsWidget->setState(false); - myPFColorWidget->setState(false); - myGRP0SwapWidget->setState(false); - myGRP1SwapWidget->setState(false); - } - if(BSPF::equalsIgnoreCase("pesco", myTIATypeWidget->getSelectedTag().toString())) - { - myPlayerInvPhaseWidget->setState(false); - myMissileInvPhaseWidget->setState(false); - myPFBitsWidget->setState(true); - myPFColorWidget->setState(false); - myGRP0SwapWidget->setState(false); - myGRP1SwapWidget->setState(false); - } - if(BSPF::equalsIgnoreCase("quickstep", myTIATypeWidget->getSelectedTag().toString())) - { - myPlayerInvPhaseWidget->setState(false); - myMissileInvPhaseWidget->setState(false); - myPFBitsWidget->setState(false); - myPFColorWidget->setState(true); - myGRP0SwapWidget->setState(false); - myGRP1SwapWidget->setState(false); - } - if(BSPF::equalsIgnoreCase("hemanv1", myTIATypeWidget->getSelectedTag().toString())) - { - myPlayerInvPhaseWidget->setState(false); - myMissileInvPhaseWidget->setState(false); - myPFBitsWidget->setState(false); - myPFColorWidget->setState(false); - myGRP0SwapWidget->setState(false); - myGRP1SwapWidget->setState(true); - } - if(BSPF::equalsIgnoreCase("hemanv2", myTIATypeWidget->getSelectedTag().toString())) - { - myPlayerInvPhaseWidget->setState(false); - myMissileInvPhaseWidget->setState(false); - myPFBitsWidget->setState(false); - myPFColorWidget->setState(false); - myGRP0SwapWidget->setState(true); - myGRP1SwapWidget->setState(true); - } if(BSPF::equalsIgnoreCase("custom", myTIATypeWidget->getSelectedTag().toString())) { - myPlayerInvPhaseWidget->setState(myPlayerInvPhase[SettingsSet::developer]); - myMissileInvPhaseWidget->setState(myMissileInvPhase[SettingsSet::developer]); + myPlInvPhaseWidget->setState(myPlInvPhase[SettingsSet::developer]); + myMsInvPhaseWidget->setState(myMsInvPhase[SettingsSet::developer]); + myBlInvPhaseWidget->setState(myBlInvPhase[SettingsSet::developer]); myPFBitsWidget->setState(myPFBits[SettingsSet::developer]); myPFColorWidget->setState(myPFColor[SettingsSet::developer]); - myGRP0SwapWidget->setState(myGRP0Swap[SettingsSet::developer]); - myGRP1SwapWidget->setState(myGRP1Swap[SettingsSet::developer]); + myPlSwapWidget->setState(myPlSwap[SettingsSet::developer]); + myBlSwapWidget->setState(myBlSwap[SettingsSet::developer]); + } + else + { + myPlInvPhaseWidget->setState(BSPF::equalsIgnoreCase("koolaidman", myTIATypeWidget->getSelectedTag().toString())); + myMsInvPhaseWidget->setState(BSPF::equalsIgnoreCase("cosmicark", myTIATypeWidget->getSelectedTag().toString())); + myBlInvPhaseWidget->setState(false); + myPFBitsWidget->setState(BSPF::equalsIgnoreCase("pesco", myTIATypeWidget->getSelectedTag().toString())); + myPFColorWidget->setState(BSPF::equalsIgnoreCase("quickstep", myTIATypeWidget->getSelectedTag().toString())); + myPlSwapWidget->setState(BSPF::equalsIgnoreCase("heman", myTIATypeWidget->getSelectedTag().toString())); + myBlSwapWidget->setState(false); } } diff --git a/src/gui/DeveloperDialog.hxx b/src/gui/DeveloperDialog.hxx index 1b9f230e9..3c61b2662 100644 --- a/src/gui/DeveloperDialog.hxx +++ b/src/gui/DeveloperDialog.hxx @@ -110,12 +110,13 @@ class DeveloperDialog : public Dialog // TIA widgets RadioButtonGroup* mySettingsGroupTia; PopUpWidget* myTIATypeWidget; - CheckboxWidget* myPlayerInvPhaseWidget; - CheckboxWidget* myMissileInvPhaseWidget; + CheckboxWidget* myPlInvPhaseWidget; + CheckboxWidget* myMsInvPhaseWidget; + CheckboxWidget* myBlInvPhaseWidget; CheckboxWidget* myPFBitsWidget; CheckboxWidget* myPFColorWidget; - CheckboxWidget* myGRP0SwapWidget; - CheckboxWidget* myGRP1SwapWidget; + CheckboxWidget* myPlSwapWidget; + CheckboxWidget* myBlSwapWidget; // Video widgets RadioButtonGroup* mySettingsGroupVideo; @@ -163,12 +164,13 @@ class DeveloperDialog : public Dialog bool myEEPROMAccess[2]; // TIA sets string myTIAType[2]; - bool myPlayerInvPhase[2]; - bool myMissileInvPhase[2]; + bool myPlInvPhase[2]; + bool myMsInvPhase[2]; + bool myBlInvPhase[2]; bool myPFBits[2]; bool myPFColor[2]; - bool myGRP0Swap[2]; - bool myGRP1Swap[2]; + bool myPlSwap[2]; + bool myBlSwap[2]; // States sets bool myTimeMachine[2]; int myStateSize[2];