diff options
Diffstat (limited to 'src/mame/video/asuka.c')
-rw-r--r-- | src/mame/video/asuka.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/mame/video/asuka.c b/src/mame/video/asuka.c new file mode 100644 index 00000000000..dff8d0a7d70 --- /dev/null +++ b/src/mame/video/asuka.c @@ -0,0 +1,93 @@ +#include "driver.h" +#include "video/taitoic.h" + +#define TC0100SCN_GFX_NUM 1 + + +/**********************************************************/ + +static void asuka_core_video_start(running_machine *machine, int x_offs,int buffering) +{ + PC090OJ_vh_start(0,0,8,buffering); /* gfxset, x offset, y offset, buffering */ + TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,x_offs,0,0,0,0,0,0); + TC0110PCR_vh_start(); +} + +VIDEO_START( asuka ) +{ + asuka_core_video_start(machine, 0,0); +} + +VIDEO_START( galmedes ) +{ + asuka_core_video_start(machine, 1,0); +} + +VIDEO_START( cadash ) +{ + asuka_core_video_start(machine, 1,1); +} + +/************************************************************** + SPRITE READ AND WRITE HANDLERS +**************************************************************/ + +WRITE16_HANDLER( asuka_spritectrl_w ) +{ + /* Bits 2-5 are color bank; in asuka games bit 0 is global priority */ + PC090OJ_sprite_ctrl = ((data & 0x3c) >> 2) | ((data & 0x1) << 15); +} + + +/************************************************************** + SCREEN REFRESH +**************************************************************/ + +VIDEO_UPDATE( asuka ) +{ + UINT8 layer[3]; + + TC0100SCN_tilemap_update(machine); + + layer[0] = TC0100SCN_bottomlayer(0); + layer[1] = layer[0]^1; + layer[2] = 2; + + fillbitmap(priority_bitmap,0,cliprect); + + /* Ensure screen blanked even when bottom layer not drawn due to disable bit */ + fillbitmap(bitmap, machine->pens[0], cliprect); + + TC0100SCN_tilemap_draw(machine,bitmap,cliprect,0,layer[0],TILEMAP_DRAW_OPAQUE,1); + TC0100SCN_tilemap_draw(machine,bitmap,cliprect,0,layer[1],0,2); + TC0100SCN_tilemap_draw(machine,bitmap,cliprect,0,layer[2],0,4); + + /* Sprites may be over or under top bg layer */ + PC090OJ_draw_sprites(machine,bitmap,cliprect,2); + return 0; +} + + +VIDEO_UPDATE( bonzeadv ) +{ + UINT8 layer[3]; + + TC0100SCN_tilemap_update(machine); + + layer[0] = TC0100SCN_bottomlayer(0); + layer[1] = layer[0]^1; + layer[2] = 2; + + fillbitmap(priority_bitmap,0,cliprect); + + /* Ensure screen blanked even when bottom layer not drawn due to disable bit */ + fillbitmap(bitmap, machine->pens[0], cliprect); + + TC0100SCN_tilemap_draw(machine,bitmap,cliprect,0,layer[0],TILEMAP_DRAW_OPAQUE,1); + TC0100SCN_tilemap_draw(machine,bitmap,cliprect,0,layer[1],0,2); + TC0100SCN_tilemap_draw(machine,bitmap,cliprect,0,layer[2],0,4); + + /* Sprites are always over both bg layers */ + PC090OJ_draw_sprites(machine,bitmap,cliprect,0); + return 0; +} |