added missing oddball TIA options

This commit is contained in:
thrust26 2019-01-16 17:58:02 +01:00
parent bd0984fc98
commit 46f7668216
7 changed files with 163 additions and 167 deletions

View File

@ -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 <standard|custom| Selects a TIA type\n"
<< " koolaidman|cosmicark|\n"
<< " pesco|quickstep|\n"
<< " hemanv1|hemanv2>\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;
}

View File

@ -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();
}

View File

@ -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:

View File

@ -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)
{

View File

@ -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

View File

@ -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);
}
}

View File

@ -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];