Fix the underlines

This commit is contained in:
starfrost013
2025-06-16 21:52:18 +01:00
parent d63d1342de
commit 89b8652792
2 changed files with 25 additions and 13 deletions

View File

@@ -187,6 +187,10 @@ extern bitmap_t *buffer32;
#define efscrnsz_y (monitors[monitor_index_global].mon_efscrnsz_y)
#define unscaled_size_x (monitors[monitor_index_global].mon_unscaled_size_x)
#define unscaled_size_y (monitors[monitor_index_global].mon_unscaled_size_y)
#define CGAPAL_CGA_START 16 // Where the 16-color cga text/composite starts
extern PALETTE cgapal;
extern PALETTE cgapal_mono[6];
#if 0

View File

@@ -196,16 +196,22 @@ mda_poll(void *priv)
// turn off bright bg colours in blink mode
if ((mda->mode & MDA_MODE_BLINK)
&& (color_bg & 0x8))
{
color_bg & ~(0x8);
}
}
}
if (mda->scanline == 12 && ((attr & 7) == 1)) { // underline
for (c = 0; c < 9; c++)
buffer32->line[mda->displine][(x * 9) + c] = mda_attr_to_color_table[attr][blink][1] | color_fg;
} else {
{
if (mda->monitor_type == MDA_MONITOR_TYPE_RGBI
&& !(mda->mode & MDA_MODE_BW))
{
buffer32->line[mda->displine][(x * 9) + c] = CGAPAL_CGA_START + color_fg;
}
else
buffer32->line[mda->displine][(x * 9) + c] = mda_attr_to_color_table[attr][blink][1];
}
} else { // main text
for (c = 0; c < 8; c++)
{
//bg=0, fg=1
@@ -217,13 +223,14 @@ mda_poll(void *priv)
&& !(mda->mode & MDA_MODE_BW))
{
if (!is_fg)
font_char = 16 + color_bg;
font_char = CGAPAL_CGA_START + color_bg;
else
font_char = 16 + color_fg;
font_char = CGAPAL_CGA_START + color_fg;
}
buffer32->line[mda->displine][(x * 9) + c] = font_char;
}
if ((chr & ~0x1f) == 0xc0)
{
bool is_fg = fontdatm[chr + mda->fontbase][mda->scanline] & 1;
@@ -237,6 +244,7 @@ mda_poll(void *priv)
buffer32->line[mda->displine][(x * 9) + 8] = mda_attr_to_color_table[attr][blink][0] | color_bg;
}
mda->memaddr++;
if (drawcursor) {
for (c = 0; c < 9; c++)
buffer32->line[mda->displine][(x * 9) + c] ^= mda_attr_to_color_table[attr][0][1] | color_fg;
@@ -357,13 +365,13 @@ mda_init(mda_t *mda)
mda_attr_to_color_table[c][0][1] = 7 + 16;
}
mda_attr_to_color_table[0x70][0][1] = 16;
mda_attr_to_color_table[0x70][0][0] = mda_attr_to_color_table[0x70][1][0] = mda_attr_to_color_table[0x70][1][1] = 16 + 15;
mda_attr_to_color_table[0x70][0][0] = mda_attr_to_color_table[0x70][1][0] = mda_attr_to_color_table[0x70][1][1] = CGAPAL_CGA_START + 15;
mda_attr_to_color_table[0xF0][0][1] = 16;
mda_attr_to_color_table[0xF0][0][0] = mda_attr_to_color_table[0xF0][1][0] = mda_attr_to_color_table[0xF0][1][1] = 16 + 15;
mda_attr_to_color_table[0x78][0][1] = 16 + 7;
mda_attr_to_color_table[0x78][0][0] = mda_attr_to_color_table[0x78][1][0] = mda_attr_to_color_table[0x78][1][1] = 16 + 15;
mda_attr_to_color_table[0xF8][0][1] = 16 + 7;
mda_attr_to_color_table[0xF8][0][0] = mda_attr_to_color_table[0xF8][1][0] = mda_attr_to_color_table[0xF8][1][1] = 16 + 15;
mda_attr_to_color_table[0xF0][0][0] = mda_attr_to_color_table[0xF0][1][0] = mda_attr_to_color_table[0xF0][1][1] = CGAPAL_CGA_START + 15;
mda_attr_to_color_table[0x78][0][1] = CGAPAL_CGA_START + 7;
mda_attr_to_color_table[0x78][0][0] = mda_attr_to_color_table[0x78][1][0] = mda_attr_to_color_table[0x78][1][1] = CGAPAL_CGA_START + 15;
mda_attr_to_color_table[0xF8][0][1] = CGAPAL_CGA_START + 7;
mda_attr_to_color_table[0xF8][0][0] = mda_attr_to_color_table[0xF8][1][0] = mda_attr_to_color_table[0xF8][1][1] = CGAPAL_CGA_START + 15;
mda_attr_to_color_table[0x00][0][1] = mda_attr_to_color_table[0x00][1][1] = 16;
mda_attr_to_color_table[0x08][0][1] = mda_attr_to_color_table[0x08][1][1] = 16;
mda_attr_to_color_table[0x80][0][1] = mda_attr_to_color_table[0x80][1][1] = 16;
@@ -429,7 +437,7 @@ mda_standalone_init(UNUSED(const device_t *info))
void
mda_setcol(int chr, int blink, int fg, uint8_t cga_ink)
{
mda_attr_to_color_table[chr][blink][fg] = 16 + cga_ink;
mda_attr_to_color_table[chr][blink][fg] = CGAPAL_CGA_START + cga_ink;
}
void