/*************************************************************************** video.c Functions to emulate the video hardware of the machine. ***************************************************************************/ #include "driver.h" UINT8 *mosaic_fgvideoram; UINT8 *mosaic_bgvideoram; static tilemap *bg_tilemap,*fg_tilemap; /*************************************************************************** Callbacks for the TileMap code ***************************************************************************/ static TILE_GET_INFO( get_fg_tile_info ) { tile_index *= 2; SET_TILE_INFO( 0, mosaic_fgvideoram[tile_index] + (mosaic_fgvideoram[tile_index+1] << 8), 0, 0); } static TILE_GET_INFO( get_bg_tile_info ) { tile_index *= 2; SET_TILE_INFO( 1, mosaic_bgvideoram[tile_index] + (mosaic_bgvideoram[tile_index+1] << 8), 0, 0); } /*************************************************************************** Start the video hardware emulation. ***************************************************************************/ VIDEO_START( mosaic ) { fg_tilemap = tilemap_create(get_fg_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN,8,8,64,32); bg_tilemap = tilemap_create(get_bg_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN, 8,8,64,32); tilemap_set_transparent_pen(fg_tilemap,0xff); } /*************************************************************************** Memory handlers ***************************************************************************/ WRITE8_HANDLER( mosaic_fgvideoram_w ) { mosaic_fgvideoram[offset] = data; tilemap_mark_tile_dirty(fg_tilemap,offset/2); } WRITE8_HANDLER( mosaic_bgvideoram_w ) { mosaic_bgvideoram[offset] = data; tilemap_mark_tile_dirty(bg_tilemap,offset/2); } VIDEO_UPDATE( mosaic ) { tilemap_draw(bitmap,cliprect,bg_tilemap,0,0); tilemap_draw(bitmap,cliprect,fg_tilemap,0,0); return 0; }