diff options
author | Olivier Galibert <galibert@pobox.com> | 2018-01-02 17:45:28 +0100 |
---|---|---|
committer | Olivier Galibert <galibert@pobox.com> | 2018-01-02 17:48:21 +0100 |
commit | 380c14bf5c28424b043e7dd2720fab67ee2d1dd9 (patch) | |
tree | a7afb23be35b35590c43ccf6cba8acd496dd55c4 /src/mame/drivers/konamim2.cpp | |
parent | 3e1c1842c8be48973643ad747520589a0dc96cc9 (diff) |
Tackle the ambiguous ones (nw)
Diffstat (limited to 'src/mame/drivers/konamim2.cpp')
-rw-r--r-- | src/mame/drivers/konamim2.cpp | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp index 71149b07a8a..54889a30c3c 100644 --- a/src/mame/drivers/konamim2.cpp +++ b/src/mame/drivers/konamim2.cpp @@ -261,7 +261,7 @@ public: DECLARE_READ64_MEMBER(cde_r); DECLARE_WRITE64_MEMBER(cde_w); DECLARE_READ64_MEMBER(device2_r); - DECLARE_READ64_MEMBER(cpu_r); + template<bool maincpu> DECLARE_READ64_MEMBER(cpu_r); DECLARE_READ8_MEMBER(id3_r); DECLARE_READ8_MEMBER(id4_r); DECLARE_READ8_MEMBER(id5_r); @@ -1128,13 +1128,13 @@ READ64_MEMBER(konamim2_state::device2_r) } } -READ64_MEMBER(konamim2_state::cpu_r) +template<bool maincpu> READ64_MEMBER(konamim2_state::cpu_r) { uint64_t r = 0; if (ACCESSING_BITS_32_63) { - r = (uint64_t)((&space.device() != m_maincpu) ? 0x80000000 : 0); + r = (uint64_t)(maincpu ? 0 : 0x80000000); r |= m_in_monitor->read() << 30; return r << 32; } @@ -1199,7 +1199,6 @@ static ADDRESS_MAP_START( m2_main, AS_PROGRAM, 64, konamim2_state ) AM_RANGE(0x07000000, 0x07000007) AM_READ8(id7_r, 0x00ff000000000000U) - AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r) AM_RANGE(0x10000008, 0x10001007) AM_NOP // ??? AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_SHARE("share2") @@ -1207,6 +1206,16 @@ static ADDRESS_MAP_START( m2_main, AS_PROGRAM, 64, konamim2_state ) AM_RANGE(0xfff00000, 0xffffffff) AM_ROM AM_REGION("boot", 0) AM_SHARE("share2") ADDRESS_MAP_END +static ADDRESS_MAP_START( m2_main_m, AS_PROGRAM, 64, konamim2_state ) + AM_IMPORT_FROM( m2_main ) + AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<true>) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( m2_main_s, AS_PROGRAM, 64, konamim2_state ) + AM_IMPORT_FROM( m2_main ) + AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<false>) +ADDRESS_MAP_END + static ADDRESS_MAP_START( 3do_m2_main, AS_PROGRAM, 64, konamim2_state ) // ADDRESS_MAP_UNMAP_HIGH AM_IMPORT_FROM( m2_main ) @@ -1214,6 +1223,17 @@ static ADDRESS_MAP_START( 3do_m2_main, AS_PROGRAM, 64, konamim2_state ) // AM_RANGE(0x00000000, 0x000cffff) devices? ADDRESS_MAP_END +static ADDRESS_MAP_START( 3do_m2_main_m, AS_PROGRAM, 64, konamim2_state ) + AM_IMPORT_FROM( 3do_m2_main ) + AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<true>) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( 3do_m2_main_s, AS_PROGRAM, 64, konamim2_state ) + AM_IMPORT_FROM( 3do_m2_main ) + AM_RANGE(0x10000000, 0x10000007) AM_READ(cpu_r<false>) +ADDRESS_MAP_END + + static INPUT_PORTS_START( m2 ) // TODO: it's unknown if these are actual dip-switches or internal to something PORT_START("COUNTRY") @@ -1274,12 +1294,12 @@ static MACHINE_CONFIG_START( m2 ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", PPC602, 66000000) /* actually PPC602, 66MHz */ MCFG_PPC_BUS_FREQUENCY(33000000) /* Multiplier 2, Bus = 33MHz, Core = 66MHz */ - MCFG_CPU_PROGRAM_MAP(m2_main) + MCFG_CPU_PROGRAM_MAP(m2_main_m) MCFG_CPU_VBLANK_INT_DRIVER("screen", konamim2_state, m2) MCFG_CPU_ADD("sub", PPC602, 66000000) /* actually PPC602, 66MHz */ MCFG_PPC_BUS_FREQUENCY(33000000) /* Multiplier 2, Bus = 33MHz, Core = 66MHz */ - MCFG_CPU_PROGRAM_MAP(m2_main) + MCFG_CPU_PROGRAM_MAP(m2_main_s) // TODO: declaring as second screen causes palette confusion (wants to use palette from the other screen?) MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) @@ -1305,10 +1325,10 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED ( 3do_m2, m2 ) MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_PROGRAM_MAP(3do_m2_main) + MCFG_CPU_PROGRAM_MAP(3do_m2_main_m) MCFG_CPU_MODIFY("sub") - MCFG_CPU_PROGRAM_MAP(3do_m2_main) + MCFG_CPU_PROGRAM_MAP(3do_m2_main_s) MCFG_SOFTWARE_LIST_ADD("cd_list","3do_m2") |