summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cninja.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cninja.cpp')
-rw-r--r--src/mame/drivers/cninja.cpp71
1 files changed, 39 insertions, 32 deletions
diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp
index 94f333ac5ee..c4ea6502a9a 100644
--- a/src/mame/drivers/cninja.cpp
+++ b/src/mame/drivers/cninja.cpp
@@ -123,7 +123,7 @@ static ADDRESS_MAP_START( cninja_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x184000, 0x187fff) AM_RAM AM_SHARE("ram")
AM_RANGE(0x190000, 0x190007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff)
- AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_common", decocomn_device, nonbuffered_palette_w) AM_SHARE("paletteram")
+ AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_SHARE("spriteram") /* Sprites */
AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
@@ -159,7 +159,7 @@ static ADDRESS_MAP_START( cninjabl_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x180000, 0x187fff) AM_RAM // more ram on bootleg?
AM_RANGE(0x190000, 0x190007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff)
- AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("deco_common", decocomn_device, nonbuffered_palette_w) AM_SHARE("paletteram")
+ AM_RANGE(0x19c000, 0x19dfff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x1b4000, 0x1b4001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
ADDRESS_MAP_END
@@ -223,7 +223,7 @@ static ADDRESS_MAP_START( edrandy_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_SHARE("pf3_rowscroll")
AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_SHARE("pf4_rowscroll")
- AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, nonbuffered_palette_w) AM_SHARE("paletteram")
+ AM_RANGE(0x188000, 0x189fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x194000, 0x197fff) AM_RAM AM_SHARE("ram") /* Main ram */
AM_RANGE(0x198000, 0x19bfff) AM_READWRITE(sshangha_protection_region_6_146_r,sshangha_protection_region_6_146_w) AM_SHARE("prot16ram") /* Protection device */
// AM_RANGE(0x198000, 0x1987ff) AM_READWRITE(sshangha_protection_region_6_146_r,sshangha_protection_region_6_146_w) AM_SHARE("prot16ram") /* Protection device */
@@ -236,6 +236,10 @@ static ADDRESS_MAP_START( edrandy_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x1bc800, 0x1bcfff) AM_WRITENOP /* Another bug in game code? Sprite list can overrun. Doesn't seem to mirror */
ADDRESS_MAP_END
+WRITE16_MEMBER(cninja_state::robocop2_priority_w)
+{
+ COMBINE_DATA(&m_priority);
+}
static ADDRESS_MAP_START( robocop2_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM
@@ -260,10 +264,10 @@ static ADDRESS_MAP_START( robocop2_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x198000, 0x198001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) /* DMA flag */
- AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, nonbuffered_palette_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
AM_RANGE(0x1b0000, 0x1b0007) AM_DEVICE8("irq", deco_irq_device, map, 0x00ff)
AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_SHARE("ram") /* Main ram */
- AM_RANGE(0x1f0000, 0x1f0001) AM_DEVWRITE("deco_common", decocomn_device, priority_w)
+ AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(robocop2_priority_w)
AM_RANGE(0x1f8000, 0x1f8001) AM_READ_PORT("DSW3") /* Dipswitch #3 */
ADDRESS_MAP_END
@@ -287,18 +291,21 @@ WRITE16_MEMBER( cninja_state::mutantf_protection_region_0_146_w )
m_deco146->write_data( space, deco146_addr, data, mem_mask, cs );
}
-
+READ16_MEMBER( cninja_state::mutantf_71_r )
+{
+ return 0xffff; // todo
+}
static ADDRESS_MAP_START( mutantf_map, AS_PROGRAM, 16, cninja_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("deco_common", decocomn_device, nonbuffered_palette_w) AM_SHARE("paletteram")
- AM_RANGE(0x180000, 0x180001) AM_DEVWRITE("deco_common", decocomn_device, priority_w)
+ AM_RANGE(0x160000, 0x161fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
+ AM_RANGE(0x180000, 0x180001) AM_WRITE(robocop2_priority_w)
AM_RANGE(0x180002, 0x180003) AM_WRITENOP /* VBL irq ack */
AM_RANGE(0x1a0000, 0x1a3fff) AM_READWRITE(mutantf_protection_region_0_146_r,mutantf_protection_region_0_146_w)AM_SHARE("prot16ram") /* Protection device */
- AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) AM_DEVREAD("deco_common", decocomn_device, d_71_r)
+ AM_RANGE(0x1c0000, 0x1c0001) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) AM_READ(mutantf_71_r)
AM_RANGE(0x1e0000, 0x1e0001) AM_DEVWRITE("spriteram2", buffered_spriteram16_device, write)
AM_RANGE(0x300000, 0x30000f) AM_WRITE(cninja_pf12_control_w)
@@ -809,6 +816,15 @@ DECOSPR_PRIORITY_CB_MEMBER(cninja_state::pri_callback)
return 0;
}
+MACHINE_START_MEMBER(cninja_state,robocop2)
+{
+ save_item(NAME(m_priority));
+}
+
+MACHINE_RESET_MEMBER(cninja_state,robocop2)
+{
+ m_priority = 0;
+}
MACHINE_CONFIG_START(cninja_state::cninja)
@@ -832,12 +848,10 @@ MACHINE_CONFIG_START(cninja_state::cninja)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cninja)
MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XBGR)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
- MCFG_DECOCOMN_ADD("deco_common")
- MCFG_DECOCOMN_PALETTE("palette")
-
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(1)
MCFG_DECO16IC_WIDTH12(1)
@@ -920,14 +934,12 @@ MACHINE_CONFIG_START(cninja_state::stoneage)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cninja)
MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XBGR)
MCFG_VIDEO_START_OVERRIDE(cninja_state,stoneage)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
- MCFG_DECOCOMN_ADD("deco_common")
- MCFG_DECOCOMN_PALETTE("palette")
-
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(1)
MCFG_DECO16IC_WIDTH12(1)
@@ -1019,12 +1031,10 @@ MACHINE_CONFIG_START(cninja_state::cninjabl)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cninjabl)
MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XBGR)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
- MCFG_DECOCOMN_ADD("deco_common")
- MCFG_DECOCOMN_PALETTE("palette")
-
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(1)
MCFG_DECO16IC_WIDTH12(1)
@@ -1091,12 +1101,10 @@ MACHINE_CONFIG_START(cninja_state::edrandy)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cninja)
MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XBGR)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
- MCFG_DECOCOMN_ADD("deco_common")
- MCFG_DECOCOMN_PALETTE("palette")
-
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(0)
MCFG_DECO16IC_WIDTH12(1)
@@ -1175,15 +1183,16 @@ MACHINE_CONFIG_START(cninja_state::robocop2)
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_robocop2)
MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
+ MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", robocop2)
MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XBGR)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
- MCFG_DECOCOMN_ADD("deco_common")
- MCFG_DECOCOMN_PALETTE("palette")
-
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(0)
MCFG_DECO16IC_WIDTH12(1)
@@ -1254,7 +1263,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(cninja_state::mutantf)
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, 14000000)
+ MCFG_CPU_ADD("maincpu", M68000, XTAL(28'000'000) / 2)
MCFG_CPU_PROGRAM_MAP(mutantf_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", cninja_state, irq6_line_hold)
@@ -1263,22 +1272,20 @@ MACHINE_CONFIG_START(cninja_state::mutantf)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_SIZE(40*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) // same as robocop2? verify this from real pcb
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_mutantf)
-
+
+ MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
+ MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
MCFG_VIDEO_START_OVERRIDE(cninja_state,mutantf)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", mutantf)
MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(XBGR)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram2")
- MCFG_DECOCOMN_ADD("deco_common")
- MCFG_DECOCOMN_PALETTE("palette")
-
MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0)
MCFG_DECO16IC_SPLIT(0)
MCFG_DECO16IC_WIDTH12(1)