TIA: Added blanking when HMOVE occurs.
Implemented playfield copying (fixes some Pacman display issues). Added a document which discusses the inner workings of the TIA on a circuit level. M6532: Added stubs for several registers, and changed the returns for some. Pitfall's first screen now renders correctly, and the copyright message scrolls.
This commit is contained in:
parent
287c5c61f8
commit
5e69d7503e
|
@ -58,6 +58,22 @@ namespace BizHawk.Emulation.Consoles.Atari
|
|||
else
|
||||
{
|
||||
Console.WriteLine("6532 register read: " + maskedAddr.ToString("x"));
|
||||
if (maskedAddr == 0x00) // SWCHA
|
||||
{
|
||||
return 0xFF;
|
||||
}
|
||||
else if (maskedAddr == 0x01) // SWACNT
|
||||
{
|
||||
|
||||
}
|
||||
else if (maskedAddr == 0x02) // SWCHB
|
||||
{
|
||||
return 0x3F;
|
||||
}
|
||||
else if (maskedAddr == 0x03) // SWBCNT
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,9 @@ namespace BizHawk.Emulation.Consoles.Atari
|
|||
UInt32 PF; // PlayField data
|
||||
byte BKcolor, PFcolor;
|
||||
bool PFpriority = false;
|
||||
bool PFreflect = false;
|
||||
|
||||
bool hmoveHappened = false;
|
||||
|
||||
struct playerData
|
||||
{
|
||||
|
@ -127,12 +130,20 @@ namespace BizHawk.Emulation.Consoles.Atari
|
|||
// Second half
|
||||
else
|
||||
{
|
||||
PFmask = (UInt32)(1 << ((byte)((pixelPos % 80) / 4)));
|
||||
if (PFreflect)
|
||||
{
|
||||
PFmask = (UInt32)(1 << ((byte)((pixelPos % 80) / 4)));
|
||||
}
|
||||
else
|
||||
{
|
||||
PFmask = (UInt32)(1 << ((20 - 1) - (byte)((pixelPos % 80) / 4)));
|
||||
}
|
||||
}
|
||||
|
||||
UInt32 color;
|
||||
color = palette[BKcolor];
|
||||
|
||||
|
||||
if ((PF & PFmask) != 0)
|
||||
{
|
||||
color = palette[PFcolor];
|
||||
|
@ -246,6 +257,15 @@ namespace BizHawk.Emulation.Consoles.Atari
|
|||
{
|
||||
color = 0x000000;
|
||||
}
|
||||
|
||||
if (hmoveHappened && pixelPos >= 0 && pixelPos < 8)
|
||||
{
|
||||
color = 0x000000;
|
||||
}
|
||||
if (pixelPos >= 8)
|
||||
{
|
||||
hmoveHappened = false;
|
||||
}
|
||||
scanline[pixelPos] = color;
|
||||
|
||||
scanlinePos++;
|
||||
|
@ -382,6 +402,7 @@ namespace BizHawk.Emulation.Consoles.Atari
|
|||
else if (maskedAddr == 0x0A) // CTRLPF
|
||||
{
|
||||
PFpriority = (value & 0x04) != 0;
|
||||
PFreflect = (value & 0x01) != 0;
|
||||
|
||||
ball.size = (byte)((value & 0x30) >> 4);
|
||||
}
|
||||
|
@ -461,6 +482,7 @@ namespace BizHawk.Emulation.Consoles.Atari
|
|||
player1.HM = 0;
|
||||
ball.HM = 0;
|
||||
|
||||
hmoveHappened = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue