diff options
Diffstat (limited to 'src/mame/drivers/3do.cpp')
-rw-r--r-- | src/mame/drivers/3do.cpp | 63 |
1 files changed, 36 insertions, 27 deletions
diff --git a/src/mame/drivers/3do.cpp b/src/mame/drivers/3do.cpp index 88fbe234c6c..69f1214b526 100644 --- a/src/mame/drivers/3do.cpp +++ b/src/mame/drivers/3do.cpp @@ -2,7 +2,7 @@ // copyright-holders:Angelo Salese, Wilbert Pol /*************************************************************************** - 3do.c + 3do.cpp Driver file to handle emulation of the 3DO systems @@ -99,7 +99,6 @@ Part list of Goldstar 3DO Interactive Multiplayer #include "cpu/arm/arm.h" #include "cpu/arm7/arm7.h" #include "imagedev/chd_cd.h" -#include "screen.h" #define X2_CLOCK_PAL 59000000 @@ -107,17 +106,17 @@ Part list of Goldstar 3DO Interactive Multiplayer #define X601_CLOCK XTAL(16'934'400) -void _3do_state::_3do_mem(address_map &map) +void _3do_state::main_mem(address_map &map) { - map(0x00000000, 0x001FFFFF).bankrw("bank1").share("dram"); /* DRAM */ - map(0x00200000, 0x003FFFFF).ram().share("vram"); /* VRAM */ - map(0x03000000, 0x030FFFFF).bankr("bank2"); /* BIOS */ + map(0x00000000, 0x001FFFFF).bankrw(m_bank1).share(m_dram); /* DRAM */ + map(0x00200000, 0x003FFFFF).ram().share(m_vram); /* VRAM */ + map(0x03000000, 0x030FFFFF).bankr(m_bank2); /* BIOS */ map(0x03100000, 0x0313FFFF).ram(); /* Brooktree? */ - map(0x03140000, 0x0315FFFF).rw(FUNC(_3do_state::_3do_nvarea_r), FUNC(_3do_state::_3do_nvarea_w)).umask32(0x000000ff); /* NVRAM */ - map(0x03180000, 0x031BFFFF).rw(FUNC(_3do_state::_3do_slow2_r), FUNC(_3do_state::_3do_slow2_w)); /* Slow bus - additional expansion */ - map(0x03200000, 0x0320FFFF).rw(FUNC(_3do_state::_3do_svf_r), FUNC(_3do_state::_3do_svf_w)); /* special vram access1 */ - map(0x03300000, 0x033FFFFF).rw(FUNC(_3do_state::_3do_madam_r), FUNC(_3do_state::_3do_madam_w)); /* address decoder */ - map(0x03400000, 0x034FFFFF).rw(FUNC(_3do_state::_3do_clio_r), FUNC(_3do_state::_3do_clio_w)); /* io controller */ + map(0x03140000, 0x0315FFFF).rw(FUNC(_3do_state::nvarea_r), FUNC(_3do_state::nvarea_w)).umask32(0x000000ff); /* NVRAM */ + map(0x03180000, 0x031BFFFF).rw(FUNC(_3do_state::slow2_r), FUNC(_3do_state::slow2_w)); /* Slow bus - additional expansion */ + map(0x03200000, 0x0320FFFF).rw(FUNC(_3do_state::svf_r), FUNC(_3do_state::svf_w)); /* special vram access1 */ + map(0x03300000, 0x033FFFFF).rw(FUNC(_3do_state::madam_r), FUNC(_3do_state::madam_w)); /* address decoder */ + map(0x03400000, 0x034FFFFF).rw(FUNC(_3do_state::clio_r), FUNC(_3do_state::clio_w)); /* io controller */ } @@ -142,9 +141,9 @@ void _3do_state::machine_start() m_bank1->configure_entry(0, m_dram); m_bank1->configure_entry(1, memregion("user1")->base()); - m_3do_slow2_init(); - m_3do_madam_init(); - m_3do_clio_init( downcast<screen_device *>(machine().device("screen"))); + m_slow2_init(); + m_madam_init(); + m_clio_init(); } void _3do_state::machine_reset() @@ -158,16 +157,16 @@ void _3do_state::machine_reset() MACHINE_CONFIG_START(_3do_state::_3do) /* Basic machine hardware */ - MCFG_DEVICE_ADD( "maincpu", ARM7_BE, XTAL(50'000'000)/4 ) - MCFG_DEVICE_PROGRAM_MAP( _3do_mem) + MCFG_DEVICE_ADD( m_maincpu, ARM7_BE, XTAL(50'000'000)/4 ) + MCFG_DEVICE_PROGRAM_MAP( main_mem) - MCFG_NVRAM_ADD_1FILL("nvram") + MCFG_NVRAM_ADD_1FILL(m_nvram) MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing - MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_ADD(m_screen, RASTER) MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_NTSC / 2, 1592, 254, 1534, 263, 22, 262 ) - MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update__3do) + MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update) MCFG_CDROM_ADD("cdrom") MACHINE_CONFIG_END @@ -176,16 +175,16 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(_3do_state::_3do_pal) /* Basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", ARM7_BE, XTAL(50'000'000)/4 ) - MCFG_DEVICE_PROGRAM_MAP( _3do_mem) + MCFG_DEVICE_ADD(m_maincpu, ARM7_BE, XTAL(50'000'000)/4 ) + MCFG_DEVICE_PROGRAM_MAP( main_mem) - MCFG_NVRAM_ADD_1FILL("nvram") + MCFG_NVRAM_ADD_1FILL(m_nvram) MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x16", _3do_state, timer_x16_cb, attotime::from_hz(12000)) // TODO: timing - MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_ADD(m_screen, RASTER) MCFG_SCREEN_RAW_PARAMS( X2_CLOCK_PAL / 2, 1592, 254, 1534, 263, 22, 262 ) // TODO: proper params - MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update__3do) + MCFG_SCREEN_UPDATE_DRIVER(_3do_state, screen_update) MCFG_CDROM_ADD("cdrom") MACHINE_CONFIG_END @@ -241,6 +240,14 @@ ROM_START(orbatak) DISK_IMAGE_READONLY( "orbatak", 0, SHA1(25cb3b889cf09dbe5faf2b0ca4aae5e03453da00) ) ROM_END +ROM_START(md23do) + ROM_REGION32_BE( 0x200000, "user1", 0 ) + ROM_LOAD( "soat_rom2.bin", 0x000000, 0x80000, CRC(b832da9a) SHA1(520d3d1b5897800af47f92efd2444a26b7a7dead) ) // TC544000AF-150, 1xxxxxxxxxxxxxxxxxx = 0xFF + + DISK_REGION( "cdrom" ) + DISK_IMAGE_READONLY( "md23do", 0, NO_DUMP ) +ROM_END + /*************************************************************************** Game driver(s) @@ -251,6 +258,8 @@ ROM_END CONS( 1991, 3do, 0, 0, _3do, 3do, _3do_state, empty_init, "The 3DO Company", "3DO (NTSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) CONS( 1991, 3do_pal, 3do, 0, _3do_pal, 3do, _3do_state, empty_init, "The 3DO Company", "3DO (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS */ -GAME( 1991, 3dobios, 0, _3do, 3do, _3do_state, empty_init, ROT0, "The 3DO Company", "3DO Bios", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT ) -GAME( 199?, orbatak, 3dobios, _3do, 3do, _3do_state, empty_init, ROT0, "<unknown>", "Orbatak (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +/* YEAR NAME PARENT MACHINE INPUT STATE INIT MONITOR COMPANY FULLNAME FLAGS */ +GAME( 1991, 3dobios, 0, _3do, 3do, _3do_state, empty_init, ROT0, "The 3DO Company", "3DO Bios", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT ) +GAME( 199?, orbatak, 3dobios, _3do, 3do, _3do_state, empty_init, ROT0, "<unknown>", "Orbatak (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +GAME( 199?, md23do, 0, _3do, 3do, _3do_state, empty_init, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold (3DO hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) + |