/***************************************************************************
Atari Destroyer video emulation
***************************************************************************/
#include "driver.h"
int destroyr_wavemod;
int destroyr_cursor;
UINT8* destroyr_major_obj_ram;
UINT8* destroyr_minor_obj_ram;
UINT8* destroyr_alpha_num_ram;
VIDEO_UPDATE( destroyr )
{
int i;
int j;
fillbitmap(bitmap, machine->pens[0], cliprect);
/* draw major objects */
for (i = 0; i < 16; i++)
{
int attr = destroyr_major_obj_ram[2 * i + 0] ^ 0xff;
int horz = destroyr_major_obj_ram[2 * i + 1];
int num = attr & 3;
int scan = attr & 4;
int flipx = attr & 8;
if (scan == 0)
{
if (horz >= 192)
horz -= 256;
}
else
{
if (horz < 192)
continue;
}
drawgfx(bitmap, machine->gfx[2], num, 0, flipx, 0,
horz, 16 * i, cliprect, TRANSPARENCY_PEN, 0);
}
/* draw alpha numerics */
for (i = 0; i < 8; i++)
{
for (j = 0; j < 32; j++)
{
int num = destroyr_alpha_num_ram[32 * i + j];
drawgfx(bitmap, machine->gfx[0], num, 0, 0, 0,
8 * j, 8 * i, cliprect, TRANSPARENCY_PEN, 0);
}
}
/* draw minor objects */
for (i = 0; i < 2; i++)
{
int horz = 256 - destroyr_minor_obj_ram[i + 2];
int vert = 256 - destroyr_minor_obj_ram[i + 4];
drawgfx(bitmap, machine->gfx[1], destroyr_minor_obj_ram[i + 0], 0, 0, 0,
horz, vert, cliprect, TRANSPARENCY_PEN, 0);
}
/* draw waves */
for (i = 0; i < 4; i++)
{
drawgfx(bitmap, machine->gfx[3], destroyr_wavemod ? 1 : 0, 0, 0, 0,
64 * i, 0x4e, cliprect, TRANSPARENCY_PEN, 0);
}
/* draw cursor */
for (i = 0; i < 256; i++)
{
if (i & 4)
*BITMAP_ADDR16(bitmap, destroyr_cursor ^ 0xff, i) = machine->pens[7];
}
return 0;
}