summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author davidhay <davidhay@localhost>2008-04-14 18:26:27 +0000
committer davidhay <davidhay@localhost>2008-04-14 18:26:27 +0000
commita8209dd70df7861ca291c92b40f916347eeb9cfe (patch)
tree38f368c4457a4682c944aa8efc0a9c0ed48d9797
parente7cfe56749251ce4ffc2ff1670653995737ec055 (diff)
adds good denjinmk graphic rom (thanks to Guru)
-rw-r--r--src/mame/drivers/legionna.c13
-rw-r--r--src/mame/machine/seicop.c2
-rw-r--r--src/mame/video/legionna.c5
3 files changed, 17 insertions, 3 deletions
diff --git a/src/mame/drivers/legionna.c b/src/mame/drivers/legionna.c
index ddc4b4aa6be..2305a69e804 100644
--- a/src/mame/drivers/legionna.c
+++ b/src/mame/drivers/legionna.c
@@ -166,6 +166,14 @@ static ADDRESS_MAP_START( godzilla_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x108000, 0x11ffff) AM_RAM
ADDRESS_MAP_END
+/* did they swap the lines, or does the protection device swap the words during the DMA?? */
+WRITE16_HANDLER( denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w )
+{
+ offset^=1;
+ COMBINE_DATA(&paletteram16[offset]);
+ paletteram16_xBBBBBGGGGGRRRRR_word_w(machine,offset,data,mem_mask);
+}
+
static ADDRESS_MAP_START( denjinmk_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
AM_RANGE(0x100000, 0x1003ff) AM_RAM
@@ -179,7 +187,7 @@ static ADDRESS_MAP_START( denjinmk_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x105000, 0x105fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
AM_RANGE(0x106000, 0x107fff) AM_RAM
AM_RANGE(0x108000, 0x11dfff) AM_RAM
- AM_RANGE(0x11e000, 0x11efff) AM_RAM AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
+ AM_RANGE(0x11e000, 0x11efff) AM_RAM AM_WRITE(denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x11f000, 0x11ffff) AM_RAM
ADDRESS_MAP_END
@@ -1655,8 +1663,7 @@ ROM_START( denjinmk )
ROM_LOAD16_BYTE( "rom8.615", 0x000001, 0x010000, CRC(cc36af0d) SHA1(69c2ae38f03be79be4d138fcc73a6a86407eb285) )
ROM_REGION( 0x500000, REGION_GFX2, ROMREGION_DISPOSE )
- ROM_LOAD( "obj-0-3.748", 0x000000, 0x100000, BAD_DUMP CRC(3dcc7b04) SHA1(3c3ad5ddc18a42046348dcb54e65f6173c003d72) ) /* half size?# 0,1 */
- /* the graphics for this region are missing, the previous rom should probably be twice the size, note the filename 0-3 */
+ ROM_LOAD( "obj-0-3.748", 0x000000, 0x200000, CRC(67c26a67) SHA1(20543ca9dcf3fed0884968b5249b34b59a14b791) ) /* banks 0,1,2,3 */
ROM_LOAD( "obj-4-5.756", 0x200000, 0x100000, CRC(01f8d4e6) SHA1(25b69da693be8c3404f750b419c330a7a56e88ec) ) /* 4,5 */
ROM_LOAD( "obj-6-7.743", 0x300000, 0x100000, CRC(e5805757) SHA1(9d392c27eef7c1fcda560dac17ba9d7ae2287ac8) ) /* 6,7 */
ROM_LOAD( "obj-8-9.757", 0x400000, 0x100000, CRC(c8f7e1c9) SHA1(a746d187b50a0ecdd5a7f687a2601e5dc8bfe272) ) /* 8,9 */
diff --git a/src/mame/machine/seicop.c b/src/mame/machine/seicop.c
index 6cd27a6d5ae..14f40748e3b 100644
--- a/src/mame/machine/seicop.c
+++ b/src/mame/machine/seicop.c
@@ -1645,6 +1645,8 @@ WRITE16_HANDLER( denjinmk_mcu_w )
generic_cop_w(machine, offset, data, mem_mask);
break;
+ case (0x070/2): { denjinmk_setgfxbank(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; }
case (0x224/2): { legionna_scrollram16[2] = cop_mcu_ram[offset]; break; }
diff --git a/src/mame/video/legionna.c b/src/mame/video/legionna.c
index 82147b71f41..285743ff55e 100644
--- a/src/mame/video/legionna.c
+++ b/src/mame/video/legionna.c
@@ -27,6 +27,11 @@ void denjinmk_setgfxbank(UINT16 data)
fore_gfx_bank = (data &0x2000) >> 1;//???
back_gfx_bank = (data &0x4000) >> 2;
mid_gfx_bank = (data &0x8000) >> 3;//???
+
+ tilemap_mark_all_tiles_dirty (background_layer);
+ tilemap_mark_all_tiles_dirty (foreground_layer);
+ tilemap_mark_all_tiles_dirty (midground_layer);
+ tilemap_mark_all_tiles_dirty (text_layer);
}
#ifdef UNUSED_FUNCTION