diff options
Diffstat (limited to 'src/mame/drivers/cninja.cpp')
-rw-r--r-- | src/mame/drivers/cninja.cpp | 71 |
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) |