blob: d0881c308fa1b80d65eace8b47780b870dda7b58 (
plain) (
tree)
|
|
/***************************************************************************
video/mole.c
Functions to emulate the video hardware of Mole Attack!.
Mole Attack's Video hardware is essentially two banks of 512 characters.
The program uses a single byte to indicate which character goes in each location,
and uses a control location (0x8400) to select the character sets
***************************************************************************/
#include "driver.h"
static int tile_bank;
static UINT16 *tileram;
static tilemap *bg_tilemap;
PALETTE_INIT( mole )
{
int i;
for (i = 0; i < 8; i++) {
palette_set_color_rgb(machine, i, pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1));
}
}
static TILE_GET_INFO( get_bg_tile_info )
{
UINT16 code = tileram[tile_index];
SET_TILE_INFO((code & 0x200) ? 1 : 0, code & 0x1ff, 0, 0);
}
VIDEO_START( mole )
{
tileram = (UINT16 *)auto_malloc(0x400 * sizeof(UINT16));
bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_rows,
TILEMAP_TYPE_PEN, 8, 8, 40, 25);
}
WRITE8_HANDLER( mole_videoram_w )
{
tileram[offset] = data | (tile_bank << 8);
tilemap_mark_tile_dirty(bg_tilemap, offset);
}
WRITE8_HANDLER( mole_tilebank_w )
{
tile_bank = data;
tilemap_mark_all_tiles_dirty(bg_tilemap);
}
WRITE8_HANDLER( mole_flipscreen_w )
{
flip_screen_set(data & 0x01);
}
VIDEO_UPDATE( mole )
{
tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
return 0;
}
|