mirror of https://github.com/stella-emu/stella.git
Fix TIA info in debugger after RSYNC.
This commit is contained in:
parent
ccafbf2bbd
commit
b30ca12731
|
@ -124,7 +124,7 @@ void TIA::reset()
|
||||||
myColorHBlank = 0;
|
myColorHBlank = 0;
|
||||||
myLastCycle = 0;
|
myLastCycle = 0;
|
||||||
mySubClock = 0;
|
mySubClock = 0;
|
||||||
myXDelta = 0;
|
myHctrDelta = 0;
|
||||||
myXAtRenderingStart = 0;
|
myXAtRenderingStart = 0;
|
||||||
|
|
||||||
memset(myShadowRegisters, 0, 64);
|
memset(myShadowRegisters, 0, 64);
|
||||||
|
@ -229,7 +229,7 @@ bool TIA::save(Serializer& out) const
|
||||||
out.putInt(int(myHstate));
|
out.putInt(int(myHstate));
|
||||||
|
|
||||||
out.putInt(myHctr);
|
out.putInt(myHctr);
|
||||||
out.putInt(myXDelta);
|
out.putInt(myHctrDelta);
|
||||||
out.putInt(myXAtRenderingStart);
|
out.putInt(myXAtRenderingStart);
|
||||||
|
|
||||||
out.putBool(myCollisionUpdateRequired);
|
out.putBool(myCollisionUpdateRequired);
|
||||||
|
@ -298,7 +298,7 @@ bool TIA::load(Serializer& in)
|
||||||
myHstate = HState(in.getInt());
|
myHstate = HState(in.getInt());
|
||||||
|
|
||||||
myHctr = in.getInt();
|
myHctr = in.getInt();
|
||||||
myXDelta = in.getInt();
|
myHctrDelta = in.getInt();
|
||||||
myXAtRenderingStart = in.getInt();
|
myXAtRenderingStart = in.getInt();
|
||||||
|
|
||||||
myCollisionUpdateRequired = in.getBool();
|
myCollisionUpdateRequired = in.getBool();
|
||||||
|
@ -778,7 +778,7 @@ bool TIA::electronBeamPos(uInt32& x, uInt32& y) const
|
||||||
{
|
{
|
||||||
uInt8 clocks = clocksThisLine();
|
uInt8 clocks = clocksThisLine();
|
||||||
|
|
||||||
x = clocks < 68 ? 0 : clocks - 68;
|
x = (clocks < 68) ? 0 : clocks - 68;
|
||||||
y = myFrameManager.getY();
|
y = myFrameManager.getY();
|
||||||
|
|
||||||
return isRendering();
|
return isRendering();
|
||||||
|
@ -1121,7 +1121,7 @@ void TIA::tickHblank()
|
||||||
void TIA::tickHframe()
|
void TIA::tickHframe()
|
||||||
{
|
{
|
||||||
const uInt32 y = myFrameManager.getY();
|
const uInt32 y = myFrameManager.getY();
|
||||||
const uInt32 x = myHctr - 68 - myXDelta;
|
const uInt32 x = myHctr - 68 - myHctrDelta;
|
||||||
|
|
||||||
myCollisionUpdateRequired = true;
|
myCollisionUpdateRequired = true;
|
||||||
|
|
||||||
|
@ -1141,7 +1141,7 @@ void TIA::applyRsync()
|
||||||
{
|
{
|
||||||
const uInt32 x = myHctr > 68 ? myHctr - 68 : 0;
|
const uInt32 x = myHctr > 68 ? myHctr - 68 : 0;
|
||||||
|
|
||||||
myXDelta = 157 - x;
|
myHctrDelta = 225 - myHctr;
|
||||||
if (myFrameManager.isRendering())
|
if (myFrameManager.isRendering())
|
||||||
memset(myFramebuffer.get() + myFrameManager.getY() * 160 + x, 0, 160 - x);
|
memset(myFramebuffer.get() + myFrameManager.getY() * 160 + x, 0, 160 - x);
|
||||||
|
|
||||||
|
@ -1160,7 +1160,7 @@ void TIA::nextLine()
|
||||||
if (!myMovementInProgress && myLinesSinceChange < 2) myLinesSinceChange++;
|
if (!myMovementInProgress && myLinesSinceChange < 2) myLinesSinceChange++;
|
||||||
|
|
||||||
myHstate = HState::blank;
|
myHstate = HState::blank;
|
||||||
myXDelta = 0;
|
myHctrDelta = 0;
|
||||||
|
|
||||||
myFrameManager.nextLine();
|
myFrameManager.nextLine();
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,7 @@ class TIA : public Device
|
||||||
|
|
||||||
@return The current color clock
|
@return The current color clock
|
||||||
*/
|
*/
|
||||||
uInt32 clocksThisLine() const { return myHctr - myXDelta; }
|
uInt32 clocksThisLine() const { return myHctr - myHctrDelta; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Answers the total number of scanlines the TIA generated in producing
|
Answers the total number of scanlines the TIA generated in producing
|
||||||
|
@ -331,7 +331,9 @@ class TIA : public Device
|
||||||
Get the current x value.
|
Get the current x value.
|
||||||
*/
|
*/
|
||||||
uInt8 getPosition() const {
|
uInt8 getPosition() const {
|
||||||
return (myHctr < 68) ? 0 : (myHctr - 68 - myXDelta);
|
uInt8 realHctr = myHctr - myHctrDelta;
|
||||||
|
|
||||||
|
return (realHctr < 68) ? 0 : (realHctr - 68);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -476,10 +478,12 @@ class TIA : public Device
|
||||||
|
|
||||||
HState myHstate;
|
HState myHstate;
|
||||||
|
|
||||||
|
// Master line counter
|
||||||
uInt8 myHctr;
|
uInt8 myHctr;
|
||||||
uInt32 myXDelta;
|
// Delta between master line counter and actual color clock. Nonzero after RSYNC (before the scanline terminates)
|
||||||
uInt32 myXAtRenderingStart;
|
Int32 myHctrDelta;
|
||||||
|
// Electron beam x at rendering start (used for blanking out any pixels from the last frame that are not overwritten)
|
||||||
|
uInt8 myXAtRenderingStart;
|
||||||
|
|
||||||
bool myCollisionUpdateRequired;
|
bool myCollisionUpdateRequired;
|
||||||
uInt32 myCollisionMask;
|
uInt32 myCollisionMask;
|
||||||
|
|
Loading…
Reference in New Issue