summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/3do.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/3do.cpp')
-rw-r--r--src/mame/drivers/3do.cpp63
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 )
+