Added monochrome green/amber/white monitor selection for CGA, MDA and Hercules. Patch from basic2004.
This commit is contained in:
parent
fbd0f01967
commit
7af491d719
6 changed files with 300 additions and 59 deletions
170
src/video.c
170
src/video.c
|
|
@ -466,22 +466,7 @@ void initvideo()
|
|||
for (c = 0; c < 65536; c++)
|
||||
video_16to32[c] = ((c & 31) << 3) | (((c >> 5) & 63) << 10) | (((c >> 11) & 31) << 19);
|
||||
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x00, 0x00, 0xaa);
|
||||
cgapal[0x2] = makecol(0x00, 0xaa, 0x00);
|
||||
cgapal[0x3] = makecol(0x00, 0xaa, 0xaa);
|
||||
cgapal[0x4] = makecol(0xaa, 0x00, 0x00);
|
||||
cgapal[0x5] = makecol(0xaa, 0x00, 0xaa);
|
||||
cgapal[0x6] = makecol(0xaa, 0x55, 0x00);
|
||||
cgapal[0x7] = makecol(0xaa, 0xaa, 0xaa);
|
||||
cgapal[0x8] = makecol(0x55, 0x55, 0x55);
|
||||
cgapal[0x9] = makecol(0x55, 0x55, 0xff);
|
||||
cgapal[0xa] = makecol(0x55, 0xff, 0x55);
|
||||
cgapal[0xb] = makecol(0x55, 0xff, 0xff);
|
||||
cgapal[0xc] = makecol(0xff, 0x55, 0x55);
|
||||
cgapal[0xd] = makecol(0xff, 0x55, 0xff);
|
||||
cgapal[0xe] = makecol(0xff, 0xff, 0x55);
|
||||
cgapal[0xf] = makecol(0xff, 0xff, 0xff);
|
||||
cgapal_rebuild(DISPLAY_RGB, 0);
|
||||
|
||||
blit_data.wake_blit_thread = thread_create_event();
|
||||
blit_data.blit_complete = thread_create_event();
|
||||
|
|
@ -548,3 +533,156 @@ void video_blit_memtoscreen(int x, int y, int y1, int y2, int w, int h)
|
|||
blit_data.h = h;
|
||||
thread_set_event(blit_data.wake_blit_thread);
|
||||
}
|
||||
|
||||
void cgapal_rebuild(int display_type, int contrast)
|
||||
{
|
||||
switch (display_type)
|
||||
{
|
||||
case DISPLAY_GREEN:
|
||||
if (contrast)
|
||||
{
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x00, 0x34, 0x0c);
|
||||
cgapal[0x2] = makecol(0x04, 0x5d, 0x14);
|
||||
cgapal[0x3] = makecol(0x04, 0x69, 0x18);
|
||||
cgapal[0x4] = makecol(0x08, 0xa2, 0x24);
|
||||
cgapal[0x5] = makecol(0x08, 0xb2, 0x28);
|
||||
cgapal[0x6] = makecol(0x0c, 0xe7, 0x34);
|
||||
cgapal[0x7] = makecol(0x0c, 0xf3, 0x38);
|
||||
cgapal[0x8] = makecol(0x00, 0x1c, 0x04);
|
||||
cgapal[0x9] = makecol(0x04, 0x4d, 0x10);
|
||||
cgapal[0xa] = makecol(0x04, 0x7d, 0x1c);
|
||||
cgapal[0xb] = makecol(0x04, 0x8e, 0x20);
|
||||
cgapal[0xc] = makecol(0x08, 0xc7, 0x2c);
|
||||
cgapal[0xd] = makecol(0x08, 0xd7, 0x30);
|
||||
cgapal[0xe] = makecol(0x14, 0xff, 0x45);
|
||||
cgapal[0xf] = makecol(0x34, 0xff, 0x5d);
|
||||
}
|
||||
else
|
||||
{
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x00, 0x34, 0x0c);
|
||||
cgapal[0x2] = makecol(0x04, 0x55, 0x14);
|
||||
cgapal[0x3] = makecol(0x04, 0x5d, 0x14);
|
||||
cgapal[0x4] = makecol(0x04, 0x86, 0x20);
|
||||
cgapal[0x5] = makecol(0x04, 0x92, 0x20);
|
||||
cgapal[0x6] = makecol(0x08, 0xba, 0x2c);
|
||||
cgapal[0x7] = makecol(0x08, 0xc7, 0x2c);
|
||||
cgapal[0x8] = makecol(0x04, 0x8a, 0x20);
|
||||
cgapal[0x9] = makecol(0x08, 0xa2, 0x24);
|
||||
cgapal[0xa] = makecol(0x08, 0xc3, 0x2c);
|
||||
cgapal[0xb] = makecol(0x08, 0xcb, 0x30);
|
||||
cgapal[0xc] = makecol(0x0c, 0xe7, 0x34);
|
||||
cgapal[0xd] = makecol(0x0c, 0xef, 0x38);
|
||||
cgapal[0xe] = makecol(0x24, 0xff, 0x51);
|
||||
cgapal[0xf] = makecol(0x34, 0xff, 0x5d);
|
||||
}
|
||||
break;
|
||||
case DISPLAY_AMBER:
|
||||
if (contrast)
|
||||
{
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x55, 0x14, 0x00);
|
||||
cgapal[0x2] = makecol(0x82, 0x2c, 0x00);
|
||||
cgapal[0x3] = makecol(0x92, 0x34, 0x00);
|
||||
cgapal[0x4] = makecol(0xcf, 0x61, 0x00);
|
||||
cgapal[0x5] = makecol(0xdf, 0x6d, 0x00);
|
||||
cgapal[0x6] = makecol(0xff, 0x9a, 0x04);
|
||||
cgapal[0x7] = makecol(0xff, 0xae, 0x18);
|
||||
cgapal[0x8] = makecol(0x2c, 0x08, 0x00);
|
||||
cgapal[0x9] = makecol(0x6d, 0x20, 0x00);
|
||||
cgapal[0xa] = makecol(0xa6, 0x45, 0x00);
|
||||
cgapal[0xb] = makecol(0xba, 0x51, 0x00);
|
||||
cgapal[0xc] = makecol(0xef, 0x79, 0x00);
|
||||
cgapal[0xd] = makecol(0xfb, 0x86, 0x00);
|
||||
cgapal[0xe] = makecol(0xff, 0xcb, 0x28);
|
||||
cgapal[0xf] = makecol(0xff, 0xe3, 0x34);
|
||||
}
|
||||
else
|
||||
{
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x55, 0x14, 0x00);
|
||||
cgapal[0x2] = makecol(0x79, 0x24, 0x00);
|
||||
cgapal[0x3] = makecol(0x86, 0x2c, 0x00);
|
||||
cgapal[0x4] = makecol(0xae, 0x49, 0x00);
|
||||
cgapal[0x5] = makecol(0xbe, 0x55, 0x00);
|
||||
cgapal[0x6] = makecol(0xe3, 0x71, 0x00);
|
||||
cgapal[0x7] = makecol(0xef, 0x79, 0x00);
|
||||
cgapal[0x8] = makecol(0xb2, 0x4d, 0x00);
|
||||
cgapal[0x9] = makecol(0xcb, 0x5d, 0x00);
|
||||
cgapal[0xa] = makecol(0xeb, 0x79, 0x00);
|
||||
cgapal[0xb] = makecol(0xf3, 0x7d, 0x00);
|
||||
cgapal[0xc] = makecol(0xff, 0x9e, 0x04);
|
||||
cgapal[0xd] = makecol(0xff, 0xaa, 0x10);
|
||||
cgapal[0xe] = makecol(0xff, 0xdb, 0x30);
|
||||
cgapal[0xf] = makecol(0xff, 0xe3, 0x34);
|
||||
}
|
||||
break;
|
||||
case DISPLAY_WHITE:
|
||||
if (contrast)
|
||||
{
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x37, 0x3d, 0x40);
|
||||
cgapal[0x2] = makecol(0x55, 0x5c, 0x5f);
|
||||
cgapal[0x3] = makecol(0x61, 0x67, 0x6b);
|
||||
cgapal[0x4] = makecol(0x8f, 0x95, 0x95);
|
||||
cgapal[0x5] = makecol(0x9b, 0xa0, 0x9f);
|
||||
cgapal[0x6] = makecol(0xcc, 0xcf, 0xc8);
|
||||
cgapal[0x7] = makecol(0xdf, 0xde, 0xd4);
|
||||
cgapal[0x8] = makecol(0x24, 0x27, 0x29);
|
||||
cgapal[0x9] = makecol(0x42, 0x48, 0x4c);
|
||||
cgapal[0xa] = makecol(0x70, 0x76, 0x78);
|
||||
cgapal[0xb] = makecol(0x81, 0x87, 0x87);
|
||||
cgapal[0xc] = makecol(0xaf, 0xb3, 0xb0);
|
||||
cgapal[0xd] = makecol(0xbb, 0xbf, 0xba);
|
||||
cgapal[0xe] = makecol(0xef, 0xed, 0xdf);
|
||||
cgapal[0xf] = makecol(0xff, 0xfd, 0xed);
|
||||
}
|
||||
else
|
||||
{
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x37, 0x3d, 0x40);
|
||||
cgapal[0x2] = makecol(0x4a, 0x50, 0x54);
|
||||
cgapal[0x3] = makecol(0x55, 0x5c, 0x5f);
|
||||
cgapal[0x4] = makecol(0x78, 0x7e, 0x80);
|
||||
cgapal[0x5] = makecol(0x81, 0x87, 0x87);
|
||||
cgapal[0x6] = makecol(0xa3, 0xa7, 0xa6);
|
||||
cgapal[0x7] = makecol(0xaf, 0xb3, 0xb0);
|
||||
cgapal[0x8] = makecol(0x7a, 0x81, 0x83);
|
||||
cgapal[0x9] = makecol(0x8c, 0x92, 0x92);
|
||||
cgapal[0xa] = makecol(0xac, 0xb0, 0xad);
|
||||
cgapal[0xb] = makecol(0xb3, 0xb7, 0xb4);
|
||||
cgapal[0xc] = makecol(0xd1, 0xd3, 0xcb);
|
||||
cgapal[0xd] = makecol(0xd9, 0xdb, 0xd2);
|
||||
cgapal[0xe] = makecol(0xf7, 0xf5, 0xe7);
|
||||
cgapal[0xf] = makecol(0xff, 0xfd, 0xed);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
cgapal[0x0] = makecol(0x00, 0x00, 0x00);
|
||||
cgapal[0x1] = makecol(0x00, 0x00, 0xaa);
|
||||
cgapal[0x2] = makecol(0x00, 0xaa, 0x00);
|
||||
cgapal[0x3] = makecol(0x00, 0xaa, 0xaa);
|
||||
cgapal[0x4] = makecol(0xaa, 0x00, 0x00);
|
||||
cgapal[0x5] = makecol(0xaa, 0x00, 0xaa);
|
||||
if (display_type == DISPLAY_RGB_NO_BROWN)
|
||||
{
|
||||
cgapal[0x6] = makecol(0xaa, 0xaa, 0x00);
|
||||
}
|
||||
else
|
||||
{
|
||||
cgapal[0x6] = makecol(0xaa, 0x55, 0x00);
|
||||
}
|
||||
cgapal[0x7] = makecol(0xaa, 0xaa, 0xaa);
|
||||
cgapal[0x8] = makecol(0x55, 0x55, 0x55);
|
||||
cgapal[0x9] = makecol(0x55, 0x55, 0xff);
|
||||
cgapal[0xa] = makecol(0x55, 0xff, 0x55);
|
||||
cgapal[0xb] = makecol(0x55, 0xff, 0xff);
|
||||
cgapal[0xc] = makecol(0xff, 0x55, 0x55);
|
||||
cgapal[0xd] = makecol(0xff, 0x55, 0xff);
|
||||
cgapal[0xe] = makecol(0xff, 0xff, 0x55);
|
||||
cgapal[0xf] = makecol(0xff, 0xff, 0xff);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue