mirror of https://github.com/stella-emu/stella.git
Tie state transitions directly to hctr in order to avoid edge cases during RSYNC.
This commit is contained in:
parent
881dc86ab7
commit
ccafbf2bbd
|
@ -110,7 +110,6 @@ TIA::TIA(Console& console, Sound& sound, Settings& settings)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void TIA::reset()
|
void TIA::reset()
|
||||||
{
|
{
|
||||||
myHblankCtr = 0;
|
|
||||||
myHctr = 0;
|
myHctr = 0;
|
||||||
myMovementInProgress = false;
|
myMovementInProgress = false;
|
||||||
myExtendedHblank = false;
|
myExtendedHblank = false;
|
||||||
|
@ -229,7 +228,6 @@ bool TIA::save(Serializer& out) const
|
||||||
|
|
||||||
out.putInt(int(myHstate));
|
out.putInt(int(myHstate));
|
||||||
|
|
||||||
out.putInt(myHblankCtr);
|
|
||||||
out.putInt(myHctr);
|
out.putInt(myHctr);
|
||||||
out.putInt(myXDelta);
|
out.putInt(myXDelta);
|
||||||
out.putInt(myXAtRenderingStart);
|
out.putInt(myXAtRenderingStart);
|
||||||
|
@ -299,7 +297,6 @@ bool TIA::load(Serializer& in)
|
||||||
|
|
||||||
myHstate = HState(in.getInt());
|
myHstate = HState(in.getInt());
|
||||||
|
|
||||||
myHblankCtr = in.getInt();
|
|
||||||
myHctr = in.getInt();
|
myHctr = in.getInt();
|
||||||
myXDelta = in.getInt();
|
myXDelta = in.getInt();
|
||||||
myXAtRenderingStart = in.getInt();
|
myXAtRenderingStart = in.getInt();
|
||||||
|
@ -1105,11 +1102,19 @@ void TIA::tickMovement()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void TIA::tickHblank()
|
void TIA::tickHblank()
|
||||||
{
|
{
|
||||||
if (myHctr == 0) {
|
switch (myHctr) {
|
||||||
myHblankCtr = 0;
|
case 0:
|
||||||
}
|
myExtendedHblank = false;
|
||||||
|
break;
|
||||||
|
|
||||||
if (++myHblankCtr >= 68) myHstate = HState::frame;
|
case 67:
|
||||||
|
if (!myExtendedHblank) myHstate = HState::frame;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 75:
|
||||||
|
if (myExtendedHblank) myHstate = HState::frame;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -1155,7 +1160,6 @@ void TIA::nextLine()
|
||||||
if (!myMovementInProgress && myLinesSinceChange < 2) myLinesSinceChange++;
|
if (!myMovementInProgress && myLinesSinceChange < 2) myLinesSinceChange++;
|
||||||
|
|
||||||
myHstate = HState::blank;
|
myHstate = HState::blank;
|
||||||
myExtendedHblank = false;
|
|
||||||
myXDelta = 0;
|
myXDelta = 0;
|
||||||
|
|
||||||
myFrameManager.nextLine();
|
myFrameManager.nextLine();
|
||||||
|
@ -1289,7 +1293,6 @@ void TIA::delayedWrite(uInt8 address, uInt8 value)
|
||||||
myMovementInProgress = true;
|
myMovementInProgress = true;
|
||||||
|
|
||||||
if (!myExtendedHblank) {
|
if (!myExtendedHblank) {
|
||||||
myHblankCtr -= 8;
|
|
||||||
clearHmoveComb();
|
clearHmoveComb();
|
||||||
myExtendedHblank = true;
|
myExtendedHblank = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -476,8 +476,8 @@ class TIA : public Device
|
||||||
|
|
||||||
HState myHstate;
|
HState myHstate;
|
||||||
|
|
||||||
Int32 myHblankCtr;
|
|
||||||
Int32 myHctr;
|
uInt8 myHctr;
|
||||||
uInt32 myXDelta;
|
uInt32 myXDelta;
|
||||||
uInt32 myXAtRenderingStart;
|
uInt32 myXAtRenderingStart;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue