summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/m72.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/m72.cpp')
-rw-r--r--src/mame/drivers/m72.cpp244
1 files changed, 101 insertions, 143 deletions
diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp
index 87a4d16f218..0ce6cad4fc5 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(offset, val, mem_mask);
+ m_dpram->left_w(machine().dummy_space(), 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(offset, val << 8, 0xff00);
+ m_dpram->right_w(machine().dummy_space(), offset, val << 8, 0xff00);
else
- m_dpram->right_w(offset, val, 0x00ff);
+ m_dpram->right_w(machine().dummy_space(), 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(offset >> 1) >> (BIT(offset, 0) ? 8 : 0)) & 0xff;
+ return (m_dpram->right_r(space, offset >> 1) >> (BIT(offset, 0) ? 8 : 0)) & 0xff;
}
READ8_MEMBER(m72_state::mcu_sample_r)
@@ -1822,12 +1822,13 @@ 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);
}
-void m72_state::m72_base(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m72_base)
+
/* 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);
@@ -1917,94 +1918,96 @@ void m72_state::m72_dbreed(machine_config &config)
/****************************************** M81 ***********************************************/
// M81 is closest to M72
-void m72_state::m81_hharry(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m81_hharry)
m72_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharry_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::m81_portmap);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hharry_map)
+ MCFG_DEVICE_IO_MAP(m81_portmap)
- 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_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)
MCFG_VIDEO_START_OVERRIDE(m72_state,hharry)
- m_screen->set_screen_update(FUNC(m72_state::screen_update_m81));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(m72_state, screen_update_m81)
+MACHINE_CONFIG_END
-void m72_state::m81_xmultipl(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m81_xmultipl)
m81_hharry(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::xmultipl_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(xmultipl_map)
MCFG_VIDEO_START_OVERRIDE(m72_state,xmultipl) // different offsets
-}
+MACHINE_CONFIG_END
-void m72_state::m81_dbreed(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m81_dbreed)
m81_xmultipl(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::dbreed_map);
-}
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(dbreed_map)
+MACHINE_CONFIG_END
/****************************************** M84 ***********************************************/
// M84
-void m72_state::rtype2(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::rtype2_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::m84_portmap);
- m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(m72_state::rtype2)
- 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) */
+ /* 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) */
/* 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 */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
+ MCFG_PALETTE_ADD("palette", 512)
- 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_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")
MCFG_VIDEO_START_OVERRIDE(m72_state,rtype2)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
// not m72, different video system (less tiles regions?) (M84? M82?)
-void m72_state::hharryu(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::hharryu)
rtype2(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &m72_state::hharryu_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(hharryu_map)
MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
-}
+MACHINE_CONFIG_END
// M84
-void m72_state::cosmccop(machine_config &config)
-{
- /* basic machine hardware */
- 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);
+MACHINE_CONFIG_START(m72_state::cosmccop)
- 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) */
+ /* 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) */
/* IRQs are generated by main Z80 and YM2151 */
MCFG_MACHINE_START_OVERRIDE(m72_state,kengo)
@@ -2013,18 +2016,18 @@ void m72_state::cosmccop(machine_config &config)
// upd71059c isn't needed because the V35 has its own IRQ controller
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
+ MCFG_PALETTE_ADD("palette", 512)
- 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_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")
MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
void m72_state::kengo(machine_config &config)
{
@@ -2041,53 +2044,52 @@ M82-A-A as the top board
M82-B-A and as the bottom board
*/
-void m72_state::m82(machine_config &config)
-{
+MACHINE_CONFIG_START(m72_state::m82)
+
/* 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::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) */
+ 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) */
/* 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 */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_majtitle);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_majtitle)
+ MCFG_PALETTE_ADD("palette", 512)
- 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_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")
MCFG_VIDEO_START_OVERRIDE(m72_state,m82)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
/* Pound for Pound uses
M85-A-B / M85-B
*/
-void m72_state::poundfor(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::rtype2_map);
- m_maincpu->set_addrmap(AS_IO, &m72_state::poundfor_portmap);
- m_maincpu->set_irq_acknowledge_callback("upd71059c", FUNC(pic8259_device::inta_cb));
+MACHINE_CONFIG_START(m72_state::poundfor)
- 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) */
+ /* 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) */
/* IRQs are generated by main Z80 and YM2151 */
PIC8259(config, m_upd71059c, 0);
@@ -2102,18 +2104,18 @@ void m72_state::poundfor(machine_config &config)
m_upd4701[1]->set_porty_tag("TRACK1_Y");
/* video hardware */
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_rtype2);
- PALETTE(config, m_palette).set_entries(512);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_rtype2)
+ MCFG_PALETTE_ADD("palette", 512)
- 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_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")
MCFG_VIDEO_START_OVERRIDE(m72_state,poundfor)
m72_audio_chips(config);
-}
+MACHINE_CONFIG_END
/***************************************************************************
@@ -2672,49 +2674,6 @@ 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) )
@@ -2949,7 +2908,7 @@ ROM_START( lohtb3 ) // extremely similar to the original. Copyright changed to 1
ROM_RELOAD( 0xe0000, 0x10000 )
ROM_REGION( 0x10000, "mcu", 0 )
- ROM_LOAD( "c8751h.bin", 0x00000, 0x01000, CRC(9c9545f1) SHA1(ca800ce7467efb877d0fff4c47d72478a991e2a9) )
+ ROM_LOAD( "loht-a26.bin", 0x00000, 0x02000, BAD_DUMP CRC(ac901e17) SHA1(70a73288d594c78ad2aca78ce55a699cb040bede) ) // undumped, using the dump from lohtb2 for now
ROM_REGION( 0x080000, "sprites", 0 )
ROM_LOAD( "i-8.8", 0x00000, 0x10000, CRC(df5ac5ee) SHA1(5b45417ada402047d97dfb6cee6545686ad26e37) )
@@ -3873,12 +3832,11 @@ 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 )
+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( 1989, xmultiplm72, xmultipl, m72_xmultipl, xmultipl, m72_state, init_m72_8751, ROT0, "Irem", "X Multiply (Japan, M72)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )