mirror of https://github.com/stella-emu/stella.git
added missing oddball TIA options
This commit is contained in:
parent
bd0984fc98
commit
46f7668216
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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];
|
||||
|
|
Loading…
Reference in New Issue