Fixed another bug in the Sigma Color 400 - now it no longer ignores sigma->palette.

This commit is contained in:
OBattler
2018-10-23 01:33:48 +02:00
parent eaac9e66fc
commit 14095aab59

View File

@@ -8,7 +8,7 @@
* *
* Sigma Color 400 emulation. * Sigma Color 400 emulation.
* *
* Version: @(#)vid_sigma.c 1.0.1 2018/10/23 * Version: @(#)vid_sigma.c 1.0.2 2018/10/23
* *
* Authors: John Elliott, * Authors: John Elliott,
* *
@@ -429,9 +429,9 @@ static void sigma_text80(sigma_t *sigma)
if (drawcursor && !(x & 1)) { if (drawcursor && !(x & 1)) {
for (c = 0; c < 8; c++) { for (c = 0; c < 8; c++) {
if (sigma->sigmamode & MODE_FONT16) if (sigma->sigmamode & MODE_FONT16)
buffer->line[sigma->displine][(x << 3) + c + 8] = cols[(fontdatm[chr][sigma->sc & 15] & (1 << (c ^ 7))) ? 1 : 0] ^ 0xff; buffer->line[sigma->displine][(x << 3) + c + 8] = cols[(fontdatm[chr][sigma->sc & 15] & (1 << (c ^ 7))) ? 1 : 0] ^ 0x0f;
else else
buffer->line[sigma->displine][(x << 3) + c + 8] = cols[(fontdat[chr][sigma->sc & 7] & (1 << (c ^ 7))) ? 1 : 0] ^ 0xffffff; buffer->line[sigma->displine][(x << 3) + c + 8] = cols[(fontdat[chr][sigma->sc & 7] & (1 << (c ^ 7))) ? 1 : 0] ^ 0x0f;
} }
} else { } else {
for (c = 0; c < 8; c++) { for (c = 0; c < 8; c++) {
@@ -485,7 +485,7 @@ sigma_text40(sigma_t *sigma)
if (drawcursor) { if (drawcursor) {
for (c = 0; c < 8; c++) { for (c = 0; c < 8; c++) {
buffer->line[sigma->displine][(x << 4) + 2*c + 8] = buffer->line[sigma->displine][(x << 4) + 2*c + 8] =
buffer->line[sigma->displine][(x << 4) + 2*c + 9] = cols[(fontdatm[chr][sigma->sc & 15] & (1 << (c ^ 7))) ? 1 : 0] ^ 0xffffff; buffer->line[sigma->displine][(x << 4) + 2*c + 9] = cols[(fontdatm[chr][sigma->sc & 15] & (1 << (c ^ 7))) ? 1 : 0] ^ 0x0f;
} }
} else { } else {
for (c = 0; c < 8; c++) { for (c = 0; c < 8; c++) {
@@ -524,11 +524,11 @@ sigma_gfx400(sigma_t *sigma)
col |= 16; col |= 16;
buffer->line[sigma->displine][(x << 3) + c + 8] = col; buffer->line[sigma->displine][(x << 3) + c + 8] = col;
} }
if (x & 1) ++sigma->ma; if (x & 1)
++sigma->ma;
} }
} }
/* Draw a line in the 640x200 graphics mode. /* Draw a line in the 640x200 graphics mode.
* This is actually a 640x200x16 mode; on startup, the BIOS selects plane 2, * This is actually a 640x200x16 mode; on startup, the BIOS selects plane 2,
* blanks the other planes, and sets palette ink 4 to white. Pixels plotted * blanks the other planes, and sets palette ink 4 to white. Pixels plotted
@@ -584,7 +584,6 @@ sigma_gfx4col(sigma_t *sigma)
for (c = 0; c < 4; c++) { for (c = 0; c < 4; c++) {
col = ((plane[3] & mask) ? 2 : 0) | col = ((plane[3] & mask) ? 2 : 0) |
((plane[2] & mask) ? 1 : 0); ((plane[2] & mask) ? 1 : 0);
col |= 16;
mask = mask >> 1; mask = mask >> 1;
col |= ((plane[3] & mask) ? 8 : 0) | col |= ((plane[3] & mask) ? 8 : 0) |
((plane[2] & mask) ? 4 : 0); ((plane[2] & mask) ? 4 : 0);
@@ -659,6 +658,9 @@ sigma_poll(void *p)
else else
x = (sigma->crtc[1] << 5) + 16; x = (sigma->crtc[1] << 5) + 16;
for (c = 0; c < x; c++)
buffer->line[sigma->displine][c] = sigma->palette[buffer->line[sigma->displine][c] & 0xf] | 16;
sigma->sc = oldsc; sigma->sc = oldsc;
if (sigma->vc == sigma->crtc[7] && !sigma->sc) if (sigma->vc == sigma->crtc[7] && !sigma->sc)
sigma->sigmastat |= STATUS_RETR_V; sigma->sigmastat |= STATUS_RETR_V;
@@ -805,7 +807,7 @@ static void
sigma_read, NULL, NULL, sigma_read, NULL, NULL,
sigma_write, NULL, NULL, sigma_write, NULL, NULL,
NULL, MEM_MAPPING_EXTERNAL, sigma); NULL, MEM_MAPPING_EXTERNAL, sigma);
mem_mapping_add(&sigma->bios_ram, 0xC0000, 0x4000, mem_mapping_add(&sigma->bios_ram, 0xC1800, 0x0800,
sigma_bread, NULL, NULL, sigma_bread, NULL, NULL,
sigma_bwrite, NULL, NULL, sigma_bwrite, NULL, NULL,
sigma->bios_rom.rom, MEM_MAPPING_EXTERNAL, sigma); sigma->bios_rom.rom, MEM_MAPPING_EXTERNAL, sigma);