diff options
Diffstat (limited to 'src/mame/video/usgames.c')
-rw-r--r-- | src/mame/video/usgames.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/mame/video/usgames.c b/src/mame/video/usgames.c new file mode 100644 index 00000000000..5cb13ffa71c --- /dev/null +++ b/src/mame/video/usgames.c @@ -0,0 +1,74 @@ +#include "driver.h" + +UINT8 *usg_videoram,*usg_charram; + + +static tilemap *usg_tilemap; + + + +PALETTE_INIT(usg) +{ + int j; + + for (j = 0;j < 16;j++) + { + int r = (j & 1) >> 0; + int g = (j & 2) >> 1; + int b = (j & 4) >> 2; + int i = (j & 8) >> 3; + + r = 0xff * r; + g = 0x7f * g * (i + 1); + b = 0x7f * b * (i + 1); + + palette_set_color(machine,j,MAKE_RGB(r,g,b)); + } + + for (j = 0;j < 256;j++) + { + colortable[2*j] = j & 0x0f; + colortable[2*j+1] = j >> 4; + } +} + + + +static TILE_GET_INFO( get_usg_tile_info ) +{ + int tileno, colour; + + tileno = usg_videoram[tile_index*2]; + colour = usg_videoram[tile_index*2+1]; + + SET_TILE_INFO(0,tileno,colour,0); +} + +VIDEO_START(usg) +{ + usg_tilemap = tilemap_create(get_usg_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN, 8, 8,64,32); +} + + +WRITE8_HANDLER( usg_videoram_w ) +{ + usg_videoram[offset] = data; + tilemap_mark_tile_dirty(usg_tilemap,offset/2); +} + +WRITE8_HANDLER( usg_charram_w ) +{ + usg_charram[offset] = data; + + decodechar(Machine->gfx[0], offset/8, usg_charram, Machine->drv->gfxdecodeinfo[0].gfxlayout); + + tilemap_mark_all_tiles_dirty(usg_tilemap); +} + + + +VIDEO_UPDATE(usg) +{ + tilemap_draw(bitmap,cliprect,usg_tilemap,0,0); + return 0; +} |