summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/pass.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/pass.c')
-rw-r--r--src/mame/video/pass.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/mame/video/pass.c b/src/mame/video/pass.c
new file mode 100644
index 00000000000..96ee38c8057
--- /dev/null
+++ b/src/mame/video/pass.c
@@ -0,0 +1,66 @@
+/* video/pass.c - see drivers/pass.c for more info */
+
+#include "driver.h"
+
+static tilemap *pass_bg_tilemap;
+static tilemap *pass_fg_tilemap;
+
+/* in drivers/pass.c */
+extern UINT16 *pass_bg_videoram;
+extern UINT16 *pass_fg_videoram;
+/* end in drivers/pass.c */
+
+/* background tilemap stuff */
+
+static TILE_GET_INFO( get_pass_bg_tile_info )
+{
+ int tileno,fx;
+
+ tileno = pass_bg_videoram[tile_index] & 0x1fff;
+ fx = (pass_bg_videoram[tile_index] & 0xc000) >> 14;
+ SET_TILE_INFO(1,tileno,0,TILE_FLIPYX(fx));
+
+}
+
+WRITE16_HANDLER( pass_bg_videoram_w )
+{
+ pass_bg_videoram[offset] = data;
+ tilemap_mark_tile_dirty(pass_bg_tilemap,offset);
+}
+
+/* foreground 'sprites' tilemap stuff */
+
+static TILE_GET_INFO( get_pass_fg_tile_info )
+{
+ int tileno, flip;
+
+ tileno = pass_fg_videoram[tile_index] & 0x3fff;
+ flip = (pass_fg_videoram[tile_index] & 0xc000) >>14;
+
+ SET_TILE_INFO(0,tileno,0,TILE_FLIPYX(flip));
+
+}
+
+WRITE16_HANDLER( pass_fg_videoram_w )
+{
+ pass_fg_videoram[offset] = data;
+ tilemap_mark_tile_dirty(pass_fg_tilemap,offset);
+}
+
+/* video update / start */
+
+VIDEO_UPDATE( pass )
+{
+ tilemap_draw(bitmap,cliprect,pass_bg_tilemap,0,0);
+ tilemap_draw(bitmap,cliprect,pass_fg_tilemap,0,0);
+
+ return 0;
+}
+
+VIDEO_START( pass )
+{
+ pass_bg_tilemap = tilemap_create(get_pass_bg_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN, 8, 8,64,32);
+ pass_fg_tilemap = tilemap_create(get_pass_fg_tile_info,tilemap_scan_rows,TILEMAP_TYPE_PEN, 4, 4,128,64);
+
+ tilemap_set_transparent_pen(pass_fg_tilemap,255);
+}