diff --git a/src/conio/bitmap_con.c b/src/conio/bitmap_con.c index 52c6e82e39306e37a13741af704bff83164b0663..72c0556739fbc42e796b82654705278abe7b1e54 100644 --- a/src/conio/bitmap_con.c +++ b/src/conio/bitmap_con.c @@ -1548,8 +1548,8 @@ int bitmap_drv_init_mode(int mode, int *width, int *height) /* Initialize video memory with black background, white foreground */ for (i = 0; i < vstat.cols*vstat.rows; ++i) { vstat.vmem->vmem[i].ch = 0; - vstat.vmem->vmem[i].legacy_attr = 7; - bitmap_attr2palette_locked(7, &vstat.vmem->vmem[i].fg, &vstat.vmem->vmem[i].bg); + vstat.vmem->vmem[i].legacy_attr = vstat.currattr; + bitmap_attr2palette_locked(vstat.currattr, &vstat.vmem->vmem[i].fg, &vstat.vmem->vmem[i].bg); } pthread_mutex_lock(&screen.screenlock); @@ -1573,8 +1573,8 @@ int bitmap_drv_init_mode(int mode, int *width, int *height) current_font[i]=default_font; bitmap_loadfont_locked(NULL); - cio_textinfo.attribute=7; - cio_textinfo.normattr=7; + cio_textinfo.attribute=vstat.currattr; + cio_textinfo.normattr=vstat.currattr; cio_textinfo.currmode=mode; if (vstat.rows > 0xff) diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c index 27b6a34b846193e7a6ae35948cd94c3b423de372..f8be9fed72304232162b0c8d59658bf0ee4b3831 100644 --- a/src/conio/ciolib.c +++ b/src/conio/ciolib.c @@ -439,16 +439,20 @@ CIOLIBEXPORT int CIOLIBCALL initciolib(int mode) cio_textinfo.wintop=1; cio_textinfo.winright=cio_textinfo.screenwidth; cio_textinfo.winbottom=cio_textinfo.screenheight; - /* Default C64 is Lt Blue on Black (As per CGTerm) */ + + /* Default C64 is Lt Blue on Dark Blue (As per Every picture ever) */ switch(cio_textinfo.currmode) { case C64_40X25: + cio_textinfo.normattr=0x6e; + break; case C128_40X25: - case C128_80X25: - cio_textinfo.normattr=14; + cio_textinfo.normattr=6e; break; default: cio_textinfo.normattr=LIGHTGRAY; + break; } + _beginthread(ciolib_mouse_thread,0,NULL); return(0); } @@ -826,14 +830,17 @@ CIOLIBEXPORT void CIOLIBCALL ciolib_textmode(int mode) cio_textinfo.wintop=1; cio_textinfo.winright=cio_textinfo.screenwidth; cio_textinfo.winbottom=cio_textinfo.screenheight; + switch(cio_textinfo.currmode) { case C64_40X25: + cio_textinfo.normattr=0x6e; + break; case C128_40X25: - case C128_80X25: - cio_textinfo.normattr=14; + cio_textinfo.normattr=6e; break; default: - cio_textinfo.normattr=7; + cio_textinfo.normattr=LIGHTGRAY; + break; } } diff --git a/src/conio/cterm.c b/src/conio/cterm.c index ce4b65bfb06912f8d09d9883ce73ed755d7f5b5c..b9d7983b38d35d10345c1cfd3c5953e5351465cf 100644 --- a/src/conio/cterm.c +++ b/src/conio/cterm.c @@ -36,6 +36,7 @@ #include <string.h> #if defined(_WIN32) #include <malloc.h> /* alloca() on Win32 */ + #include <xpprintf.h> /* asprintf() on Win32 */ #endif #include <genwrap.h> @@ -3377,6 +3378,7 @@ void CIOLIBCALL cterm_start(struct cterminal *cterm) cterm->fg_color += 16; cterm->bg_color += 16; TEXTATTR(cterm->attr); + ciolib_setcolour(cterm->fg_color, cterm->bg_color); SETCURSORTYPE(cterm->cursor); cterm->started=1; if(ti.winleft != cterm->x || ti.wintop != cterm->y || ti.winright != cterm->x+cterm->width-1 || ti.winleft != cterm->y+cterm->height-1) diff --git a/src/conio/vidmodes.c b/src/conio/vidmodes.c index 3487f6d5ad4ea118438a500923a815dd75cb07d5..37de128ed0d1da6d82608207c460cfd0b265c835 100644 --- a/src/conio/vidmodes.c +++ b/src/conio/vidmodes.c @@ -10,110 +10,110 @@ struct video_params vparams[] = { /* BW 40x25 */ - {BW40, GREYSCALE_PALETTE, 40, 25, 14, 15, 16, 8, 1}, + {BW40, GREYSCALE_PALETTE, 40, 25, 14, 15, 16, 8, 1, 7, 0}, /* CO 40x25 */ - {C40, COLOUR_PALETTE, 40, 25, 14, 15, 16, 8, 1}, + {C40, COLOUR_PALETTE, 40, 25, 14, 15, 16, 8, 1, 7, 0}, /* BW 80x25 */ - {BW80, GREYSCALE_PALETTE, 80, 25, 14, 15, 16, 8, 1}, + {BW80, GREYSCALE_PALETTE, 80, 25, 14, 15, 16, 8, 1, 7, 0}, /* CO 80x25 */ - {C80, COLOUR_PALETTE, 80, 25, 14, 15, 16, 8, 1}, + {C80, COLOUR_PALETTE, 80, 25, 14, 15, 16, 8, 1, 7, 0}, /* MONO */ - {MONO, 0, 80, 25, 14, 15, 16, 8, 1}, + {MONO, 0, 80, 25, 14, 15, 16, 8, 1, 7, 0}, /* CO 40x14 */ - {C40X14, COLOUR_PALETTE, 40, 14, 14, 15, 16, 8, 1}, + {C40X14, COLOUR_PALETTE, 40, 14, 14, 15, 16, 8, 1, 7, 0}, /* CO 40x21 */ - {C40X21, COLOUR_PALETTE, 40, 21, 14, 15, 16, 8, 1}, + {C40X21, COLOUR_PALETTE, 40, 21, 14, 15, 16, 8, 1, 7, 0}, /* CO 40x28 */ - {C40X28, COLOUR_PALETTE, 40, 28, 12, 13, 14, 8, 1}, + {C40X28, COLOUR_PALETTE, 40, 28, 12, 13, 14, 8, 1, 7, 0}, /* CO 40x43 */ - {C40X43, COLOUR_PALETTE, 40, 43, 7, 7, 8, 8, 1}, + {C40X43, COLOUR_PALETTE, 40, 43, 7, 7, 8, 8, 1, 7, 0}, /* CO 40x50 */ - {C40X50, COLOUR_PALETTE, 40, 50, 7, 7, 8, 8, 1}, + {C40X50, COLOUR_PALETTE, 40, 50, 7, 7, 8, 8, 1, 7, 0}, /* CO 40x60 */ - {C40X60, COLOUR_PALETTE, 40, 60, 7, 7, 8, 8, 1}, + {C40X60, COLOUR_PALETTE, 40, 60, 7, 7, 8, 8, 1, 7, 0}, /* CO 80x14 */ - {C80X14, COLOUR_PALETTE, 80, 14, 14, 15, 16, 8, 1}, + {C80X14, COLOUR_PALETTE, 80, 14, 14, 15, 16, 8, 1, 7, 0}, /* CO 80x21 */ - {C80X21, COLOUR_PALETTE, 80, 21, 14, 15, 16, 8, 1}, + {C80X21, COLOUR_PALETTE, 80, 21, 14, 15, 16, 8, 1, 7, 0}, /* CO 80x28 */ - {C80X28, COLOUR_PALETTE, 80, 28, 12, 13, 14, 8, 1}, + {C80X28, COLOUR_PALETTE, 80, 28, 12, 13, 14, 8, 1, 7, 0}, /* CO 80x30 */ - {C80X30, COLOUR_PALETTE, 80, 30, 14, 15, 16, 8, 1}, + {C80X30, COLOUR_PALETTE, 80, 30, 14, 15, 16, 8, 1, 7, 0}, /* CO 80x43 */ - {C80X43, COLOUR_PALETTE, 80, 43, 7, 7, 8, 8, 1}, + {C80X43, COLOUR_PALETTE, 80, 43, 7, 7, 8, 8, 1, 7, 0}, /* CO 80x50 */ - {C80X50, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8, 1}, + {C80X50, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8, 1, 7, 0}, /* CO 80x60 */ - {C80X60, COLOUR_PALETTE, 80, 60, 7, 7, 8, 8, 1}, + {C80X60, COLOUR_PALETTE, 80, 60, 7, 7, 8, 8, 1, 7, 0}, /* B 40x14 */ - {BW40X14, GREYSCALE_PALETTE, 40, 14, 14, 15, 16, 8, 1}, + {BW40X14, GREYSCALE_PALETTE, 40, 14, 14, 15, 16, 8, 1, 7, 0}, /* BW 40x21 */ - {BW40X21, GREYSCALE_PALETTE, 40, 21, 14, 15, 16, 8, 1}, + {BW40X21, GREYSCALE_PALETTE, 40, 21, 14, 15, 16, 8, 1, 7, 0}, /* BW 40x28 */ - {BW40X28, GREYSCALE_PALETTE, 40, 28, 12, 13, 14, 8, 1}, + {BW40X28, GREYSCALE_PALETTE, 40, 28, 12, 13, 14, 8, 1, 7, 0}, /* BW 40x43 */ - {BW40X43, GREYSCALE_PALETTE, 40, 43, 7, 7, 8, 8, 1}, + {BW40X43, GREYSCALE_PALETTE, 40, 43, 7, 7, 8, 8, 1, 7, 0}, /* BW 40x50 */ - {BW40X50, GREYSCALE_PALETTE, 40, 50, 7, 7, 8, 8, 1}, + {BW40X50, GREYSCALE_PALETTE, 40, 50, 7, 7, 8, 8, 1, 7, 0}, /* BW 40x60 */ - {BW40X60, GREYSCALE_PALETTE, 40, 60, 7, 7, 8, 8, 1}, + {BW40X60, GREYSCALE_PALETTE, 40, 60, 7, 7, 8, 8, 1, 7, 0}, /* BW 80x14 */ - {BW80X14, GREYSCALE_PALETTE, 80, 14, 14, 15, 16, 8, 1}, + {BW80X14, GREYSCALE_PALETTE, 80, 14, 14, 15, 16, 8, 1, 7, 0}, /* BW 80x21 */ - {BW80X21, GREYSCALE_PALETTE, 80, 21, 14, 15, 16, 8, 1}, + {BW80X21, GREYSCALE_PALETTE, 80, 21, 14, 15, 16, 8, 1, 7, 0}, /* BW 80x28 */ - {BW80X28, GREYSCALE_PALETTE, 80, 28, 12, 13, 14, 8, 1}, + {BW80X28, GREYSCALE_PALETTE, 80, 28, 12, 13, 14, 8, 1, 7, 0}, /* BW 80x43 */ - {BW80X43, GREYSCALE_PALETTE, 80, 43, 7, 7, 8, 8, 1}, + {BW80X43, GREYSCALE_PALETTE, 80, 43, 7, 7, 8, 8, 1, 7, 0}, /* BW 80x50 */ - {BW80X50, GREYSCALE_PALETTE, 80, 50, 7, 7, 8, 8, 1}, + {BW80X50, GREYSCALE_PALETTE, 80, 50, 7, 7, 8, 8, 1, 7, 0}, /* BW 80x60 */ - {BW80X60, GREYSCALE_PALETTE, 80, 60, 7, 7, 8, 8, 1}, + {BW80X60, GREYSCALE_PALETTE, 80, 60, 7, 7, 8, 8, 1, 7, 0}, /* MONO 80x14 */ - {MONO14, MONO_PALETTE, 80, 14, 14, 15, 16, 8, 1}, + {MONO14, MONO_PALETTE, 80, 14, 14, 15, 16, 8, 1, 7, 0}, /* MONO 80x21 */ - {MONO21, MONO_PALETTE, 80, 21, 14, 15, 16, 8, 1}, + {MONO21, MONO_PALETTE, 80, 21, 14, 15, 16, 8, 1, 7, 0}, /* MONO 80x28 */ - {MONO28, MONO_PALETTE, 80, 28, 12, 13, 14, 8, 1}, + {MONO28, MONO_PALETTE, 80, 28, 12, 13, 14, 8, 1, 7, 0}, /* MONO 80x43 */ - {MONO43, MONO_PALETTE, 80, 43, 7, 7, 8, 8, 1}, + {MONO43, MONO_PALETTE, 80, 43, 7, 7, 8, 8, 1, 7, 0}, /* MONO 80x50 */ - {MONO50, MONO_PALETTE, 80, 50, 7, 7, 8, 8, 1}, + {MONO50, MONO_PALETTE, 80, 50, 7, 7, 8, 8, 1, 7, 0}, /* MONO 80x60 */ - {MONO60, MONO_PALETTE, 80, 60, 7, 7, 8, 8, 1}, + {MONO60, MONO_PALETTE, 80, 60, 7, 7, 8, 8, 1, 7, 0}, /* Magical C4350 Mode */ - {C4350, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8, 1}, + {C4350, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8, 1, 7, 0}, /* Commodore 64 40x25 mode */ - {C64_40X25, C64_PALETTE, 40, 25, 0, 7, 8, 8, 1}, + {C64_40X25, C64_PALETTE, 40, 25, 0, 7, 8, 8, 1, 0x6e, CIOLIB_VIDEO_BGBRIGHT|CIOLIB_VIDEO_NOBLINK}, /* Commodore 128 40x25 mode */ - {C128_40X25, COLOUR_PALETTE, 40, 25, 0, 7, 8, 8, 1}, + {C128_40X25, COLOUR_PALETTE, 40, 25, 0, 7, 8, 8, 1, 0x82, CIOLIB_VIDEO_BGBRIGHT|CIOLIB_VIDEO_NOBLINK}, /* Commodore 128 80x25 mode */ - {C128_80X25, COLOUR_PALETTE, 80, 25, 0, 7, 8, 8, 2}, + {C128_80X25, COLOUR_PALETTE, 80, 25, 0, 7, 8, 8, 2, 7, CIOLIB_VIDEO_BGBRIGHT|CIOLIB_VIDEO_NOBLINK}, /* Atari 800 40x24 mode */ - {ATARI_40X24, ATARI_PALETTE, 40, 24, 0, 7, 8, 8, 1}, + {ATARI_40X24, ATARI_PALETTE, 40, 24, 0, 7, 8, 8, 1, 7, 0}, /* Atari 800 XEP80 80x25 mode */ - {ATARI_80X25, GREYSCALE_PALETTE, 80, 25, 0, 15, 16, 8, 1}, + {ATARI_80X25, GREYSCALE_PALETTE, 80, 25, 0, 15, 16, 8, 1, 7, 0}, /* VESA 21x132 mode */ - {VESA_132X21, COLOUR_PALETTE, 132, 21, 14, 15, 16, 8, 1}, + {VESA_132X21, COLOUR_PALETTE, 132, 21, 14, 15, 16, 8, 1, 7, 0}, /* VESA 25x132 mode */ - {VESA_132X25, COLOUR_PALETTE, 132, 25, 14, 15, 16, 8, 1}, + {VESA_132X25, COLOUR_PALETTE, 132, 25, 14, 15, 16, 8, 1, 7, 0}, /* VESA 28x132 mode */ - {VESA_132X28, COLOUR_PALETTE, 132, 28, 12, 13, 14, 8, 1}, + {VESA_132X28, COLOUR_PALETTE, 132, 28, 12, 13, 14, 8, 1, 7, 0}, /* VESA 30x132 mode */ - {VESA_132X30, COLOUR_PALETTE, 132, 30, 14, 15, 16, 8, 1}, + {VESA_132X30, COLOUR_PALETTE, 132, 30, 14, 15, 16, 8, 1, 7, 0}, /* VESA 34x132 mode */ - {VESA_132X34, COLOUR_PALETTE, 132, 34, 12, 13, 14, 8, 1}, + {VESA_132X34, COLOUR_PALETTE, 132, 34, 12, 13, 14, 8, 1, 7, 0}, /* VESA 43x132 mode */ - {VESA_132X43, COLOUR_PALETTE, 132, 43, 7, 7, 8, 8, 1}, + {VESA_132X43, COLOUR_PALETTE, 132, 43, 7, 7, 8, 8, 1, 7, 0}, /* VESA 50x132 mode */ - {VESA_132X50, COLOUR_PALETTE, 132, 50, 7, 7, 8, 8, 1}, + {VESA_132X50, COLOUR_PALETTE, 132, 50, 7, 7, 8, 8, 1, 7, 0}, /* VESA 60x132 mode */ - {VESA_132X60, COLOUR_PALETTE, 132, 60, 7, 7, 8, 8, 1}, + {VESA_132X60, COLOUR_PALETTE, 132, 60, 7, 7, 8, 8, 1, 7, 0}, /* Awesome modes */ - {ST132X37_16_9, COLOUR_PALETTE, 132, 37, 14, 15, 16, 8, 1}, - {ST132X52_5_4, COLOUR_PALETTE, 132, 52, 14, 15, 16, 8, 1}, + {ST132X37_16_9, COLOUR_PALETTE, 132, 37, 14, 15, 16, 8, 1, 7, 0}, + {ST132X52_5_4, COLOUR_PALETTE, 132, 52, 14, 15, 16, 8, 1, 7, 0}, /* Custom mode */ - {CIOLIB_MODE_CUSTOM, COLOUR_PALETTE, 80, 25, 14, 15, 16, 8, 1}, + {CIOLIB_MODE_CUSTOM, COLOUR_PALETTE, 80, 25, 14, 15, 16, 8, 1, 7, 0}, }; uint32_t palettes[5][16] = { @@ -310,11 +310,11 @@ int load_vmode(struct video_stats *vs, int mode) vs->curs_visible=1; vs->curs_row=1; vs->curs_col=1; - vs->bright_background=0; - vs->no_bright=0; - vs->bright_altcharset=0; - vs->no_blink=0; - vs->blink_altcharset=0; + vs->bright_background=vparams[i].flags & CIOLIB_VIDEO_BGBRIGHT; + vs->no_bright=vparams[i].flags & CIOLIB_VIDEO_NOBRIGHT; + vs->bright_altcharset=vparams[i].flags & CIOLIB_VIDEO_ALTCHARS; + vs->no_blink=vparams[i].flags & CIOLIB_VIDEO_NOBLINK; + vs->blink_altcharset=vparams[i].flags & CIOLIB_VIDEO_BLINKALTCHARS; if(vs->curs_row < 0) vs->curs_row=0; if(vs->curs_row >= vparams[i].rows) @@ -328,5 +328,6 @@ int load_vmode(struct video_stats *vs, int mode) vs->charwidth=vparams[i].charwidth; vs->mode=mode; vs->vmultiplier=vparams[i].vmultiplier; + vs->currattr = vparams[i].default_attr; return(0); } diff --git a/src/conio/vidmodes.h b/src/conio/vidmodes.h index d7e4170ee54e51426d8c9315206c0ab80b0d3531..303786358e980bd0deb7b9ee61b3070e90505262 100644 --- a/src/conio/vidmodes.h +++ b/src/conio/vidmodes.h @@ -62,6 +62,8 @@ struct video_params { int charheight; int charwidth; int vmultiplier; + int default_attr; + int flags; }; struct vstat_vmem {