diff options
Diffstat (limited to 'src/mame/drivers/m72.cpp')
-rw-r--r-- | src/mame/drivers/m72.cpp | 244 |
1 files changed, 143 insertions, 101 deletions
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp index 0ce6cad4fc5..87a4d16f218 100644 --- a/src/mame/drivers/m72.cpp +++ b/src/mame/drivers/m72.cpp @@ -310,7 +310,7 @@ TIMER_CALLBACK_MEMBER(m72_state::delayed_ram16_w) uint16_t mem_mask = (BIT(param, 28) ? 0xff00 : 0x0000) | (BIT(param, 27) ? 0x00ff : 0x0000); logerror("MB8421/MB8431 left_w(0x%03x, 0x%04x, 0x%04x)\n", offset, val, mem_mask); - m_dpram->left_w(machine().dummy_space(), offset, val, mem_mask); + m_dpram->left_w(offset, val, mem_mask); } TIMER_CALLBACK_MEMBER(m72_state::delayed_ram8_w) @@ -319,9 +319,9 @@ TIMER_CALLBACK_MEMBER(m72_state::delayed_ram8_w) uint16_t offset = (param >> 9) & 0x07ff; if (BIT(param, 8)) - m_dpram->right_w(machine().dummy_space(), offset, val << 8, 0xff00); + m_dpram->right_w(offset, val << 8, 0xff00); else - m_dpram->right_w(machine().dummy_space(), offset, val, 0x00ff); + m_dpram->right_w(offset, val, 0x00ff); } @@ -337,7 +337,7 @@ WRITE8_MEMBER(m72_state::mcu_data_w) READ8_MEMBER(m72_state::mcu_data_r) { - return (m_dpram->right_r(space, offset >> 1) >> (BIT(offset, 0) ? 8 : 0)) & 0xff; + return (m_dpram->right_r(offset >> 1) >> (BIT(offset, 0) ? 8 : 0)) & 0xff; } READ8_MEMBER(m72_state::mcu_sample_r) @@ -1822,13 +1822,12 @@ void m72_state::m72_audio_chips(machine_config &config) DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); - vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); } -MACHINE_CONFIG_START(m72_state::m72_base) - +void m72_state::m72_base(machine_config &config) +{ /* basic machine hardware */ V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */ m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m72_map); @@ -1918,96 +1917,94 @@ void m72_state::m72_dbreed(machine_config &config) /****************************************** M81 ***********************************************/ // M81 is closest to M72 -MACHINE_CONFIG_START(m72_state::m81_hharry) +void m72_state::m81_hharry(machine_config &config) +{ m72_base(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(hharry_map) - MCFG_DEVICE_IO_MAP(m81_portmap) + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharry_map); + m_maincpu->set_addrmap(AS_IO, &m72_state::m81_portmap); - MCFG_DEVICE_MODIFY("soundcpu") - MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) - MCFG_DEVICE_IO_MAP(rtype2_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) + m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map); + m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap); + m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); MCFG_VIDEO_START_OVERRIDE(m72_state,hharry) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m81) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(m72_state::screen_update_m81)); +} -MACHINE_CONFIG_START(m72_state::m81_xmultipl) +void m72_state::m81_xmultipl(machine_config &config) +{ m81_hharry(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(xmultipl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::xmultipl_map); MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl) // different offsets -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(m72_state::m81_dbreed) +void m72_state::m81_dbreed(machine_config &config) +{ m81_xmultipl(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(dbreed_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::dbreed_map); +} /****************************************** M84 ***********************************************/ // M84 -MACHINE_CONFIG_START(m72_state::rtype2) - +void m72_state::rtype2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_DEVICE_PROGRAM_MAP(rtype2_map) - MCFG_DEVICE_IO_MAP(m84_portmap) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb) - - MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) - MCFG_DEVICE_IO_MAP(rtype2_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ + V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */ + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype2_map); + m_maincpu->set_addrmap(AS_IO, &m72_state::m84_portmap); + m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb)); + + Z80(config, m_soundcpu, SOUND_CLOCK); + m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map); + m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap); + m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ PIC8259(config, m_upd71059c, 0); m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2) - MCFG_PALETTE_ADD("palette", 512) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2); + PALETTE(config, m_palette).set_entries(512); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) - MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256); + m_screen->set_screen_update(FUNC(m72_state::screen_update)); + m_screen->set_palette(m_palette); MCFG_VIDEO_START_OVERRIDE(m72_state,rtype2) m72_audio_chips(config); -MACHINE_CONFIG_END +} // not m72, different video system (less tiles regions?) (M84? M82?) -MACHINE_CONFIG_START(m72_state::hharryu) +void m72_state::hharryu(machine_config &config) +{ rtype2(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(hharryu_map) + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharryu_map); MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu) -MACHINE_CONFIG_END +} // M84 -MACHINE_CONFIG_START(m72_state::cosmccop) - +void m72_state::cosmccop(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", V35,MASTER_CLOCK/2) - MCFG_DEVICE_PROGRAM_MAP(kengo_map) - MCFG_DEVICE_IO_MAP(m84_v33_portmap) - - MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) - MCFG_DEVICE_IO_MAP(rtype2_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ + V35(config, m_maincpu, MASTER_CLOCK/2); + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::kengo_map); + m_maincpu->set_addrmap(AS_IO, &m72_state::m84_v33_portmap); + + Z80(config, m_soundcpu, SOUND_CLOCK); + m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map); + m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap); + m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ MCFG_MACHINE_START_OVERRIDE(m72_state,kengo) @@ -2016,18 +2013,18 @@ MACHINE_CONFIG_START(m72_state::cosmccop) // upd71059c isn't needed because the V35 has its own IRQ controller /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2) - MCFG_PALETTE_ADD("palette", 512) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2); + PALETTE(config, m_palette).set_entries(512); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) - MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256); + m_screen->set_screen_update(FUNC(m72_state::screen_update)); + m_screen->set_palette(m_palette); MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu) m72_audio_chips(config); -MACHINE_CONFIG_END +} void m72_state::kengo(machine_config &config) { @@ -2044,52 +2041,53 @@ M82-A-A as the top board M82-B-A and as the bottom board */ -MACHINE_CONFIG_START(m72_state::m82) - +void m72_state::m82(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_DEVICE_PROGRAM_MAP(m82_map) - MCFG_DEVICE_IO_MAP(m82_portmap) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb) - MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) - MCFG_DEVICE_IO_MAP(rtype2_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */ + V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */ + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::m82_map); + m_maincpu->set_addrmap(AS_IO, &m72_state::m82_portmap); + m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb)); + Z80(config, m_soundcpu, SOUND_CLOCK); + m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map); + m_soundcpu->set_addrmap(AS_IO, &m72_state::rtype2_sound_portmap); + m_soundcpu->set_periodic_int(FUNC(m72_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ PIC8259(config, m_upd71059c, 0); m_upd71059c->out_int_callback().set_inputline(m_maincpu, 0); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_majtitle) - MCFG_PALETTE_ADD("palette", 512) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_majtitle); + PALETTE(config, m_palette).set_entries(512); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) - MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m82) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256); + m_screen->set_screen_update(FUNC(m72_state::screen_update_m82)); + m_screen->set_palette(m_palette); MCFG_VIDEO_START_OVERRIDE(m72_state,m82) m72_audio_chips(config); -MACHINE_CONFIG_END +} /* Pound for Pound uses M85-A-B / M85-B */ -MACHINE_CONFIG_START(m72_state::poundfor) - +void m72_state::poundfor(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */ - MCFG_DEVICE_PROGRAM_MAP(rtype2_map) - MCFG_DEVICE_IO_MAP(poundfor_portmap) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("upd71059c", pic8259_device, inta_cb) - MCFG_DEVICE_ADD(m_soundcpu, Z80, SOUND_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(sound_rom_map) - MCFG_DEVICE_IO_MAP(poundfor_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(m72_state, fake_nmi, 128*55) /* clocked by V1? (Vigilante) */ + V30(config, m_maincpu, MASTER_CLOCK/2/2); /* 16 MHz external freq (8MHz internal) */ + m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::rtype2_map); + m_maincpu->set_addrmap(AS_IO, &m72_state::poundfor_portmap); + m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb)); + + Z80(config, m_soundcpu, SOUND_CLOCK); + m_soundcpu->set_addrmap(AS_PROGRAM, &m72_state::sound_rom_map); + m_soundcpu->set_addrmap(AS_IO, &m72_state::poundfor_sound_portmap); + m_soundcpu->set_periodic_int(FUNC(m72_state::fake_nmi), attotime::from_hz(128*55)); /* clocked by V1? (Vigilante) */ /* IRQs are generated by main Z80 and YM2151 */ PIC8259(config, m_upd71059c, 0); @@ -2104,18 +2102,18 @@ MACHINE_CONFIG_START(m72_state::poundfor) m_upd4701[1]->set_porty_tag("TRACK1_Y"); /* video hardware */ - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2) - MCFG_PALETTE_ADD("palette", 512) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2); + PALETTE(config, m_palette).set_entries(512); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256) - MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(MASTER_CLOCK/4, 512, 64, 448, 284, 0, 256); + m_screen->set_screen_update(FUNC(m72_state::screen_update)); + m_screen->set_palette(m_palette); MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor) m72_audio_chips(config); -MACHINE_CONFIG_END +} /*************************************************************************** @@ -2674,6 +2672,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 + 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(3e66c629) SHA1(e1da7a85dd0a20c8692ceca188883c2abb5b816d) ) // i80c31 instead of i8751, FIXED BITS (xxxxxxxxxxxxxxx0) + + 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) ) @@ -2908,7 +2949,7 @@ ROM_START( lohtb3 ) // extremely similar to the original. Copyright changed to 1 ROM_RELOAD( 0xe0000, 0x10000 ) ROM_REGION( 0x10000, "mcu", 0 ) - ROM_LOAD( "loht-a26.bin", 0x00000, 0x02000, BAD_DUMP CRC(ac901e17) SHA1(70a73288d594c78ad2aca78ce55a699cb040bede) ) // undumped, using the dump from lohtb2 for now + ROM_LOAD( "c8751h.bin", 0x00000, 0x01000, CRC(9c9545f1) SHA1(ca800ce7467efb877d0fff4c47d72478a991e2a9) ) ROM_REGION( 0x080000, "sprites", 0 ) ROM_LOAD( "i-8.8", 0x00000, 0x10000, CRC(df5ac5ee) SHA1(5b45417ada402047d97dfb6cee6545686ad26e37) ) @@ -3832,11 +3873,12 @@ 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, m72, imgfight, m72_state, init_imgfight, ROT270, "Irem", "Image Fight (Japan, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // uses an 80c31 MCU, which isn't hooked up yet 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) GAME( 1989, lohtb2, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (Japan, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board -GAME( 1997, lohtb3, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (World, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // works like above, mcu code is the same as the real code, probably just an alt revision on a bootleg board +GAME( 1997, lohtb3, loht, m72_8751, loht, m72_state, init_m72_8751, ROT0, "bootleg", "Legend of Hero Tonma (World, bootleg with i8751)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) GAME( 1989, xmultiplm72, xmultipl, m72_xmultipl, xmultipl, m72_state, init_m72_8751, ROT0, "Irem", "X Multiply (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) |