-The STIC now displays the encoded background color when one is provided.

--The only time I've seen this was in a game that used FGBG mode, and it looked messed up.
-Implemented the parsing of the background for Color Stack mode.
--Because the STIC Registers aren't populated, this doesn't do anything. I'm not sure when this is supposed to occur.
-Determined when Colored Squares mode is active. I'll try to implement this mode shortly.
This commit is contained in:
brandman211 2012-09-06 07:31:25 +00:00
parent 8230f63ddf
commit a6f11a7ade
1 changed files with 27 additions and 3 deletions

View File

@ -9,6 +9,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
{ {
private bool Sr1, Sr2, Sst, Fgbg = false; private bool Sr1, Sr2, Sst, Fgbg = false;
private ushort[] Register = new ushort[64]; private ushort[] Register = new ushort[64];
private ushort ColorSP = 0x0028;
public int TotalExecutedCycles; public int TotalExecutedCycles;
public int PendingCycles; public int PendingCycles;
@ -225,9 +226,10 @@ namespace BizHawk.Emulation.Consoles.Intellivision
bool gram = ((card & 0x0800) != 0); bool gram = ((card & 0x0800) != 0);
int card_num = card >> 3; int card_num = card >> 3;
int fg = card & 0x0007; int fg = card & 0x0007;
int bg = 0x000000;
if (Fgbg) if (Fgbg)
{ {
int bg = ((card >> 9) & 0x0008) | bg = ((card >> 9) & 0x0008) |
((card >> 11) & 0x0004) | ((card >> 11) & 0x0004) |
((card >> 9) & 0x0003); ((card >> 9) & 0x0003);
/* /*
@ -239,18 +241,40 @@ namespace BizHawk.Emulation.Consoles.Intellivision
else else
{ {
bool advance = ((card & 0x2000) != 0); bool advance = ((card & 0x2000) != 0);
bool squares = ((card & 0x1000) != 0);
if (gram) if (gram)
{ {
// GRAM only has 64 cards. // GRAM only has 64 cards.
card_num &= 0x003F; card_num &= 0x003F;
fg |= (card >> 9) & 0x0008; /*
The foreground color has an additional bit when not
in Colored Squares mode.
*/
if (squares)
fg |= 0x0008;
} }
else else
{
/* /*
All of the GROM's 256 cards can be used in Color All of the GROM's 256 cards can be used in Color
Stack Mode. Stack Mode.
*/ */
card_num &= 0x00FF; card_num &= 0x00FF;
}
if (!gram && squares)
{
// TODO: Colored Squares Mode.
}
else
{
if (advance)
{
ColorSP++;
if (ColorSP > 0x002B)
ColorSP = 0x0028;
}
bg = ReadMemory(ColorSP);
}
} }
for (int pict_row = 0; pict_row < 8; pict_row++) for (int pict_row = 0; pict_row < 8; pict_row++)
{ {
@ -281,7 +305,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
*/ */
FrameBuffer[pixel] = ColorToRGBA(fg); FrameBuffer[pixel] = ColorToRGBA(fg);
else else
FrameBuffer[pixel] = 0x000000; FrameBuffer[pixel] = ColorToRGBA(bg);
row >>= 1; row >>= 1;
} }
} }