From f526625d7752c3b24e79aa416267f14cf8f32250 Mon Sep 17 00:00:00 2001 From: davidhay Date: Fri, 2 May 2008 21:04:43 +0000 Subject: [PATCH] added layer enable to denjinmk --- src/mame/machine/seicop.c | 8 +++++++- src/mame/video/legionna.c | 43 +++++++++++++++++++++++++++++++-------- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/mame/machine/seicop.c b/src/mame/machine/seicop.c index 1aaa382d032..066d23e174d 100644 --- a/src/mame/machine/seicop.c +++ b/src/mame/machine/seicop.c @@ -49,7 +49,7 @@ #include "driver.h" #include "audio/seibu.h" -#define seibu_cop_log printf +#define seibu_cop_log logerror UINT16 *cop_mcu_ram; @@ -1645,7 +1645,10 @@ WRITE16_HANDLER( denjinmk_mcu_w ) generic_cop_w(machine, offset, data, mem_mask); break; + //case (0x05a/2): { /* brightness?? */ break; } case (0x070/2): { denjinmk_setgfxbank(cop_mcu_ram[offset]); break; } + + case (0x21c/2): { legionna_layer_disable = cop_mcu_ram[offset]; break; } case (0x220/2): { legionna_scrollram16[0] = cop_mcu_ram[offset]; break; } case (0x222/2): { legionna_scrollram16[1] = cop_mcu_ram[offset]; break; } @@ -1654,6 +1657,9 @@ WRITE16_HANDLER( denjinmk_mcu_w ) case (0x228/2): { legionna_scrollram16[4] = cop_mcu_ram[offset]; break; } case (0x22a/2): { legionna_scrollram16[5] = cop_mcu_ram[offset]; break; } + + //case (0x280/2): { /* trigger.. something */ break; } + case (0x300/2): { seibu_main_word_w(machine,0,cop_mcu_ram[offset],0x00ff); break; } case (0x304/2): { seibu_main_word_w(machine,1,cop_mcu_ram[offset],0x00ff); break; } case (0x310/2): { seibu_main_word_w(machine,4,cop_mcu_ram[offset],0x00ff); break; } diff --git a/src/mame/video/legionna.c b/src/mame/video/legionna.c index bd786bee1ac..ee23cb19347 100644 --- a/src/mame/video/legionna.c +++ b/src/mame/video/legionna.c @@ -255,12 +255,21 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectan y = spriteram16[offs+3]; x = spriteram16[offs+2]; + /* heated barrel hardware seems to need 0x1ff with 0x100 sign bit for sprite warp, + this doesn't work on denjin makai as the visible area is larger */ + /* + x&=0x1ff; + y&=0xfff; + + if (x&0x100) x-=0x200; + if (y&0x800) y-=0x1000; + */ + x&=0xfff; y&=0xfff; if (x&0x800) x-=0x1000; - if (y&0x800) y-=0x1000; - + if (y&0x800) y-=0x1000; color = (data &0x3f) + 0x40; fx = (data &0x4000) >> 14; @@ -367,16 +376,34 @@ VIDEO_UPDATE( godzilla ) tilemap_set_scrollx( foreground_layer, 0, legionna_scrollram16[4] ); tilemap_set_scrolly( foreground_layer, 0, legionna_scrollram16[5] ); - fillbitmap(bitmap,get_black_pen(screen->machine),cliprect); - - tilemap_draw(bitmap,cliprect,background_layer,0,0); + fillbitmap(bitmap,0x0200,cliprect); + + if (!(legionna_layer_disable&0x0001)) + { + tilemap_draw(bitmap,cliprect,background_layer,0,0); + } + draw_sprites(screen->machine,bitmap,cliprect,2); - tilemap_draw(bitmap,cliprect,midground_layer,0,0); + + if (!(legionna_layer_disable&0x0002)) + { + tilemap_draw(bitmap,cliprect,midground_layer,0,0); + } + draw_sprites(screen->machine,bitmap,cliprect,1); - tilemap_draw(bitmap,cliprect,foreground_layer,0,0); + + if (!(legionna_layer_disable&0x0004)) + { + tilemap_draw(bitmap,cliprect,foreground_layer,0,0); + } + draw_sprites(screen->machine,bitmap,cliprect,0); draw_sprites(screen->machine,bitmap,cliprect,3); - tilemap_draw(bitmap,cliprect,text_layer,0,0); + + if (!(legionna_layer_disable&0x0008)) + { + tilemap_draw(bitmap,cliprect,text_layer,0,0); + } return 0; }