diff options
Diffstat (limited to 'src/mame/video/gdrawpkr.c')
-rw-r--r-- | src/mame/video/gdrawpkr.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/mame/video/gdrawpkr.c b/src/mame/video/gdrawpkr.c new file mode 100644 index 00000000000..525dd59b655 --- /dev/null +++ b/src/mame/video/gdrawpkr.c @@ -0,0 +1,90 @@ +/********************************************************************************** + + GAMING DRAW POKER (CEI) + Driver by Roberto Fresca. + + Video Hardware + +***********************************************************************************/ + +#include "driver.h" +static tilemap *bg_tilemap; + +WRITE8_HANDLER( gdrawpkr_videoram_w ) +{ + videoram[offset] = data; + tilemap_mark_tile_dirty(bg_tilemap, offset); +} + +WRITE8_HANDLER( gdrawpkr_colorram_w ) +{ + colorram[offset] = data; + tilemap_mark_tile_dirty(bg_tilemap, offset); +} + +static TILE_GET_INFO( get_bg_tile_info ) +{ +/* - bits - + 7654 3210 + --xx xx-- tiles color. + ---- --x- tiles bank. + xx-- ---x seems unused. */ + + int attr = colorram[tile_index]; + int code = videoram[tile_index]; + int bank = (attr & 0x02) >> 1; /* bit 1 switch the gfx banks */ + int color = (attr & 0x3c); /* bits 2-3-4-5 for color */ + + if (attr == 0x3a) /* Is the palette wrong? */ + color = 0x3b; /* 0x3b is the best match */ + + SET_TILE_INFO(bank, code, color, 0); +} + +VIDEO_START( gdrawpkr ) +{ + bg_tilemap = tilemap_create(get_bg_tile_info, tilemap_scan_rows, + TILEMAP_TYPE_PEN, 8, 8, 32, 31); +} + +VIDEO_UPDATE( gdrawpkr ) +{ + tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0); + return 0; +} + +PALETTE_INIT( gdrawpkr ) +{ +/* prom bits + 7654 3210 + ---- ---x red component. + ---- --x- green component. + ---- -x-- blue component. + ---- x--- unknown, aparently unused. + xxxx ---- unused. +*/ + int i; + + /* 00000BGR */ + if (color_prom == 0) return; + + for (i = 0;i < machine->drv->total_colors;i++) + { + int bit0, bit1, bit2, r, g, b; + + /* red component */ + bit0 = (color_prom[i] >> 0) & 0x01; + r = bit0 * 0xff; + + /* green component */ + bit1 = (color_prom[i] >> 1) & 0x01; + g = bit1 * 0xff; + + /* blue component */ + bit2 = (color_prom[i] >> 2) & 0x01; + b = bit2 * 0xff; + + + palette_set_color(machine, i, MAKE_RGB(r, g, b)); + } +} |