diff options
Diffstat (limited to 'src/mame/drivers/m72.cpp')
-rw-r--r-- | src/mame/drivers/m72.cpp | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp index 25acbf8901e..c1546b33b77 100644 --- a/src/mame/drivers/m72.cpp +++ b/src/mame/drivers/m72.cpp @@ -1080,6 +1080,11 @@ void m72_state::poundfor_sound_portmap(address_map &map) map(0x42, 0x42).rw("soundlatch", FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w)); } +void m72_state::i80c31_mem_map(address_map &map) +{ + map(0x0000, 0x1fff).rom().region("mcu", 0); +} + void m72_state::mcu_io_map(address_map &map) { /* External access */ @@ -1876,11 +1881,21 @@ void m72_state::m72_8751(machine_config &config) mculatch.data_pending_callback().set_inputline(m_mcu, MCS51_INT1_LINE); mculatch.set_separate_acknowledge(true); - I8751(config, m_mcu, XTAL(8'000'000)); /* Uses its own XTAL */ - m_mcu->set_addrmap(AS_IO, &m72_state::mcu_io_map); - m_mcu->port_out_cb<1>().set(FUNC(m72_state::mcu_port1_w)); + i8751_device &mcu(I8751(config, m_mcu, XTAL(8'000'000))); /* Uses its own XTAL */ + mcu.set_addrmap(AS_IO, &m72_state::mcu_io_map); + mcu.port_out_cb<1>().set(FUNC(m72_state::mcu_port1_w)); } +void m72_state::imgfightb(machine_config &config) +{ + m72_8751(config); + i80c31_device &mcu(I80C31(config.replace(), m_mcu, XTAL(7'200'000))); + mcu.set_addrmap(AS_PROGRAM, &m72_state::i80c31_mem_map); + mcu.set_addrmap(AS_IO, &m72_state::mcu_io_map); + mcu.port_out_cb<1>().set(FUNC(m72_state::mcu_port1_w)); + + // TODO: uses 6116 type RAM instead of MB8421 and MB8431 +} void m72_state::rtype(machine_config &config) { @@ -2672,6 +2687,49 @@ ROM_START( imgfightj ) ROM_LOAD( "if-c-v1.bin", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) ) ROM_END +ROM_START( imgfightb ) // mostly identical to imgfightj content-wise, it's a 4 PCB stack bootleg with flying wires + ROM_REGION( 0x100000, "maincpu", 0 ) // identical, but ic111.9e + ROM_LOAD16_BYTE( "ic108.9b", 0x00001, 0x10000, CRC(592d2d80) SHA1(d54916a9bfe4b65a972b62202af706135e73518d) ) + ROM_LOAD16_BYTE( "ic89.7b", 0x00000, 0x10000, CRC(61f89056) SHA1(3e0724dbc2b00a30193ea6cfac8b4331055d4fd4) ) + ROM_LOAD16_BYTE( "ic111.9e", 0x40001, 0x10000, CRC(da50622e) SHA1(32c75b6270d401a6825632c66f3026cae7b5b81f) ) // slight difference: 99.998474%: 0x1116 from 0x09 to 0x0d + ROM_RELOAD( 0xc0001, 0x10000 ) + ROM_LOAD16_BYTE( "ic110.9d", 0x60001, 0x10000, CRC(0e0aefcd) SHA1(f5056a2d0612d912aff1e0eccb1182de7ae16990) ) + ROM_RELOAD( 0xe0001, 0x10000 ) + ROM_LOAD16_BYTE( "ic92.7e", 0x40000, 0x10000, CRC(38fce272) SHA1(4fe4d0838d21f3022b440a32ec69b25e936e62dd) ) + ROM_RELOAD( 0xc0000, 0x10000 ) + ROM_LOAD16_BYTE( "ic91.7d", 0x60000, 0x10000, CRC(d69c0722) SHA1(ef18e7b7057f19caaa61d0b8c07d2d0c6e0a555e) ) + ROM_RELOAD( 0xe0000, 0x10000 ) + + ROM_REGION( 0x10000, "mcu", 0 ) + ROM_LOAD( "25.ic27.2l", 0x00000, 0x2000, CRC(d83359a2) SHA1(2d486bf4a873abfe591e0d9383f9e230f47bc42a) ) // i80c31 instead of i8751, contents identical to imgfightj MCU, with second half padded with 0xff + + ROM_REGION( 0x080000, "sprites", 0 ) // half size ROMs, but identical content + ROM_LOAD( "ic96.7k", 0x00000, 0x10000, CRC(d4febb03) SHA1(6fe53b198bdcef1708ff134c64af9c064e274e1b) ) /* sprites */ + ROM_LOAD( "ic97.7l", 0x10000, 0x10000, CRC(973d7bbc) SHA1(409242ddc7eb90564a15b222641e53d11ab1e04a) ) + ROM_LOAD( "ic115.9k", 0x20000, 0x10000, CRC(2328880b) SHA1(a35c77a7d04614dbfbca4c79bb3e729115129ee4) ) + ROM_LOAD( "ic116.9l", 0x30000, 0x10000, CRC(6da001ea) SHA1(473ed89b77809b3b76bfa9f5ca4008c9534cdbb4) ) + ROM_LOAD( "ic94.7h", 0x40000, 0x10000, CRC(92bc7fda) SHA1(521d4a29e06eb8790fdeeba968f99a389f50a24e) ) + ROM_LOAD( "ic95.7j", 0x50000, 0x10000, CRC(e63a5918) SHA1(fd3374866f922cef72c0678aa751ad1e6f95a12a) ) + ROM_LOAD( "ic113.9h", 0x60000, 0x10000, CRC(27caec8e) SHA1(cc1943ba9548715425e799f418750cd70c3f88da) ) + ROM_LOAD( "ic114.9j", 0x70000, 0x10000, CRC(1933eb65) SHA1(4c24cfd059c11875f53b57cc020fbdbac903bd4a) ) + + ROM_REGION( 0x040000, "gfx2", 0 ) // identical + ROM_LOAD( "ic30.3d", 0x00000, 0x10000, CRC(34ee2d77) SHA1(38826e0318aa8da893fa4c93f217288c015df606) ) /* tiles #1 */ + ROM_LOAD( "ic31.3e", 0x10000, 0x10000, CRC(6bd2845b) SHA1(149cf14f919590da88b9a8e254690da010709862) ) + ROM_LOAD( "ic29.3c", 0x20000, 0x10000, CRC(090d50e5) SHA1(4f2a7c76320b3f8dafae90a246187e034fe7562b) ) + ROM_LOAD( "ic32.3f", 0x30000, 0x10000, CRC(3a8e3083) SHA1(8a75d556790b6bea41ead1a5f95589dd293bdf4e) ) + + ROM_REGION( 0x040000, "gfx3", 0 ) // identical + ROM_LOAD( "ic35.3k", 0x00000, 0x10000, CRC(b425c829) SHA1(0ccd487dba00bb7cb0ff5d1c67f8fee3e68df5d8) ) /* tiles #2 */ + ROM_LOAD( "ic36.3l", 0x10000, 0x10000, CRC(e9bfe23e) SHA1(f97a68dbdce7e06d07faab19acf7625cdc8eeaa8) ) + ROM_LOAD( "ic34.3j", 0x20000, 0x10000, CRC(256e50f2) SHA1(9e9fda4f1f1449548942c0da4478f61fe0d263d1) ) + ROM_LOAD( "ic33.3h", 0x30000, 0x10000, CRC(4c682785) SHA1(f61f1227e0ad629fdfca106306b17a9f6a9959e3) ) + + ROM_REGION( 0x20000, "samples", 0 ) /* samples, identical */ + ROM_LOAD( "ic28.lower.2n.bin", 0x00000, 0x10000, CRC(cb64a194) SHA1(940fad6b9147bccc8290e112f5973f8ea062b52f) ) + ROM_LOAD( "ic28.lower.2n.bin", 0x10000, 0x10000, CRC(45b68bf5) SHA1(2fb28793019ca85b3b6d7c4c31eedff1d71f2d83) ) +ROM_END + ROM_START( loht ) ROM_REGION( 0x100000, "maincpu", 0 ) ROM_LOAD16_BYTE( "tom_c-h0.rom", 0x00001, 0x20000, CRC(a63204b6) SHA1(d217bc70650a1a1bbe0cf536ec3bb678f670718d) ) @@ -3830,6 +3888,7 @@ GAME( 1988, nspiritj, nspirit, m72_8751, nspirit, m72_state, init_m GAME( 1988, imgfight, 0, m72, imgfight, m72_state, init_imgfight, ROT270, "Irem", "Image Fight (World, revision A)", MACHINE_SUPPORTS_SAVE ) // doesn't wait / check for japan warning string.. fails rom check if used with japanese mcu rom (World version?) GAME( 1988, imgfightj, imgfight, m72_8751, imgfight, m72_state, init_m72_8751, ROT270, "Irem", "Image Fight (Japan)", MACHINE_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump, can't actually see warning screen due to priority / mixing errors, check tilemap viewer (Japan Version) +GAME( 1988, imgfightb, imgfight, imgfightb, imgfight, m72_state, init_m72_8751, ROT270, "Irem", "Image Fight (Japan, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // uses an 80c31 MCU, which isn't hooked up correctly yet. Gives 'RAM NG 7' error GAME( 1989, loht, 0, m72, loht, m72_state, init_loht, ROT0, "Irem", "Legend of Hero Tonma", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // fails rom check if used with Japan MCU rom (World version?) GAME( 1989, lohtj, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "Irem", "Legend of Hero Tonma (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // waits for japan warning screen, works with our mcu dump (Japan Version) |