TIA: Implemented missile copying. Also added the missile 1 size which was missing before.

This commit is contained in:
pjgat09 2012-03-22 22:01:20 +00:00
parent fa25305d67
commit e708527168
1 changed files with 42 additions and 0 deletions

View File

@ -27,12 +27,15 @@ namespace BizHawk.Emulation.Consoles.Atari
public bool resetToPlayer; public bool resetToPlayer;
public byte hPosCnt; public byte hPosCnt;
public byte size; public byte size;
public byte number;
public byte HM; public byte HM;
public byte collisions; public byte collisions;
public bool tick() public bool tick()
{ {
bool result = false; bool result = false;
// At hPosCnt == 0, start drawing the missile, if enabled
if (hPosCnt < (1 << size)) if (hPosCnt < (1 << size))
{ {
if (enabled && !resetToPlayer) if (enabled && !resetToPlayer)
@ -41,6 +44,42 @@ namespace BizHawk.Emulation.Consoles.Atari
result = true; result = true;
} }
} }
if ((number & 0x07) == 0x01 || ((number & 0x07) == 0x03))
{
if (hPosCnt >= 16 && hPosCnt <= (16 + (1 << size) - 1) )
{
if (enabled && !resetToPlayer)
{
// Draw the missile
result = true;
}
}
}
if (((number & 0x07) == 0x02 || ((number & 0x07) == 0x03) || ((number & 0x07) == 0x06)))
{
if (hPosCnt >= 32 && hPosCnt <= (32 + (1 << size) - 1) )
{
if (enabled && !resetToPlayer)
{
// Draw the missile
result = true;
}
}
}
if ((number & 0x07) == 0x04 || (number & 0x07) == 0x06)
{
if (hPosCnt >= 64 && hPosCnt <= (64 + (1 << size) - 1) )
{
if (enabled && !resetToPlayer)
{
// Draw the missile
result = true;
}
}
}
// Increment the counter // Increment the counter
hPosCnt++; hPosCnt++;
@ -733,10 +772,13 @@ namespace BizHawk.Emulation.Consoles.Atari
{ {
player0.nusiz = (byte)(value & 0x37); player0.nusiz = (byte)(value & 0x37);
player0.missile.size = (byte)((value & 0x30) >> 4); player0.missile.size = (byte)((value & 0x30) >> 4);
player0.missile.number = (byte)(value & 0x07);
} }
else if (maskedAddr == 0x05) // NUSIZ1 else if (maskedAddr == 0x05) // NUSIZ1
{ {
player1.nusiz = (byte)(value & 0x37); player1.nusiz = (byte)(value & 0x37);
player1.missile.size = (byte)((value & 0x30) >> 4);
player1.missile.number = (byte)(value & 0x07);
} }
else if (maskedAddr == 0x06) // COLUP0 else if (maskedAddr == 0x06) // COLUP0
{ {