summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/gdrawpkr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/gdrawpkr.c')
-rw-r--r--src/mame/video/gdrawpkr.c90
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));
+ }
+}