diff options
Diffstat (limited to 'src/mame/drivers/3do.cpp')
-rw-r--r-- | src/mame/drivers/3do.cpp | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/src/mame/drivers/3do.cpp b/src/mame/drivers/3do.cpp deleted file mode 100644 index 21c83a4d497..00000000000 --- a/src/mame/drivers/3do.cpp +++ /dev/null @@ -1,300 +0,0 @@ -// license:LGPL-2.1+ -// copyright-holders:Angelo Salese, Wilbert Pol -/*************************************************************************** - - 3do.cpp - - Driver file to handle emulation of the 3DO systems - -Hardware descriptions: - -Processors: -- 32bit 12.5MHZ RISC CPU (ARM60 - ARM6 core) -- Separate BUS for video refresh updates (VRAM is dual ported) -- Super Fast BUS Speed (50 Megabytes per second) -- Math Co-Processor custom designed by NTG for accelerating fixed-point - matrix operations (_not_ the ARM FPA) -- Multitaking 32-bit operating system - -Resolution: -- 640x480 pixel resolution -- 16.7 million colors - -Two accelerated video co-processors: -- 25MHZ clock rate (NTSC), 29.5MHZ clock rate (PAL) -- Capable of producing 9-16 million real pixels per second (36-64 Mpix/sec - interpolated), distorted, scaled, rotated and texture mapped. -- able to map a rectangular bitmap onto any arbitrary 4-point polygon. -- texturemap source bitmaps can be 1, 2, 4, 6, 8, or 16 bits per pixel and - are RLE compressed for a maximum combination of both high resolution and - small storage space. -- supports transparency, translucency, and color-shading effects. - -Custom 16bit DSP: -- specifically designed for mixing, manipulating, and synthesizing CD quality - sound. -- can decompress sound 2:1 or 4:1 on the fly saving memory and bus bandwidth. -- 25MHz clock rate. -- pipelined CISC architecture -- 16bit register size -- 17 separate 16bit DMA channels to and from system memory. -- on chip instruction SRAM and register memory. -- 20bit internal processing. -- special filtering capable of creating effects such as 3D sound. - -Sound: -- 16bit stereo sound -- 44.1 kHz sound sampling rate -- Fully support Dolby(tm) Surround Sound - -Memory: -- 2 megabytes of DRAM -- 1 megabyte of VRAM (also capable of holding/executing code and data) -- 1 megabyte of ROM -- 32KB battery backed SRAM - -CD-ROM drive: -- 320ms access time -- double speed 300kbps data transfer -- 32KB RAM buffer - -Ports: -- 2 expansion ports: - - 1 high-speed 68 pin x 1 AV I/O port (for FMV cartridge) - - 1 high-speed 30 pin x 1 I/O expansion port -- 1 control port, capable of daisy chaining together up to 8 peripherals - -Models: -- Panasonic FZ-1 R.E.A.L. 3DO Interactive Multiplayer (Japan, Asia, North America, Europe) -- Panasonic FZ-10 R.E.A.L. 3DO Interactive Multiplayer (Japan, North America, Europe) -- Goldstar 3DO Interactive Multiplayer (South Korea, North America, Europe) -- Goldstar 3DO ALIVE II (South Korea) -- Sanyo TRY 3DO Interactive Multiplayer (Japan) -- Creative 3DO Blaster - PC Card (ISA) - -=========================================================================== - -Part list of Goldstar 3DO Interactive Multiplayer - -- X1 = 50.0000 MHz KONY 95-08 50.0000 KCH089C -- X2 = 59.0000 MHz KONY 95-21 59.0000 KCH089C (NTSC would use 49.09MHz) -- IC303 BOB = 3DO BOB ADG 00919-001-IC 517A4611 - 100 pins -- IC1 ANVIL = 3DO Anvil rev4 00745-004-02 521U5L36 - 304 pins -- IC302 DSP = SONY CXD2500BQ 447HE5V - 80 pins -- IC601 ADAC = BB PCM1710U 9436 GG2553 - 28 pins -- X601 16.934MHz = 16.93440 KONY -- IC101/102/103/104 DRAM = Goldstar GM71C4800AJ70 9520 KOREA - 28 pins -- IC105/106/107/108 VRAM = Toshiba TC528267J-70 9513HBK - 40 pins -- IC3 ROM = Goldstar [202M] GM23C8000AFW-325 9524 - 32 pins -- IC4 SRAM = Goldstar GM76C256ALLFW70 - 28 pins -- IC2 ARM = ARM P60ARMCP 9516C - 100 pins -- IC6 = Philips 74HCT14D 974230Q - 14 pins -- IC301 u-COM = MC68HSC 705C8ACFB 3E20T HLAH9446 - 44 pins - -***************************************************************************/ - -#include "emu.h" -#include "includes/3do.h" - -#include "cpu/arm/arm.h" -#include "cpu/arm7/arm7.h" -#include "imagedev/chd_cd.h" - - -#define X2_CLOCK_PAL 59000000 -#define X2_CLOCK_NTSC 49090000 -#define X601_CLOCK XTAL(16'934'400) - - -void _3do_state::main_mem(address_map &map) -{ - map(0x00000000, 0x001FFFFF).bankrw(m_bank1).share(m_dram); /* DRAM */ - map(0x00200000, 0x003FFFFF).ram().share(m_vram); /* VRAM */ - map(0x03000000, 0x030FFFFF).rom().region("bios", 0); /* BIOS */ - map(0x03100000, 0x0313FFFF).ram(); /* Brooktree? */ - 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 */ -} - - -static INPUT_PORTS_START( 3do ) - PORT_START("P1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) -INPUT_PORTS_END - -void _3do_state::machine_start() -{ - m_nvram->set_base(&m_nvmem, sizeof(m_nvmem)); - - /* configure overlay */ - // TODO: can overlay at 0-0x1FFFFF even be written to, or writes go to dram in any case? - m_bank1->configure_entry(0, m_dram); - m_bank1->configure_entry(1, memregion("overlay")->base()); - - m_slow2_init(); - m_madam_init(); - m_clio_init(); -} - -void _3do_state::machine_reset() -{ - /* start with overlay enabled */ - m_bank1->set_entry(1); - - m_clio.cstatbits = 0x01; /* bit 0 = reset of clio caused by power on */ -} - -void _3do_state::_3do(machine_config &config) -{ - /* Basic machine hardware */ - ARM7_BE(config, m_maincpu, XTAL(50'000'000)/4); - m_maincpu->set_addrmap(AS_PROGRAM, &_3do_state::main_mem); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - - TIMER(config, "timer_x16").configure_periodic(FUNC(_3do_state::timer_x16_cb), attotime::from_hz(12000)); // TODO: timing - - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(X2_CLOCK_NTSC / 2, 1592, 254, 1534, 263, 22, 262); - m_screen->set_screen_update(FUNC(_3do_state::screen_update)); - - CDROM(config, "cdrom"); -} - - -void _3do_state::_3do_pal(machine_config &config) -{ - /* Basic machine hardware */ - ARM7_BE(config, m_maincpu, XTAL(50'000'000)/4); - m_maincpu->set_addrmap(AS_PROGRAM, &_3do_state::main_mem); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - - TIMER(config, "timer_x16").configure_periodic(FUNC(_3do_state::timer_x16_cb), attotime::from_hz(12000)); // TODO: timing - - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(X2_CLOCK_PAL / 2, 1592, 254, 1534, 263, 22, 262); // TODO: proper params - m_screen->set_screen_update(FUNC(_3do_state::screen_update)); - - CDROM(config, "cdrom"); -} - -#if 0 -#define NTSC_BIOS \ - ROM_REGION32_BE( 0x200000, "bios", 0 ) \ - ROM_SYSTEM_BIOS( 0, "panafz10", "Panasonic FZ-10 R.E.A.L. 3DO Interactive Multiplayer" ) \ - ROMX_LOAD( "panafz10.bin", 0x000000, 0x100000, CRC(58242cee) SHA1(3c912300775d1ad730dc35757e279c274c0acaad), ROM_BIOS(0) ) \ - ROM_SYSTEM_BIOS( 1, "goldstar", "Goldstar 3DO Interactive Multiplayer v1.01m" ) \ - ROMX_LOAD( "goldstar.bin", 0x000000, 0x100000, CRC(b6f5028b) SHA1(c4a2e5336f77fb5f743de1eea2cda43675ee2de7), ROM_BIOS(1) ) \ - ROM_SYSTEM_BIOS( 2, "panafz1", "Panasonic FZ-1 R.E.A.L. 3DO Interactive Multiplayer" ) \ - ROMX_LOAD( "panafz1.bin", 0x000000, 0x100000, CRC(c8c8ff89) SHA1(34bf189111295f74d7b7dfc1f304d98b8d36325a), ROM_BIOS(2) ) \ - ROM_SYSTEM_BIOS( 3, "gsalive2", "Goldstar 3DO Alive II" ) \ - ROMX_LOAD( "gsalive2.bin", 0x000000, 0x100000, NO_DUMP, ROM_BIOS(3) ) \ - ROM_SYSTEM_BIOS( 4, "sanyotry", "Sanyo TRY 3DO Interactive Multiplayer" ) \ - ROMX_LOAD( "sanyotry.bin", 0x000000, 0x100000, CRC(d5cbc509) SHA1(b01c53da256dde43ffec4ad3fc3adfa8d635e943), ROM_BIOS(4) ) -#else -#define NTSC_BIOS \ - ROM_REGION32_BE( 0x200000, "bios", 0 ) \ - ROM_SYSTEM_BIOS( 0, "panafz10", "Panasonic FZ-10 R.E.A.L. 3DO Interactive Multiplayer" ) \ - ROMX_LOAD( "panafz10.bin", 0x000000, 0x100000, CRC(58242cee) SHA1(3c912300775d1ad730dc35757e279c274c0acaad), ROM_BIOS(0) ) \ - ROM_SYSTEM_BIOS( 1, "goldstar", "Goldstar 3DO Interactive Multiplayer v1.01m" ) \ - ROMX_LOAD( "goldstar.bin", 0x000000, 0x100000, CRC(b6f5028b) SHA1(c4a2e5336f77fb5f743de1eea2cda43675ee2de7), ROM_BIOS(1) ) \ - ROM_SYSTEM_BIOS( 2, "panafz1", "Panasonic FZ-1 R.E.A.L. 3DO Interactive Multiplayer" ) \ - ROMX_LOAD( "panafz1.bin", 0x000000, 0x100000, CRC(c8c8ff89) SHA1(34bf189111295f74d7b7dfc1f304d98b8d36325a), ROM_BIOS(2) ) \ - ROM_SYSTEM_BIOS( 3, "sanyotry", "Sanyo TRY 3DO Interactive Multiplayer" ) \ - ROMX_LOAD( "sanyotry.bin", 0x000000, 0x100000, CRC(d5cbc509) SHA1(b01c53da256dde43ffec4ad3fc3adfa8d635e943), ROM_BIOS(3) ) \ - ROM_REGION32_BE( 0x200000, "overlay", 0 ) \ - ROM_COPY( "bios", 0, 0, 0x200000 ) -#endif - -ROM_START(3do) - NTSC_BIOS -ROM_END - -ROM_START(3dobios) - NTSC_BIOS -ROM_END - -ROM_START(3do_pal) - ROM_REGION32_BE( 0x200000, "bios", 0 ) - ROM_SYSTEM_BIOS( 0, "panafz10", "Panasonic FZ-10 R.E.A.L. 3DO Interactive Multiplayer" ) - ROMX_LOAD( "panafz10.bin", 0x000000, 0x100000, CRC(58242cee) SHA1(3c912300775d1ad730dc35757e279c274c0acaad), ROM_BIOS(0) ) - ROM_SYSTEM_BIOS( 1, "goldstar", "Goldstar 3DO Interactive Multiplayer v1.01m" ) - ROMX_LOAD( "goldstar.bin", 0x000000, 0x100000, CRC(b6f5028b) SHA1(c4a2e5336f77fb5f743de1eea2cda43675ee2de7), ROM_BIOS(1) ) - ROM_SYSTEM_BIOS( 2, "panafz1", "Panasonic FZ-1 R.E.A.L. 3DO Interactive Multiplayer" ) - ROMX_LOAD( "panafz1.bin", 0x000000, 0x100000, CRC(c8c8ff89) SHA1(34bf189111295f74d7b7dfc1f304d98b8d36325a), ROM_BIOS(2) ) - - ROM_REGION32_BE( 0x200000, "overlay", 0 ) - ROM_COPY( "bios", 0, 0, 0x200000 ) -ROM_END - -ROM_START(orbatak) - NTSC_BIOS - - DISK_REGION( "cdrom" ) - DISK_IMAGE_READONLY( "orbatak", 0, SHA1(25cb3b889cf09dbe5faf2b0ca4aae5e03453da00) ) -ROM_END - -#define ALG_BIOS \ - ROM_REGION32_BE( 0x200000, "bios", 0 ) \ - /* TC544000AF-150, 1xxxxxxxxxxxxxxxxxx = 0xFF */ \ - ROM_LOAD( "saot_rom2.bin", 0x000000, 0x80000, CRC(b832da9a) SHA1(520d3d1b5897800af47f92efd2444a26b7a7dead) ) \ - ROM_REGION32_BE( 0x200000, "overlay", 0 ) \ - ROM_COPY( "bios", 0, 0, 0x200000 ) \ - - -ROM_START(alg3do) - ALG_BIOS -ROM_END - - -ROM_START(md23do) - ALG_BIOS - - DISK_REGION( "cdrom" ) - DISK_IMAGE_READONLY( "mad dog ii", 0, SHA1(0117c1fd279f42e942648ca55fa75dd45da37a4f) ) -ROM_END - -ROM_START(sht3do) - ALG_BIOS - - DISK_REGION( "cdrom" ) - DISK_IMAGE_READONLY( "shootout at old tucson", 0, SHA1(bd42213c6b460b5b6153a8b2b41d0a114171e86e) ) -ROM_END - - -/*************************************************************************** - - Game driver(s) - -***************************************************************************/ - -/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -// console section -CONS( 1993, 3do, 0, 0, _3do, 3do, _3do_state, empty_init, "The 3DO Company", "3DO (NTSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -CONS( 1993, 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 */ -// Misc 3do Arcade games -GAME( 1993, 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( 1995, orbatak, 3dobios, _3do, 3do, _3do_state, empty_init, ROT0, "American Laser Games", "Orbatak (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -// Beavis and Butthead (prototype) - - -// American Laser Games uses its own BIOS (with additional protection according to serial output?) -GAME( 1993, alg3do, 0, _3do, 3do, _3do_state, empty_init, ROT0, "American Laser Games / The 3DO Company", "ALG 3DO Bios", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT ) - -GAME( 199?, md23do, alg3do, _3do, 3do, _3do_state, empty_init, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold (3DO hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) -GAME( 1994, sht3do, alg3do, _3do, 3do, _3do_state, empty_init, ROT0, "American Laser Games", "Shootout at Old Tucson (3DO hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) - |