diff options
Diffstat (limited to 'src/mame/sega/model2.cpp')
-rw-r--r-- | src/mame/sega/model2.cpp | 142 |
1 files changed, 102 insertions, 40 deletions
diff --git a/src/mame/sega/model2.cpp b/src/mame/sega/model2.cpp index 58820125f5f..e2033e2311c 100644 --- a/src/mame/sega/model2.cpp +++ b/src/mame/sega/model2.cpp @@ -10,15 +10,13 @@ MAME driver by R. Belmont, Olivier Galibert, ElSemi and Angelo Salese. TODO: - - z-sort, focal distance, color gamma and Mip Mapping still needs to be properly sorted in the renderer; + - color gamma and Mip Mapping still needs to be properly sorted in the renderer; - sound comms still needs some work (sometimes m68k doesn't get some commands or play them with a delay); - 2C games needs TGPx4 emulation; - outputs and artwork (for gearbox indicators); - clean-ups; TODO (per-game issues) - - daytona: crashes when coining it up with master network active - culprit is a wrong command parameter in geo_parse texture data opcode; - daytona: car glasses doesn't get loaded during gameplay; - doa, doaa: corrupted sound, eventually becomes silent; - dynamcopc: corrupts palette for 2d (most likely unrelated with the lack of DSP); @@ -30,15 +28,9 @@ (compute_fmul_avg, shift operation 0x11, ALU operation 0x89 (compute_favg)); - manxtt: no escape from "active motion slider" tutorial (needs analog inputs), bypass it by entering then exiting service mode; - - manxtt: no bikes are visible (not a z-sort issue!); - - manxtt: course select island map doesn't rotate properly: - timing issue, i960 sends read/write geo addresses to bufferram 0x918000/4 which TGP never reads in time. - sgt24h: first turn in easy reverse course has ugly rendered mountain in background; - - skytargt: really slow during gameplay (fixed?); - - skytargt: short draw distance (might be down to z-sort); - srallyc: some 3d elements doesn't show up properly (tree models, last hill in course 1 is often black colored); - vcop: sound dies at enter initial screen (i.e. after played the game once) (untested); - - vcop: missing 3d at stage select screen (priority?); - vstriker: stadium ads have terrible colors (they uses the wrong color table, @see video/model2rd.hxx) Notes: @@ -610,6 +602,9 @@ void model2_tgp_state::copro_fifo_w(u32 data) } else m_copro_fifo_in->push(u32(data)); + + // 1 wait state for i960; prevents Manx TT course select rotation bug + m_maincpu->spin_until_time(attotime::from_nsec(40)); } @@ -675,7 +670,8 @@ void model2b_state::copro_sharc_iop_w(offs_t offset, u32 data) (strcmp(machine().system().name, "vonj" ) == 0) || (strcmp(machine().system().name, "vonr" ) == 0) || (strcmp(machine().system().name, "vonu" ) == 0) || - (strcmp(machine().system().name, "rchase2" ) == 0)) + (strcmp(machine().system().name, "rchase2" ) == 0) || + (strcmp(machine().system().name, "rchase2a" ) == 0)) { m_copro_adsp->external_iop_write(offset, data); } @@ -1623,7 +1619,7 @@ u8 model2_state::in0_r() */ // Used by Sega Rally and Daytona USA, others might be different -CUSTOM_INPUT_MEMBER(model2_state::daytona_gearbox_r) +ioport_value model2_state::daytona_gearbox_r() { u8 res = m_gears.read_safe(0); int i; @@ -1746,7 +1742,7 @@ static INPUT_PORTS_START( daytona ) PORT_MODIFY("IN1") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON9) PORT_NAME("VR4 (Green)") PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED) - PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(model2_state, daytona_gearbox_r) + PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(FUNC(model2_state::daytona_gearbox_r)) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) PORT_MODIFY("IN2") @@ -1885,7 +1881,7 @@ static INPUT_PORTS_START( srallyc ) PORT_MODIFY("IN1") PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN) - PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(model2_state, daytona_gearbox_r) + PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(FUNC(model2_state::daytona_gearbox_r)) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_MODIFY("IN2") @@ -2039,6 +2035,30 @@ static INPUT_PORTS_START( rchase2 ) PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(2) PORT_REVERSE INPUT_PORTS_END +static INPUT_PORTS_START( rchase2a ) + PORT_INCLUDE(model2crx) + + PORT_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) + PORT_BIT(0xfc, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_MODIFY("IN2") + PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_START("P1_X") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(1) + + PORT_START("P1_Y") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(1) + + PORT_START("P2_X") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_X) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(2) + + PORT_START("P2_Y") + PORT_BIT(0xff, 0x80, IPT_AD_STICK_Y) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(50) PORT_KEYDELTA(15) PORT_PLAYER(2) +INPUT_PORTS_END + static INPUT_PORTS_START( vstriker ) PORT_INCLUDE(model2crx) @@ -2488,14 +2508,13 @@ void model2_state::model2_scsp(machine_config &config) M68000(config, m_audiocpu, 45.1584_MHz_XTAL / 4); // SCSP Clock / 2 m_audiocpu->set_addrmap(AS_PROGRAM, &model2_state::model2_snd); - SPEAKER(config, "lspeaker").front_left(); - SPEAKER(config, "rspeaker").front_right(); + SPEAKER(config, "speaker", 2).front(); SCSP(config, m_scsp, 45.1584_MHz_XTAL / 2); // 45.158MHz XTAL at Video board(Model 2A-CRX) m_scsp->set_addrmap(0, &model2_state::scsp_map); m_scsp->irq_cb().set(FUNC(model2_state::scsp_irq)); - m_scsp->add_route(0, "lspeaker", 1.0); - m_scsp->add_route(1, "rspeaker", 1.0); + m_scsp->add_route(0, "speaker", 1.0, 0); + m_scsp->add_route(1, "speaker", 1.0, 1); I8251(config, m_uart, 8000000); // uPD71051C, clock unknown // m_uart->rxrdy_handler().set(FUNC(model2_state::sound_ready_w)); @@ -2509,12 +2528,12 @@ void model2_state::model2_scsp(machine_config &config) /* original Model 2 */ void model2o_state::model2o(machine_config &config) { - I960(config, m_maincpu, 25000000); + I960(config, m_maincpu, 50_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &model2o_state::model2o_mem); TIMER(config, "scantimer").configure_scanline(FUNC(model2_state::model2_interrupt), "screen", 0, 1); - MB86234(config, m_copro_tgp, 16000000); + MB86234(config, m_copro_tgp, 50_MHz_XTAL); m_copro_tgp->set_addrmap(AS_PROGRAM, &model2o_state::copro_tgp_prog_map); m_copro_tgp->set_addrmap(AS_DATA, &model2o_state::copro_tgp_data_map); m_copro_tgp->set_addrmap(AS_IO, &model2o_state::copro_tgp_io_map); @@ -2544,7 +2563,7 @@ void model2o_state::model2o(machine_config &config) I8251(config, m_uart, 8000000); // uPD71051C, clock unknown m_uart->txd_handler().set(m_m1audio, FUNC(segam1audio_device::write_txd)); - clock_device &uart_clock(CLOCK(config, "uart_clock", 500000)); // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + clock_device &uart_clock(CLOCK(config, "uart_clock", 16_MHz_XTAL / 2 / 16)); // 16 times 31.25kHz (standard Sega/MIDI sound data rate) uart_clock.signal_handler().set(m_uart, FUNC(i8251_device::write_txc)); uart_clock.signal_handler().append(m_uart, FUNC(i8251_device::write_rxc)); @@ -2660,11 +2679,11 @@ void model2o_state::vcop(machine_config &config) /* 2A-CRX */ void model2a_state::model2a(machine_config &config) { - I960(config, m_maincpu, 25000000); + I960(config, m_maincpu, 50_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &model2a_state::model2a_crx_mem); TIMER(config, "scantimer").configure_scanline(FUNC(model2_state::model2_interrupt), "screen", 0, 1); - MB86234(config, m_copro_tgp, 16000000); + MB86234(config, m_copro_tgp, 50_MHz_XTAL); m_copro_tgp->set_addrmap(AS_PROGRAM, &model2a_state::copro_tgp_prog_map); m_copro_tgp->set_addrmap(AS_DATA, &model2a_state::copro_tgp_data_map); m_copro_tgp->set_addrmap(AS_IO, &model2a_state::copro_tgp_io_map); @@ -2780,7 +2799,7 @@ void model2a_state::zeroguna(machine_config &config) /* 2B-CRX */ void model2b_state::model2b(machine_config &config) { - I960(config, m_maincpu, 25000000); + I960(config, m_maincpu, 50_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &model2b_state::model2b_crx_mem); TIMER(config, "scantimer", 0).configure_scanline(FUNC(model2_state::model2_interrupt), "screen", 0, 1); @@ -2935,7 +2954,7 @@ void model2b_state::zerogun(machine_config &config) /* 2C-CRX */ void model2c_state::model2c(machine_config &config) { - I960(config, m_maincpu, 25000000); + I960(config, m_maincpu, 50_MHz_XTAL / 2); m_maincpu->set_addrmap(AS_PROGRAM, &model2c_state::model2c_crx_mem); TIMER(config, "scantimer").configure_scanline(FUNC(model2c_state::model2c_interrupt), "screen", 0, 1); @@ -2984,8 +3003,8 @@ void model2c_state::stcc(machine_config &config) io.an_port_callback<2>().set_ioport("BRAKE"); DSBZ80(config, m_dsbz80, 0); - m_dsbz80->add_route(0, "lspeaker", 1.0); - m_dsbz80->add_route(1, "rspeaker", 1.0); + m_dsbz80->add_route(0, "speaker", 1.0, 0); + m_dsbz80->add_route(1, "speaker", 1.0, 1); m_uart->txd_handler().set(m_dsbz80, FUNC(dsbz80_device::write_txd)); } @@ -4548,7 +4567,7 @@ ROM_START( stcc ) /* Sega Touring Car Championship, Model 2C - Defaults to Japan ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19274.31", 0x000000, 0x020000, CRC(2dcc08ae) SHA1(bad26e2c994f2d4db5d9be0e34cf21a8bf5aa7e9) ) - ROM_REGION( 0x20000, "mpegcpu", 0) // Z80 DSB program + ROM_REGION( 0x20000, "dsbz80:mpegcpu", 0) // Z80 DSB program ROM_LOAD("epr-19275.2s", 0x000000, 0x20000, CRC(ee809d3f) SHA1(347080858fbfe9955002f382603a1b86a52d26d5) ) ROM_REGION( 0x20000, "cpu4", 0) // Communication program @@ -4558,7 +4577,7 @@ ROM_START( stcc ) /* Sega Touring Car Championship, Model 2C - Defaults to Japan ROM_LOAD16_WORD_SWAP("mpr-19259.32", 0x000000, 0x400000, CRC(4d55dbfc) SHA1(6e57e6e6e785b0f14bb5e221a44d518dbde7ad65) ) ROM_LOAD16_WORD_SWAP("mpr-19261.34", 0x400000, 0x400000, CRC(b88878ff) SHA1(4bebcfba68b0cc2fa0bcacfaaf2d2e8af3625c5d) ) - ROM_REGION( 0x800000, "mpeg", 0 ) // MPEG audio data + ROM_REGION( 0x800000, "dsbz80:mpeg", 0 ) // MPEG audio data ROM_LOAD("mpr-19262.57s", 0x000000, 0x200000, CRC(922aed7a) SHA1(8d6872bdd46eaf2076c10d18c10af8ccbd3b10e8) ) ROM_LOAD("mpr-19263.58s", 0x200000, 0x200000, CRC(a256f4cd) SHA1(a17b49050f1ecf1970477b12201cc3b58b31d89c) ) ROM_LOAD("mpr-19264.59s", 0x400000, 0x200000, CRC(b6c51d0f) SHA1(9e0969a1e49ec1462f69cd0f0f9ce630d66174ce) ) @@ -4613,7 +4632,7 @@ ROM_START( stccb ) /* Sega Touring Car Championship Revision B, Model 2C - Defau ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19274.31", 0x000000, 0x020000, CRC(2dcc08ae) SHA1(bad26e2c994f2d4db5d9be0e34cf21a8bf5aa7e9) ) - ROM_REGION( 0x20000, "mpegcpu", 0) // Z80 DSB program + ROM_REGION( 0x20000, "dsbz80:mpegcpu", 0) // Z80 DSB program ROM_LOAD("epr-19275.2s", 0x000000, 0x20000, CRC(ee809d3f) SHA1(347080858fbfe9955002f382603a1b86a52d26d5) ) ROM_REGION( 0x20000, "cpu4", 0) // Communication program @@ -4623,7 +4642,7 @@ ROM_START( stccb ) /* Sega Touring Car Championship Revision B, Model 2C - Defau ROM_LOAD16_WORD_SWAP("mpr-19259.32", 0x000000, 0x400000, CRC(4d55dbfc) SHA1(6e57e6e6e785b0f14bb5e221a44d518dbde7ad65) ) ROM_LOAD16_WORD_SWAP("mpr-19261.34", 0x400000, 0x400000, CRC(b88878ff) SHA1(4bebcfba68b0cc2fa0bcacfaaf2d2e8af3625c5d) ) - ROM_REGION( 0x800000, "mpeg", 0 ) // MPEG audio data + ROM_REGION( 0x800000, "dsbz80:mpeg", 0 ) // MPEG audio data ROM_LOAD("mpr-19262.57s", 0x000000, 0x200000, CRC(922aed7a) SHA1(8d6872bdd46eaf2076c10d18c10af8ccbd3b10e8) ) ROM_LOAD("mpr-19263.58s", 0x200000, 0x200000, CRC(a256f4cd) SHA1(a17b49050f1ecf1970477b12201cc3b58b31d89c) ) ROM_LOAD("mpr-19264.59s", 0x400000, 0x200000, CRC(b6c51d0f) SHA1(9e0969a1e49ec1462f69cd0f0f9ce630d66174ce) ) @@ -4678,7 +4697,7 @@ ROM_START( stcca ) /* Sega Touring Car Championship Revision A, Model 2C - Defau ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19274.31", 0x000000, 0x020000, CRC(2dcc08ae) SHA1(bad26e2c994f2d4db5d9be0e34cf21a8bf5aa7e9) ) - ROM_REGION( 0x20000, "mpegcpu", 0) // Z80 DSB program + ROM_REGION( 0x20000, "dsbz80:mpegcpu", 0) // Z80 DSB program ROM_LOAD("epr-19275.2s", 0x000000, 0x20000, CRC(ee809d3f) SHA1(347080858fbfe9955002f382603a1b86a52d26d5) ) ROM_REGION( 0x20000, "cpu4", 0) // Communication program @@ -4688,7 +4707,7 @@ ROM_START( stcca ) /* Sega Touring Car Championship Revision A, Model 2C - Defau ROM_LOAD16_WORD_SWAP("mpr-19259.32", 0x000000, 0x400000, CRC(4d55dbfc) SHA1(6e57e6e6e785b0f14bb5e221a44d518dbde7ad65) ) ROM_LOAD16_WORD_SWAP("mpr-19261.34", 0x400000, 0x400000, CRC(b88878ff) SHA1(4bebcfba68b0cc2fa0bcacfaaf2d2e8af3625c5d) ) - ROM_REGION( 0x800000, "mpeg", 0 ) // MPEG audio data + ROM_REGION( 0x800000, "dsbz80:mpeg", 0 ) // MPEG audio data ROM_LOAD("mpr-19262.57s", 0x000000, 0x200000, CRC(922aed7a) SHA1(8d6872bdd46eaf2076c10d18c10af8ccbd3b10e8) ) ROM_LOAD("mpr-19263.58s", 0x200000, 0x200000, CRC(a256f4cd) SHA1(a17b49050f1ecf1970477b12201cc3b58b31d89c) ) ROM_LOAD("mpr-19264.59s", 0x400000, 0x200000, CRC(b6c51d0f) SHA1(9e0969a1e49ec1462f69cd0f0f9ce630d66174ce) ) @@ -4743,7 +4762,7 @@ ROM_START( stcco ) /* Sega Touring Car Championship, Model 2C - Defaults to Japa ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19274.31", 0x000000, 0x020000, CRC(2dcc08ae) SHA1(bad26e2c994f2d4db5d9be0e34cf21a8bf5aa7e9) ) - ROM_REGION( 0x20000, "mpegcpu", 0) // Z80 DSB program + ROM_REGION( 0x20000, "dsbz80:mpegcpu", 0) // Z80 DSB program ROM_LOAD("epr-19275.2s", 0x000000, 0x20000, CRC(ee809d3f) SHA1(347080858fbfe9955002f382603a1b86a52d26d5) ) ROM_REGION( 0x20000, "cpu4", 0) // Communication program @@ -4753,7 +4772,7 @@ ROM_START( stcco ) /* Sega Touring Car Championship, Model 2C - Defaults to Japa ROM_LOAD16_WORD_SWAP("mpr-19259.32", 0x000000, 0x400000, CRC(4d55dbfc) SHA1(6e57e6e6e785b0f14bb5e221a44d518dbde7ad65) ) ROM_LOAD16_WORD_SWAP("mpr-19261.34", 0x400000, 0x400000, CRC(b88878ff) SHA1(4bebcfba68b0cc2fa0bcacfaaf2d2e8af3625c5d) ) - ROM_REGION( 0x800000, "mpeg", 0 ) // MPEG audio data + ROM_REGION( 0x800000, "dsbz80:mpeg", 0 ) // MPEG audio data ROM_LOAD("mpr-19262.57s", 0x000000, 0x200000, CRC(922aed7a) SHA1(8d6872bdd46eaf2076c10d18c10af8ccbd3b10e8) ) ROM_LOAD("mpr-19263.58s", 0x200000, 0x200000, CRC(a256f4cd) SHA1(a17b49050f1ecf1970477b12201cc3b58b31d89c) ) ROM_LOAD("mpr-19264.59s", 0x400000, 0x200000, CRC(b6c51d0f) SHA1(9e0969a1e49ec1462f69cd0f0f9ce630d66174ce) ) @@ -4989,7 +5008,7 @@ ROM_START( hotdp ) ROM_LOAD32_WORD("tgp5.23", 0x1000002, 0x400000, CRC(29f311f3) SHA1(2f89767aaefeb2650091b37c4d505701681bb375) ) ROM_REGION( 0x1000000, "textures", 0 ) // Textures, Flash ROM modules instead if DIP ROMs - ROM_LOAD32_WORD("tex1.27", 0x0000000, 0x400000, BAD_DUMP CRC(86ef3ee4) SHA1(8ad2aa98d94e9a4f1abb61a02aba95064e533a61) ) // one of flash ROMs had broken most significant address pin, dump contains only half of even-bytes data mirrored 2x, correct sum should be 28DA + ROM_LOAD32_WORD("tex1.27", 0x0000000, 0x400000, CRC(eea00bdf) SHA1(5e04c19b544c6483252adaba3c92080d4750fde0) ) ROM_LOAD32_WORD("tex0.25", 0x0000002, 0x400000, CRC(fb10366a) SHA1(189389f84fa5f04c586953c54254f7bd09dd8d92) ) ROM_LOAD32_WORD("tex3.28", 0x0800000, 0x400000, CRC(9a61d7e8) SHA1(d9a563f74e485df5bdf149afaed69811b5536712) ) ROM_LOAD32_WORD("tex2.26", 0x0800002, 0x400000, CRC(84ec2923) SHA1(daea23864fbc48c14177e77cd783f73621472708) ) @@ -5447,6 +5466,48 @@ ROM_START( rchase2 ) /* Rail Chase 2 Revision A, Model 2B. Sega game ID# 833-118 ROM_LOAD("epr-17895.ic8", 0x0000, 0x8000, CRC(8fd7003d) SHA1(b8b16e20e3ed07326330ba335ea1e701cc0bec17) ) ROM_END +ROM_START( rchase2a ) /* Rail Chase 2, Model 2B */ + ROM_REGION( 0x200000, "maincpu", 0 ) // i960 program + ROM_LOAD32_WORD("epr-18143.15", 0x000000, 0x080000, CRC(07ae7e58) SHA1(8802529e33a598618480a81dcd2b9541ff481e04) ) // X & Y axis controls reversed compared to rchase2 + ROM_LOAD32_WORD("epr-18144.16", 0x000002, 0x080000, CRC(a1aa3e54) SHA1(6fc0394abce176b503a350d669f7b54d2c0c4033) ) // maybe a factory conversion set?? + ROM_LOAD32_WORD("epr-18145.13", 0x100000, 0x080000, CRC(8d685f38) SHA1(4a8997d0fd20c771a5d66aff7d2c6170e94b130e) ) + ROM_LOAD32_WORD("epr-18146.14", 0x100002, 0x080000, CRC(412df17a) SHA1(f963dd72bbf1bc7ab707aecf21471677177e0f5a) ) + + ROM_REGION32_LE( 0x2000000, "main_data", 0 ) // Data + ROM_LOAD32_WORD("mpr-18037.11", 0x000000, 0x200000, CRC(dea8f896) SHA1(8eb45e46bd14a2ffbdaac47d381a1ea9b9a03ca2) ) + ROM_LOAD32_WORD("mpr-18038.12", 0x000002, 0x200000, CRC(441f7709) SHA1(cbfa687839b6cad6a5ace45b44b95c45e4cfab0d) ) + ROM_LOAD32_WORD("mpr-18039.9", 0x400000, 0x200000, CRC(b98c6f06) SHA1(dd1ff9c682778de1c6c09e7a5cbc95a8149488c4) ) + ROM_LOAD32_WORD("mpr-18040.10", 0x400002, 0x200000, CRC(0d872667) SHA1(33e56486ec6b953341552b6bc21dc66f6f8aaf74) ) + ROM_LOAD32_WORD("mpr-18041.7", 0x800000, 0x200000, CRC(e511ab0a) SHA1(c6ea14b3bdefdc59603bd2fc152ac0421fae4d6f) ) + ROM_LOAD32_WORD("mpr-18042.8", 0x800002, 0x200000, CRC(e9a04159) SHA1(0204ba86af2707bc9e277cac68dd9ef759189c23) ) + ROM_LOAD32_WORD("mpr-18043.5", 0xc00000, 0x200000, CRC(ff84dfd6) SHA1(82833bf4cb1f367aea5fec6cffb7023cbbd3c8cb) ) + ROM_LOAD32_WORD("mpr-18044.6", 0xc00002, 0x200000, CRC(ab9b406d) SHA1(62e95ceea6f71eedbebae59e188aac03e6129e62) ) + + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASEFF ) // Copro extra data (collision/height map/etc) + /* empty?? */ + + ROM_REGION( 0x1000000, "polygons", 0 ) // Models + ROM_LOAD32_WORD("mpr-18031.17", 0x0000000, 0x200000, CRC(25d0deae) SHA1(2d0339dd7eeb2625f78e2fbe4ebdc976967175a4) ) + ROM_LOAD32_WORD("mpr-18032.21", 0x0000002, 0x200000, CRC(dbae35c2) SHA1(9510104975192a0ef1750251636daff7f089feb9) ) + ROM_LOAD32_WORD("mpr-18033.18", 0x0400000, 0x200000, CRC(1e75946c) SHA1(7dee991f0c43de9bfe17ae44767f65f12e83c811) ) + ROM_LOAD32_WORD("mpr-18034.22", 0x0400002, 0x200000, CRC(215235ad) SHA1(48227544209412fca3035e85a00d33ea654dc7b5) ) + + ROM_REGION( 0x1000000, "textures", 0 ) // Textures + ROM_LOAD32_WORD("mpr-18035.27", 0x000000, 0x200000, CRC(4423f66e) SHA1(c1f8dda4781dea00bd97dbf9ecfbb626dadd2c35) ) + ROM_LOAD32_WORD("mpr-18036.25", 0x000002, 0x200000, CRC(69221cf5) SHA1(e39644a08aa631dbdcfc7c0dc356e73f6a4412a9) ) + + ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program + ROM_LOAD16_WORD_SWAP("epr-18047.31", 0x000000, 0x080000, CRC(4c31d459) SHA1(424d5e5a7787d0d4c68aa919ba7d575babfd1ce0) ) + + ROM_REGION16_BE( 0x800000, "samples", 0 ) // Samples + ROM_LOAD16_WORD_SWAP("mpr-18029.32", 0x0000000, 0x200000, CRC(f6804150) SHA1(ef40c11008c75d04159772ad30f02cdb8c5464f3) ) + ROM_LOAD16_WORD_SWAP("mpr-18030.34", 0x0400000, 0x200000, CRC(1167615d) SHA1(bae0060aec3c15f08342f11df665c05c5703523d) ) + + /* Z80 code located on the I/O board type 837-11694. Z80 @ 4Mhz with 8-way DSW & SONY CXD1095Q QFP64 chip */ + ROM_REGION( 0x8000, "iocpu", 0 ) + ROM_LOAD("epr-17895.ic8", 0x0000, 0x8000, CRC(8fd7003d) SHA1(b8b16e20e3ed07326330ba335ea1e701cc0bec17) ) +ROM_END + /* Behind Enemy Lines @@ -6733,8 +6794,8 @@ ROM_START( daytona93 ) /* Daytona USA, Deluxe cabinet, '93 version, ROM board ID ROM_LOAD( "epr-16726.bin", 0x000000, 0x020000, CRC(c179b8c7) SHA1(86d3e65c77fb53b1d380b629348f4ab5b3d39228) ) ROM_REGION( 0xc0000, M1AUDIO_CPU_REGION, ROMREGION_BE|ROMREGION_16BIT ) /* 68K code */ - ROM_LOAD16_WORD_SWAP("epr-16720.7", 0x000000, 0x020000, CRC(8e73cffd) SHA1(9933ccc0757e8c86e0adb938d1c89210b26841ea) ) - ROM_LOAD16_WORD_SWAP("epr-16721.8", 0x020000, 0x020000, CRC(1bb3b7b7) SHA1(ee2fd1480e535fc37e9932e6fe4e31344559fc87) ) + ROM_LOAD16_WORD_SWAP("epr-16489.7", 0x000000, 0x020000, CRC(c20e543e) SHA1(ab5bf3c6d82c08317d6be73729185ce54963aa8a) ) + ROM_LOAD16_WORD_SWAP("epr-16490.8", 0x020000, 0x020000, CRC(c24edaab) SHA1(693e9fdf958a90c722a78daf48140788fa6a2f30) ) ROM_REGION( 0x400000, M1AUDIO_MPCM1_REGION, 0 ) // Samples ROM_LOAD("mpr-16491.32", 0x000000, 0x200000, CRC(89920903) SHA1(06d1d55470ae99f8de0f8c88c694f34c4eb13668) ) @@ -7200,9 +7261,9 @@ ROM_START( desert ) /* Desert Tank, Model 2, Sega Game ID# 833-11002, ROM board ROM_REGION( 0x800000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-16968.16", 0x000000, 0x200000, CRC(4a16f465) SHA1(411214ed65ce966040d4299b50bfaa40f7f5f266) ) - ROM_LOAD32_WORD("mpr-16964.21", 0x000002, 0x200000, CRC(d4a769b6) SHA1(845c34f95a49e06e3996b0c67aa73b4886fa8996) ) + ROM_LOAD32_WORD("mpr-16964.20", 0x000002, 0x200000, CRC(d4a769b6) SHA1(845c34f95a49e06e3996b0c67aa73b4886fa8996) ) ROM_LOAD32_WORD("mpr-16969.17", 0x400000, 0x200000, CRC(887380ac) SHA1(03a9f601764d06cb0b2daaadf4f8433f327abd4a) ) - ROM_LOAD32_WORD("mpr-16965.20", 0x400002, 0x200000, CRC(9ba7645f) SHA1(c04f369961f908bac16fad8e32b863202390c205) ) + ROM_LOAD32_WORD("mpr-16965.21", 0x400002, 0x200000, CRC(9ba7645f) SHA1(c04f369961f908bac16fad8e32b863202390c205) ) ROM_REGION( 0x1000000, "textures", 0 ) // Textures ROM_LOAD32_WORD("mpr-16967.25", 0x000000, 0x200000, CRC(b8b84c9d) SHA1(00ef320988609e98c8af383b68d845e3be8d0a03) ) @@ -7459,7 +7520,7 @@ GAME( 1997, zeroguna, zerogun, zeroguna, zerogun, model2a_state, init_z GAME( 1997, zerogunaj, zerogun, zeroguna, zerogun, model2a_state, init_zerogun, ROT0, "Psikyo", "Zero Gunner (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1997, motoraid, 0, manxtt, motoraid, model2a_state, empty_init, ROT0, "Sega", "Motor Raid - Twin", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1997, motoraiddx, motoraid, manxtt, motoraid, model2a_state, empty_init, ROT0, "Sega", "Motor Raid - Twin/DX", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, airwlkrs, 0, model2a, vf2, model2a_state, empty_init, ROT0, "Data East", "Air Walkers", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1997, airwlkrs, 0, model2a, vf2, model2a_state, empty_init, ROT0, "Data East Corporation", "Air Walkers", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) GAME( 1998, dynamcop, 0, model2a_5881, dynamcop, model2a_state, empty_init, ROT0, "Sega", "Dynamite Cop (Export, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, dyndeka2, dynamcop, model2a_5881, dynamcop, model2a_state, empty_init, ROT0, "Sega", "Dynamite Deka 2 (Japan, Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1998, pltkidsa, pltkids, model2a_5881, pltkids, model2a_state, init_pltkids, ROT0, "Psikyo", "Pilot Kids (Model 2A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) @@ -7467,6 +7528,7 @@ GAME( 1998, hpyagu98, 0, model2a, vf2, model2a_state, empty_ // Model 2B-CRX (SHARC, SCSP sound board) GAME( 1994, rchase2, 0, rchase2, rchase2, model2b_state, empty_init, ROT0, "Sega", "Rail Chase 2 (Revision A)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) +GAME( 1994, rchase2a, rchase2, rchase2, rchase2a, model2b_state, empty_init, ROT0, "Sega", "Rail Chase 2", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND ) GAME( 1994, vstriker, 0, model2b, vstriker, model2b_state, empty_init, ROT0, "Sega", "Virtua Striker (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1994, vstrikero, vstriker, model2b, vstriker, model2b_state, empty_init, ROT0, "Sega", "Virtua Striker", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, fvipers, 0, model2b, vf2, model2b_state, empty_init, ROT0, "Sega", "Fighting Vipers (Revision D)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) |