Effectively fix the mystery positioning bug.

This commit is contained in:
Christian Speckner 2016-12-14 00:03:17 +01:00
parent 12fe183890
commit 839ba71f20
7 changed files with 14 additions and 14 deletions

View File

@ -69,9 +69,9 @@ void Ball::hmbl(uInt8 value)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Ball::resbl(bool hblank) void Ball::resbl(bool hblank, bool extendedHblank)
{ {
myCounter = hblank ? 159 : 157; myCounter = hblank ? (extendedHblank ? 158 : 159) : 157;
myIsRendering = true; myIsRendering = true;
myRenderCounter = Count::renderCounterOffset; myRenderCounter = Count::renderCounterOffset;

View File

@ -39,7 +39,7 @@ class Ball : public Serializable
void hmbl(uInt8 value); void hmbl(uInt8 value);
uInt8 hmbl() const { return myHmmClocks; } uInt8 hmbl() const { return myHmmClocks; }
void resbl(bool hblank); void resbl(bool hblank, bool extendedHblank);
void ctrlpf(uInt8 value); void ctrlpf(uInt8 value);

View File

@ -69,9 +69,9 @@ void Missile::hmm(uInt8 value)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Missile::resm(bool hblank) void Missile::resm(bool hblank, bool extendedHblank)
{ {
myCounter = hblank ? 159 : 157; myCounter = hblank ? (extendedHblank ? 158 : 159) : 157;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -39,7 +39,7 @@ class Missile : public Serializable
void hmm(uInt8 value); void hmm(uInt8 value);
uInt32 hmm() const { return myHmmClocks; } uInt32 hmm() const { return myHmmClocks; }
void resm(bool hblank); void resm(bool hblank, bool extendHblank);
void resmp(uInt8 value, const Player& player); void resmp(uInt8 value, const Player& player);
bool resmp() const { return bool(myResmp); } bool resmp() const { return bool(myResmp); }

View File

@ -91,9 +91,9 @@ void Player::nusiz(uInt8 value)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Player::resp(bool hblank) void Player::resp(bool hblank, bool extendedHblank)
{ {
myCounter = hblank ? 159 : 157; myCounter = hblank ? (extendedHblank ? 158 : 159) : 157;
if (myIsRendering && myRenderCounter < -1) if (myIsRendering && myRenderCounter < -1)
myRenderCounter = Count::renderCounterOffset; myRenderCounter = Count::renderCounterOffset;

View File

@ -40,7 +40,7 @@ class Player : public Serializable
void nusiz(uInt8 value); void nusiz(uInt8 value);
void resp(bool hblank); void resp(bool hblank, bool extendedHblank);
void refp(uInt8 value); void refp(uInt8 value);
bool refp() const { return myIsReflected; } bool refp() const { return myIsReflected; }

View File

@ -442,12 +442,12 @@ bool TIA::poke(uInt16 address, uInt8 value)
case RESM0: case RESM0:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile0.resm(myHstate == HState::blank); myMissile0.resm(myHstate == HState::blank, myExtendedHblank);
break; break;
case RESM1: case RESM1:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile1.resm(myHstate == HState::blank); myMissile1.resm(myHstate == HState::blank, myExtendedHblank);
break; break;
case RESMP0: case RESMP0:
@ -512,12 +512,12 @@ bool TIA::poke(uInt16 address, uInt8 value)
case RESP0: case RESP0:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myPlayer0.resp(myHstate == HState::blank); myPlayer0.resp(myHstate == HState::blank, myExtendedHblank);
break; break;
case RESP1: case RESP1:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myPlayer1.resp(myHstate == HState::blank); myPlayer1.resp(myHstate == HState::blank, myExtendedHblank);
break; break;
case REFP0: case REFP0:
@ -553,7 +553,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
case RESBL: case RESBL:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myBall.resbl(myHstate == HState::blank); myBall.resbl(myHstate == HState::blank, myExtendedHblank);
break; break;
case VDELBL: case VDELBL: