mirror of https://github.com/stella-emu/stella.git
Fix object positions in debugger (getting + setting), documentation.
This commit is contained in:
parent
11d659e5cc
commit
5661b245c7
|
@ -251,8 +251,16 @@ void Ball::applyColors()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
uInt8 Ball::getPosition() const
|
uInt8 Ball::getPosition() const
|
||||||
{
|
{
|
||||||
|
// position =
|
||||||
|
// current playfield x +
|
||||||
|
// (current counter - 156 (the decode clock of copy 0)) +
|
||||||
|
// clock count after decode until first pixel +
|
||||||
|
// 1 (it'll take another cycle after the decode for the rendter counter to start ticking)
|
||||||
|
//
|
||||||
|
// The result may be negative, so we add 160 and do the modulus -> 317 = 156 + 160 + 1
|
||||||
|
//
|
||||||
// Mind the sign of renderCounterOffset: it's defined negative above
|
// Mind the sign of renderCounterOffset: it's defined negative above
|
||||||
return (316 - myCounter - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
return (317 - myCounter - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -260,7 +268,8 @@ void Ball::setPosition(uInt8 newPosition)
|
||||||
{
|
{
|
||||||
myTIA->flushLineCache();
|
myTIA->flushLineCache();
|
||||||
|
|
||||||
myCounter = (316 - newPosition - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
// See getPosition for an explanation
|
||||||
|
myCounter = (317 - newPosition - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -264,15 +264,25 @@ void Missile::applyColors()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
uInt8 Missile::getPosition() const
|
uInt8 Missile::getPosition() const
|
||||||
{
|
{
|
||||||
|
// position =
|
||||||
|
// current playfield x +
|
||||||
|
// (current counter - 156 (the decode clock of copy 0)) +
|
||||||
|
// clock count after decode until first pixel +
|
||||||
|
// 1 (it'll take another cycle after the decode for the rendter counter to start ticking)
|
||||||
|
//
|
||||||
|
// The result may be negative, so we add 160 and do the modulus
|
||||||
|
//
|
||||||
// Mind the sign of renderCounterOffset: it's defined negative above
|
// Mind the sign of renderCounterOffset: it's defined negative above
|
||||||
return (316 - myCounter - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
return (317 - myCounter - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Missile::setPosition(uInt8 newPosition)
|
void Missile::setPosition(uInt8 newPosition)
|
||||||
{
|
{
|
||||||
myTIA->flushLineCache();
|
myTIA->flushLineCache();
|
||||||
myCounter = (316 - newPosition - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
|
||||||
|
// See getPosition for an explanation
|
||||||
|
myCounter = (317 - newPosition - Count::renderCounterOffset + myTIA->getPosition()) % 160;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -397,10 +397,20 @@ void Player::applyColors()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
uInt8 Player::getPosition() const
|
uInt8 Player::getPosition() const
|
||||||
{
|
{
|
||||||
|
// Wide players are shifted by one pixel to the right
|
||||||
const uInt8 shift = myDivider == 1 ? 0 : 1;
|
const uInt8 shift = myDivider == 1 ? 0 : 1;
|
||||||
|
|
||||||
|
// position =
|
||||||
|
// current playfield x +
|
||||||
|
// (current counter - 156 (the decode clock of copy 0)) +
|
||||||
|
// clock count after decode until first pixel +
|
||||||
|
// shift (accounts for wide player shift) +
|
||||||
|
// 1 (it'll take another cycle after the decode for the rendter counter to start ticking)
|
||||||
|
//
|
||||||
|
// The result may be negative, so we add 160 and do the modulus -> 317 = 156 + 160 + 1
|
||||||
|
//
|
||||||
// Mind the sign of renderCounterOffset: it's defined negative above
|
// Mind the sign of renderCounterOffset: it's defined negative above
|
||||||
return (316 - myCounter - Count::renderCounterOffset + shift + myTIA->getPosition()) % 160;
|
return (317 - myCounter - Count::renderCounterOffset + shift + myTIA->getPosition()) % 160;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -410,7 +420,8 @@ void Player::setPosition(uInt8 newPosition)
|
||||||
|
|
||||||
const uInt8 shift = myDivider == 1 ? 0 : 1;
|
const uInt8 shift = myDivider == 1 ? 0 : 1;
|
||||||
|
|
||||||
myCounter = (316 - newPosition - Count::renderCounterOffset + shift + myTIA->getPosition()) % 160;
|
// See getPosition for an explanation
|
||||||
|
myCounter = (317 - newPosition - Count::renderCounterOffset + shift + myTIA->getPosition()) % 160;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
Loading…
Reference in New Issue