Add green/amber hercules mode emulation support. (Thanks ripsaw and h-a-l-9000)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3579
This commit is contained in:
parent
d40f71fc45
commit
f3c1902dab
4 changed files with 33 additions and 0 deletions
|
@ -156,6 +156,7 @@ static Bitu read_crtc_data_other(Bitu /*port*/,Bitu /*iolen*/) {
|
|||
static double hue_offset = 0.0;
|
||||
static Bit8u cga16_val = 0;
|
||||
static void update_cga16_color(void);
|
||||
static Bit8u herc_pal = 0;
|
||||
|
||||
static void cga16_color_select(Bit8u val) {
|
||||
cga16_val = val;
|
||||
|
@ -456,6 +457,30 @@ static void write_pcjr(Bitu port,Bitu val,Bitu /*iolen*/) {
|
|||
}
|
||||
}
|
||||
|
||||
static void CycleHercPal(bool pressed) {
|
||||
if (!pressed) return;
|
||||
if (++herc_pal>2) herc_pal=0;
|
||||
Herc_Palette();
|
||||
VGA_DAC_CombineColor(1,7);
|
||||
}
|
||||
|
||||
void Herc_Palette(void) {
|
||||
switch (herc_pal) {
|
||||
case 0: // White
|
||||
VGA_DAC_SetEntry(0x7,0x2a,0x2a,0x2a);
|
||||
VGA_DAC_SetEntry(0xf,0x3f,0x3f,0x3f);
|
||||
break;
|
||||
case 1: // Amber
|
||||
VGA_DAC_SetEntry(0x7,0x37,0x28,0x00);
|
||||
VGA_DAC_SetEntry(0xf,0x3f,0x34,0x00);
|
||||
break;
|
||||
case 2: // Green
|
||||
VGA_DAC_SetEntry(0x7,0x00,0x26,0x00);
|
||||
VGA_DAC_SetEntry(0xf,0x00,0x3f,0x00);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void write_hercules(Bitu port,Bitu val,Bitu /*iolen*/) {
|
||||
switch (port) {
|
||||
case 0x3b8: {
|
||||
|
@ -551,6 +576,7 @@ void VGA_SetupOther(void) {
|
|||
extern Bit8u int10_font_14[256 * 14];
|
||||
for (i=0;i<256;i++) memcpy(&vga.draw.font[i*32],&int10_font_14[i*14],14);
|
||||
vga.draw.font_tables[0]=vga.draw.font_tables[1]=vga.draw.font;
|
||||
MAPPER_AddHandler(CycleHercPal,MK_f11,0,"hercpal","Herc Pal");
|
||||
}
|
||||
if (machine==MCH_CGA) {
|
||||
IO_RegisterWriteHandler(0x3d8,write_cga,IO_MB);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue