Removed palettised blitting code.
This commit is contained in:
parent
3d69f092c9
commit
3c514a445f
18 changed files with 572 additions and 1079 deletions
|
|
@ -287,26 +287,26 @@ static void tandysl_poll(void *p)
|
|||
// printf("Firstline %i\n",firstline);
|
||||
}
|
||||
tandy->lastline = tandy->displine;
|
||||
cols[0] = (tandy->array[2] & 0xf) + 16;
|
||||
cols[0] = cgapal[tandy->array[2] & 0xf];
|
||||
for (c = 0; c < 8; c++)
|
||||
{
|
||||
if (tandy->array[3] & 4)
|
||||
{
|
||||
buffer->line[tandy->displine][c] = cols[0];
|
||||
if (tandy->mode & 1) buffer->line[tandy->displine][c + (tandy->crtc[1] << 3) + 8] = cols[0];
|
||||
else buffer->line[tandy->displine][c + (tandy->crtc[1] << 4) + 8] = cols[0];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[c] = cols[0];
|
||||
if (tandy->mode & 1) ((uint32_t *)buffer32->line[tandy->displine])[c + (tandy->crtc[1] << 3) + 8] = cols[0];
|
||||
else ((uint32_t *)buffer32->line[tandy->displine])[c + (tandy->crtc[1] << 4) + 8] = cols[0];
|
||||
}
|
||||
else if ((tandy->mode & 0x12) == 0x12)
|
||||
{
|
||||
buffer->line[tandy->displine][c] = 0;
|
||||
if (tandy->mode & 1) buffer->line[tandy->displine][c + (tandy->crtc[1] << 3) + 8] = 0;
|
||||
else buffer->line[tandy->displine][c + (tandy->crtc[1] << 4) + 8] = 0;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[c] = cgapal[0];
|
||||
if (tandy->mode & 1) ((uint32_t *)buffer32->line[tandy->displine])[c + (tandy->crtc[1] << 3) + 8] = cgapal[0];
|
||||
else ((uint32_t *)buffer32->line[tandy->displine])[c + (tandy->crtc[1] << 4) + 8] = cgapal[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer->line[tandy->displine][c] = (tandy->col & 15) + 16;
|
||||
if (tandy->mode & 1) buffer->line[tandy->displine][c + (tandy->crtc[1] << 3) + 8] = (tandy->col & 15) + 16;
|
||||
else buffer->line[tandy->displine][c + (tandy->crtc[1] << 4) + 8] = (tandy->col & 15) + 16;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[c] = cgapal[tandy->col & 15];
|
||||
if (tandy->mode & 1) ((uint32_t *)buffer32->line[tandy->displine])[c + (tandy->crtc[1] << 3) + 8] = cgapal[tandy->col & 15];
|
||||
else ((uint32_t *)buffer32->line[tandy->displine])[c + (tandy->crtc[1] << 4) + 8] = cgapal[tandy->col & 15];
|
||||
}
|
||||
}
|
||||
if (tandy->array[5] & 1) /*640x200x16*/
|
||||
|
|
@ -316,10 +316,10 @@ static void tandysl_poll(void *p)
|
|||
dat = (tandy->vram[(tandy->ma << 1) & 0xffff] << 8) |
|
||||
tandy->vram[((tandy->ma << 1) + 1) & 0xffff];
|
||||
tandy->ma++;
|
||||
buffer->line[tandy->displine][(x << 2) + 8] = tandy->array[((dat >> 12) & 0xf)/*tandy->array[1])*/ + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 2) + 9] = tandy->array[((dat >> 8) & 0xf)/*tandy->array[1])*/ + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 2) + 10] = tandy->array[((dat >> 4) & 0xf)/*tandy->array[1])*/ + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 2) + 11] = tandy->array[(dat & 0xf)/*tandy->array[1])*/ + 16] + 16;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 2) + 8] = cgapal[tandy->array[((dat >> 12) & 0xf)/*tandy->array[1])*/ + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 2) + 9] = cgapal[tandy->array[((dat >> 8) & 0xf)/*tandy->array[1])*/ + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 2) + 10] = cgapal[tandy->array[((dat >> 4) & 0xf)/*tandy->array[1])*/ + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 2) + 11] = cgapal[tandy->array[(dat & 0xf)/*tandy->array[1])*/ + 16]];
|
||||
}
|
||||
}
|
||||
else if ((tandy->array[3] & 0x10) && (tandy->mode & 1)) /*320x200x16*/
|
||||
|
|
@ -329,14 +329,14 @@ static void tandysl_poll(void *p)
|
|||
dat = (tandy->vram[((tandy->ma << 1) & 0x1fff) + ((tandy->sc & 3) * 0x2000)] << 8) |
|
||||
tandy->vram[((tandy->ma << 1) & 0x1fff) + ((tandy->sc & 3) * 0x2000) + 1];
|
||||
tandy->ma++;
|
||||
buffer->line[tandy->displine][(x << 3) + 8] =
|
||||
buffer->line[tandy->displine][(x << 3) + 9] = tandy->array[((dat >> 12) & tandy->array[1]) + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 3) + 10] =
|
||||
buffer->line[tandy->displine][(x << 3) + 11] = tandy->array[((dat >> 8) & tandy->array[1]) + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 3) + 12] =
|
||||
buffer->line[tandy->displine][(x << 3) + 13] = tandy->array[((dat >> 4) & tandy->array[1]) + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 3) + 14] =
|
||||
buffer->line[tandy->displine][(x << 3) + 15] = tandy->array[(dat & tandy->array[1]) + 16] + 16;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 8] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 9] = cgapal[tandy->array[((dat >> 12) & tandy->array[1]) + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 10] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 11] = cgapal[tandy->array[((dat >> 8) & tandy->array[1]) + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 12] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 13] = cgapal[tandy->array[((dat >> 4) & tandy->array[1]) + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 14] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 15] = cgapal[tandy->array[(dat & tandy->array[1]) + 16]];
|
||||
}
|
||||
}
|
||||
else if (tandy->array[3] & 0x10) /*160x200x16*/
|
||||
|
|
@ -346,22 +346,22 @@ static void tandysl_poll(void *p)
|
|||
dat = (tandy->vram[((tandy->ma << 1) & 0x1fff) + ((tandy->sc & 1) * 0x2000)] << 8) |
|
||||
tandy->vram[((tandy->ma << 1) & 0x1fff) + ((tandy->sc & 1) * 0x2000) + 1];
|
||||
tandy->ma++;
|
||||
buffer->line[tandy->displine][(x << 4) + 8] =
|
||||
buffer->line[tandy->displine][(x << 4) + 9] =
|
||||
buffer->line[tandy->displine][(x << 4) + 10] =
|
||||
buffer->line[tandy->displine][(x << 4) + 11] = tandy->array[((dat >> 12) & tandy->array[1]) + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 4) + 12] =
|
||||
buffer->line[tandy->displine][(x << 4) + 13] =
|
||||
buffer->line[tandy->displine][(x << 4) + 14] =
|
||||
buffer->line[tandy->displine][(x << 4) + 15] = tandy->array[((dat >> 8) & tandy->array[1]) + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 4) + 16] =
|
||||
buffer->line[tandy->displine][(x << 4) + 17] =
|
||||
buffer->line[tandy->displine][(x << 4) + 18] =
|
||||
buffer->line[tandy->displine][(x << 4) + 19] = tandy->array[((dat >> 4) & tandy->array[1]) + 16] + 16;
|
||||
buffer->line[tandy->displine][(x << 4) + 20] =
|
||||
buffer->line[tandy->displine][(x << 4) + 21] =
|
||||
buffer->line[tandy->displine][(x << 4) + 22] =
|
||||
buffer->line[tandy->displine][(x << 4) + 23] = tandy->array[(dat & tandy->array[1]) + 16] + 16;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 8] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 9] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 10] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 11] = cgapal[tandy->array[((dat >> 12) & tandy->array[1]) + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 12] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 13] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 14] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 15] = cgapal[tandy->array[((dat >> 8) & tandy->array[1]) + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 16] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 17] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 18] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 19] = cgapal[tandy->array[((dat >> 4) & tandy->array[1]) + 16]];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 20] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 21] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 22] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + 23] = cgapal[tandy->array[(dat & tandy->array[1]) + 16]];
|
||||
}
|
||||
}
|
||||
else if (tandy->array[3] & 0x08) /*640x200x4 - this implementation is a complete guess!*/
|
||||
|
|
@ -375,7 +375,7 @@ static void tandysl_poll(void *p)
|
|||
{
|
||||
chr = (dat >> 7) & 1;
|
||||
chr |= ((dat >> 14) & 2);
|
||||
buffer->line[tandy->displine][(x << 3) + 8 + c] = tandy->array[(chr & tandy->array[1]) + 16] + 16;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + 8 + c] = cgapal[tandy->array[(chr & tandy->array[1]) + 16]];
|
||||
dat <<= 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -389,31 +389,31 @@ static void tandysl_poll(void *p)
|
|||
drawcursor = ((tandy->ma == ca) && tandy->con && tandy->cursoron);
|
||||
if (tandy->mode & 0x20)
|
||||
{
|
||||
cols[1] = tandy->array[ ((attr & 15) & tandy->array[1]) + 16] + 16;
|
||||
cols[0] = tandy->array[(((attr >> 4) & 7) & tandy->array[1]) + 16] + 16;
|
||||
cols[1] = cgapal[tandy->array[ ((attr & 15) & tandy->array[1]) + 16]];
|
||||
cols[0] = cgapal[tandy->array[(((attr >> 4) & 7) & tandy->array[1]) + 16]];
|
||||
if ((tandy->blink & 16) && (attr & 0x80) && !drawcursor)
|
||||
cols[1] = cols[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
cols[1] = tandy->array[((attr & 15) & tandy->array[1]) + 16] + 16;
|
||||
cols[0] = tandy->array[((attr >> 4) & tandy->array[1]) + 16] + 16;
|
||||
cols[1] = cgapal[tandy->array[((attr & 15) & tandy->array[1]) + 16]];
|
||||
cols[0] = cgapal[tandy->array[((attr >> 4) & tandy->array[1]) + 16]];
|
||||
}
|
||||
if (tandy->sc & 8)
|
||||
{
|
||||
for (c = 0; c < 8; c++)
|
||||
buffer->line[tandy->displine][(x << 3) + c + 8] = cols[0];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + c + 8] = cols[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
for (c = 0; c < 8; c++)
|
||||
buffer->line[tandy->displine][(x << 3) + c + 8] = cols[(fontdat[chr][tandy->sc & 7] & (1 << (c ^ 7))) ? 1 : 0];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + c + 8] = cols[(fontdat[chr][tandy->sc & 7] & (1 << (c ^ 7))) ? 1 : 0];
|
||||
}
|
||||
// if (!((ma^(crtc[15]|(crtc[14]<<8)))&0x3FFF)) printf("Cursor match! %04X\n",ma);
|
||||
if (drawcursor)
|
||||
{
|
||||
for (c = 0; c < 8; c++)
|
||||
buffer->line[tandy->displine][(x << 3) + c + 8] ^= 15;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 3) + c + 8] ^= 0xffffff;
|
||||
}
|
||||
tandy->ma++;
|
||||
}
|
||||
|
|
@ -427,57 +427,57 @@ static void tandysl_poll(void *p)
|
|||
drawcursor = ((tandy->ma == ca) && tandy->con && tandy->cursoron);
|
||||
if (tandy->mode & 0x20)
|
||||
{
|
||||
cols[1] = tandy->array[ ((attr & 15) & tandy->array[1]) + 16] + 16;
|
||||
cols[0] = tandy->array[(((attr >> 4) & 7) & tandy->array[1]) + 16] + 16;
|
||||
cols[1] = cgapal[tandy->array[ ((attr & 15) & tandy->array[1]) + 16]];
|
||||
cols[0] = cgapal[tandy->array[(((attr >> 4) & 7) & tandy->array[1]) + 16]];
|
||||
if ((tandy->blink & 16) && (attr & 0x80) && !drawcursor)
|
||||
cols[1] = cols[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
cols[1] = tandy->array[((attr & 15) & tandy->array[1]) + 16] + 16;
|
||||
cols[0] = tandy->array[((attr >> 4) & tandy->array[1]) + 16] + 16;
|
||||
cols[1] = cgapal[tandy->array[((attr & 15) & tandy->array[1]) + 16]];
|
||||
cols[0] = cgapal[tandy->array[((attr >> 4) & tandy->array[1]) + 16]];
|
||||
}
|
||||
tandy->ma++;
|
||||
if (tandy->sc & 8)
|
||||
{
|
||||
for (c = 0; c < 8; c++)
|
||||
buffer->line[tandy->displine][(x << 4) + (c << 1) + 8] =
|
||||
buffer->line[tandy->displine][(x << 4) + (c << 1) + 1 + 8] = cols[0];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + (c << 1) + 8] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + (c << 1) + 1 + 8] = cols[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
for (c = 0; c < 8; c++)
|
||||
buffer->line[tandy->displine][(x << 4) + (c << 1) + 8] =
|
||||
buffer->line[tandy->displine][(x << 4) + (c << 1) + 1 + 8] = cols[(fontdat[chr][tandy->sc & 7] & (1 << (c ^ 7))) ? 1 : 0];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + (c << 1) + 8] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + (c << 1) + 1 + 8] = cols[(fontdat[chr][tandy->sc & 7] & (1 << (c ^ 7))) ? 1 : 0];
|
||||
}
|
||||
if (drawcursor)
|
||||
{
|
||||
for (c = 0; c < 16; c++)
|
||||
buffer->line[tandy->displine][(x << 4) + c + 8] ^= 15;
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + c + 8] ^= 0xffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!(tandy->mode& 16))
|
||||
else if (!(tandy->mode & 16))
|
||||
{
|
||||
cols[0] = (tandy->col & 15) | 16;
|
||||
col = (tandy->col & 16) ? 24 : 16;
|
||||
cols[0] = cgapal[tandy->col & 15];
|
||||
col = (tandy->col & 16) ? 8 : 0;
|
||||
if (tandy->mode & 4)
|
||||
{
|
||||
cols[1] = col | 3;
|
||||
cols[2] = col | 4;
|
||||
cols[3] = col | 7;
|
||||
cols[1] = cgapal[col | 3];
|
||||
cols[2] = cgapal[col | 4];
|
||||
cols[3] = cgapal[col | 7];
|
||||
}
|
||||
else if (tandy->col & 32)
|
||||
{
|
||||
cols[1] = col | 3;
|
||||
cols[2] = col | 5;
|
||||
cols[3] = col | 7;
|
||||
cols[1] = cgapal[col | 3];
|
||||
cols[2] = cgapal[col | 5];
|
||||
cols[3] = cgapal[col | 7];
|
||||
}
|
||||
else
|
||||
{
|
||||
cols[1] = col | 2;
|
||||
cols[2] = col | 4;
|
||||
cols[3] = col | 6;
|
||||
cols[1] = cgapal[col | 2];
|
||||
cols[2] = cgapal[col | 4];
|
||||
cols[3] = cgapal[col | 6];
|
||||
}
|
||||
for (x = 0; x < tandy->crtc[1]; x++)
|
||||
{
|
||||
|
|
@ -486,16 +486,16 @@ static void tandysl_poll(void *p)
|
|||
tandy->ma++;
|
||||
for (c = 0; c < 8; c++)
|
||||
{
|
||||
buffer->line[tandy->displine][(x << 4) + (c << 1) + 8] =
|
||||
buffer->line[tandy->displine][(x << 4) + (c << 1) + 1 + 8] = cols[dat >> 14];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + (c << 1) + 8] =
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + (c << 1) + 1 + 8] = cols[dat >> 14];
|
||||
dat <<= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cols[0] = 0;
|
||||
cols[1] = tandy->array[(tandy->col & tandy->array[1]) + 16] + 16;
|
||||
cols[0] = cgapal[0];
|
||||
cols[1] = cgapal[tandy->array[(tandy->col & tandy->array[1]) + 16]];
|
||||
for (x = 0; x < tandy->crtc[1]; x++)
|
||||
{
|
||||
dat = (tandy->vram[((tandy->ma << 1) & 0x1fff) + ((tandy->sc & 1) * 0x2000)] << 8) |
|
||||
|
|
@ -503,7 +503,7 @@ static void tandysl_poll(void *p)
|
|||
tandy->ma++;
|
||||
for (c = 0; c < 16; c++)
|
||||
{
|
||||
buffer->line[tandy->displine][(x << 4) + c + 8] = cols[dat >> 15];
|
||||
((uint32_t *)buffer32->line[tandy->displine])[(x << 4) + c + 8] = cols[dat >> 15];
|
||||
dat <<= 1;
|
||||
}
|
||||
}
|
||||
|
|
@ -513,14 +513,14 @@ static void tandysl_poll(void *p)
|
|||
{
|
||||
if (tandy->array[3] & 4)
|
||||
{
|
||||
if (tandy->mode & 1) hline(buffer, 0, tandy->displine, (tandy->crtc[1] << 3) + 16, (tandy->array[2] & 0xf) + 16);
|
||||
else hline(buffer, 0, tandy->displine, (tandy->crtc[1] << 4) + 16, (tandy->array[2] & 0xf) + 16);
|
||||
if (tandy->mode & 1) hline(buffer32, 0, tandy->displine, (tandy->crtc[1] << 3) + 16, cgapal[tandy->array[2] & 0xf]);
|
||||
else hline(buffer32, 0, tandy->displine, (tandy->crtc[1] << 4) + 16, cgapal[tandy->array[2] & 0xf]);
|
||||
}
|
||||
else
|
||||
{
|
||||
cols[0] = ((tandy->mode & 0x12) == 0x12) ? 0 : (tandy->col & 0xf) + 16;
|
||||
if (tandy->mode & 1) hline(buffer, 0, tandy->displine, (tandy->crtc[1] << 3) + 16, cols[0]);
|
||||
else hline(buffer, 0, tandy->displine, (tandy->crtc[1] << 4) + 16, cols[0]);
|
||||
cols[0] = cgapal[((tandy->mode & 0x12) == 0x12) ? 0 : (tandy->col & 0xf)];
|
||||
if (tandy->mode & 1) hline(buffer32, 0, tandy->displine, (tandy->crtc[1] << 3) + 16, cols[0]);
|
||||
else hline(buffer32, 0, tandy->displine, (tandy->crtc[1] << 4) + 16, cols[0]);
|
||||
}
|
||||
}
|
||||
if (tandy->mode & 1) x = (tandy->crtc[1] << 3) + 16;
|
||||
|
|
@ -631,7 +631,7 @@ static void tandysl_poll(void *p)
|
|||
// printf("Blit %i %i\n",firstline,lastline);
|
||||
//printf("Xsize is %i\n",xsize);
|
||||
|
||||
video_blit_memtoscreen_8(0, tandy->firstline-4, xsize, (tandy->lastline - tandy->firstline) + 8);
|
||||
video_blit_memtoscreen(0, tandy->firstline-4, 0, (tandy->lastline - tandy->firstline) + 8, xsize, (tandy->lastline - tandy->firstline) + 8);
|
||||
|
||||
frames++;
|
||||
video_res_x = xsize - 16;
|
||||
|
|
|
|||
Loading…
Reference in a new issue