From 74a67618f4492609a1ca37390f880260433b3f19 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 9 Jun 2023 19:04:54 +0200 Subject: [PATCH] avengers: dumped protection mcu [Caps0ff, Phil Bennett] --- src/mame/atari/missile.cpp | 17 ++- src/mame/capcom/lwings.cpp | 193 ++++++++++++++++++----------------- src/mame/capcom/lwings.h | 80 ++++++++------- src/mame/capcom/lwings_v.cpp | 2 +- src/mame/seibu/toki.cpp | 3 - src/mame/taito/rollrace.cpp | 52 +++++----- 6 files changed, 182 insertions(+), 165 deletions(-) diff --git a/src/mame/atari/missile.cpp b/src/mame/atari/missile.cpp index a8ac1ee8193..5a9ca41a6e3 100644 --- a/src/mame/atari/missile.cpp +++ b/src/mame/atari/missile.cpp @@ -424,8 +424,9 @@ private: u8 trampoline_r(offs_t offset); void trampoline_w(offs_t offset, uint8_t data); - void missilea_map(address_map &map); + void base_map(address_map &map); void missile_map(address_map &map); + void missilea_map(address_map &map); void mcombat_map(address_map &map); required_device m_maincpu; @@ -810,7 +811,7 @@ void missile_state::trampoline_map(address_map &map) map(0x0000, 0xffff).rw(FUNC(missile_state::trampoline_r), FUNC(missile_state::trampoline_w)); } -void missile_state::missilea_map(address_map &map) +void missile_state::base_map(address_map &map) { map.unmap_value_high(); map.global_mask(0x7fff); @@ -826,10 +827,16 @@ void missile_state::missilea_map(address_map &map) void missile_state::missile_map(address_map &map) { - missilea_map(map); + base_map(map); map(0x4000, 0x400f).mirror(0x07f0).rw(m_pokey, FUNC(pokey_device::read), FUNC(pokey_device::write)); } +void missile_state::missilea_map(address_map &map) +{ + base_map(map); + map(0x4000, 0x4000).mirror(0x00ff).portr("R8"); // also sound +} + void missile_state::mcombat_map(address_map &map) { missilea_map(map); @@ -1104,7 +1111,7 @@ ROM_START( missilem ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 ) // banked, decrypted rom goes here ROM_REGION( 0x10000, "user1", 0 ) - ROM_LOAD("mcm001d.512", 0x00000, 0x10000, CRC(0a5845b5) SHA1(4828866018a984e7cd7f55a33613f43ece5d8d63) ) + ROM_LOAD( "mcm001d.512", 0x00000, 0x10000, CRC(0a5845b5) SHA1(4828866018a984e7cd7f55a33613f43ece5d8d63) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "035826-01.l6", 0x0000, 0x0020, CRC(86a22140) SHA1(2beebf7855e29849ada1823eae031fc98220bc43) ) @@ -1198,7 +1205,7 @@ ROM_START( missilea ) ROM_LOAD( "5.1n", 0x7000, 0x0800, CRC(df8c58f4) SHA1(44a0cdb0e5222e14e3e91547c35e73b2cf2df174) ) ROM_LOAD( "6.1r", 0x7800, 0x0800, CRC(96a21c1f) SHA1(6e43ce8d53aa6d38cef920e7fa2e0683ce42cdb4) ) - ROM_REGION( 0x800, "unknown", 0 ) + ROM_REGION( 0x800, "samples", 0 ) ROM_LOAD( "2708.10c", 0x0000, 0x0400, CRC(9f6978c4) SHA1(34b356fddd86b8b73ee1415b3ad6b00dc4be60e2) ) ROM_LOAD( "2708.10e", 0x0400, 0x0400, CRC(90eb28c8) SHA1(c82bc0a00d9e54004b0210f95343c8d7dc1f2050) ) diff --git a/src/mame/capcom/lwings.cpp b/src/mame/capcom/lwings.cpp index c6fad8f7b4b..adc80906bc0 100644 --- a/src/mame/capcom/lwings.cpp +++ b/src/mame/capcom/lwings.cpp @@ -14,7 +14,7 @@ To Do: increment twice per coin. - clean up Avengers protection; it currently checks against hard-coded program counter rather than behaving as a memory-mapped black box. -- Avengers had a protection chip underneath the sound module. Needs dumping. +- Avengers had a protection chip underneath the sound module. Needs to be hooked up. The protection is extensive: palette data, calculates player movement, even a hand in the sound. The angle/movement stuff isn't 100% accurate either. - accurate music tempo (audiocpu irq freq) @@ -293,7 +293,7 @@ void lwings_state::msm5205_w(uint8_t data) m_msm->vclk_w(0); } -void lwings_state::avengers_map(address_map &map) +void lwings_state::buraikenb_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0xbfff).bankr("bank1"); @@ -309,15 +309,24 @@ void lwings_state::avengers_map(address_map &map) map(0xf804, 0xf804).w(FUNC(lwings_state::trojan_bg2_scrollx_w)); map(0xf805, 0xf805).w(FUNC(lwings_state::trojan_bg2_image_w)); - map(0xf808, 0xf808).portr("SERVICE").nopw(); /* ? */ - map(0xf809, 0xf809).portr("P1").w(FUNC(lwings_state::avengers_protection_w)); + map(0xf808, 0xf808).portr("SERVICE").nopw(); // ? + map(0xf809, 0xf809).portr("P1"); map(0xf80a, 0xf80a).portr("P2"); map(0xf80b, 0xf80b).portr("DSWB"); - map(0xf80c, 0xf80c).portr("DSWA").w(FUNC(lwings_state::avengers_prot_bank_w)); - map(0xf80d, 0xf80d).rw(FUNC(lwings_state::avengers_protection_r), FUNC(lwings_state::avengers_adpcm_w)); + map(0xf80c, 0xf80c).portr("DSWA").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf80d, 0xf80d).w(FUNC(lwings_state::avengers_adpcm_w)); map(0xf80e, 0xf80e).w(FUNC(lwings_state::lwings_bankswitch_w)); } +void lwings_state::avengers_map(address_map &map) +{ + buraikenb_map(map); + + map(0xf809, 0xf809).w(FUNC(lwings_state::avengers_protection_w)); + map(0xf80c, 0xf80c).w(FUNC(lwings_state::avengers_prot_bank_w)); + map(0xf80d, 0xf80d).r(FUNC(lwings_state::avengers_protection_r)); +} + void lwings_state::lwings_map(address_map &map) { map(0x0000, 0x7fff).rom(); @@ -377,7 +386,6 @@ void lwings_state::lwings_sound_map(address_map &map) } - void lwings_state::fball_map(address_map &map) { map(0x0000, 0x7fff).bankr("bank2"); @@ -403,8 +411,6 @@ void lwings_state::fball_map(address_map &map) } - - void lwings_state::fball_oki_bank_w(uint8_t data) { //printf("fball_oki_bank_w %02x\n", data); @@ -421,13 +427,9 @@ void lwings_state::fball_oki_map(address_map &map) void lwings_state::fball_sound_map(address_map &map) { map(0x0000, 0x0fff).rom(); - map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); - - map(0xA000, 0xA000).w(FUNC(lwings_state::fball_oki_bank_w)); - + map(0xa000, 0xa000).w(FUNC(lwings_state::fball_oki_bank_w)); map(0xc000, 0xc7ff).ram(); - map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); } @@ -451,6 +453,7 @@ void lwings_state::trojan_adpcm_io_map(address_map &map) map(0x01, 0x01).w(FUNC(lwings_state::msm5205_w)); } + /************************************* * * Generic port definitions @@ -489,6 +492,7 @@ static INPUT_PORTS_START( lwings_generic ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ INPUT_PORTS_END + /************************************* * * Game-specific port definitions @@ -619,7 +623,6 @@ static INPUT_PORTS_START( fball ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START4 ) - PORT_START("DSWA") // only one set of dipswitches PORT_DIPNAME( 0x01, 0x01, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SWA:1") PORT_DIPSETTING( 0x01, DEF_STR( Easy ) ) @@ -784,6 +787,7 @@ static INPUT_PORTS_START( avengers ) PORT_DIPSETTING( 0x00, "6" ) INPUT_PORTS_END + /************************************* * * Graphics definitions @@ -854,6 +858,7 @@ static GFXDECODE_START( gfx_trojan ) GFXDECODE_ENTRY( "gfx4", 0, bg2_tilelayout, 0, 8 ) /* colors 0-127 */ GFXDECODE_END + /************************************* * * Machine driver @@ -936,18 +941,18 @@ void lwings_state::machine_reset() void lwings_state::lwings(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */ + // basic machine hardware + Z80(config, m_maincpu, 12_MHz_XTAL/2); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map); - Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */ + Z80(config, m_soundcpu, 12_MHz_XTAL/4); // verified on PCB m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map); m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); // above frequency is an approximation from PCB music recording - where is the frequency actually derived from? WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware BUFFERED_SPRITERAM8(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -963,18 +968,18 @@ void lwings_state::lwings(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - ym2203_device &ym2203a(YM2203(config, "2203a", XTAL(12'000'000)/8)); /* verified on PCB */ + ym2203_device &ym2203a(YM2203(config, "2203a", 12_MHz_XTAL/8)); // verified on PCB ym2203a.add_route(0, "mono", 0.20); ym2203a.add_route(1, "mono", 0.20); ym2203a.add_route(2, "mono", 0.20); ym2203a.add_route(3, "mono", 0.10); - ym2203_device &ym2203b(YM2203(config, "2203b", XTAL(12'000'000)/8)); /* verified on PCB */ + ym2203_device &ym2203b(YM2203(config, "2203b", 12_MHz_XTAL/8)); // verified on PCB ym2203b.add_route(0, "mono", 0.20); ym2203b.add_route(1, "mono", 0.20); ym2203b.add_route(2, "mono", 0.20); @@ -985,24 +990,24 @@ void lwings_state::sectionz(machine_config &config) { lwings(config); - m_maincpu->set_clock(XTAL(12'000'000)/4); // XTAL and clock verified on an original PCB and on a bootleg with ROMs matching those of sectionza + m_maincpu->set_clock(12_MHz_XTAL/4); // XTAL and clock verified on an original PCB and on a bootleg with ROMs matching those of sectionza subdevice("screen")->set_refresh_hz(55.37); // verified on an original PCB } void lwings_state::fball(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(12'000'000)/2); + // basic machine hardware + Z80(config, m_maincpu, 12_MHz_XTAL/2); m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map); - Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ? + Z80(config, m_soundcpu, 12_MHz_XTAL/4); // ? m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map); -// m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); + //m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware BUFFERED_SPRITERAM8(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -1018,12 +1023,12 @@ void lwings_state::fball(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified + okim6295_device &oki(OKIM6295(config, "oki", 12_MHz_XTAL/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); oki.set_addrmap(0, &lwings_state::fball_oki_map); } @@ -1032,28 +1037,28 @@ void lwings_state::trojan(machine_config &config) { lwings(config); - /* basic machine hardware */ - m_maincpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */ + // basic machine hardware + m_maincpu->set_clock(12_MHz_XTAL/4); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_map); - m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */ + m_soundcpu->set_clock(12_MHz_XTAL/4); // verified on PCB - z80_device &adpcm(Z80(config, "adpcm", XTAL(12'000'000)/4)); /* verified on PCB */ - adpcm.set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map); - adpcm.set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map); - adpcm.set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000)); + Z80(config, m_adpcmcpu, 12_MHz_XTAL/4); // verified on PCB + m_adpcmcpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map); + m_adpcmcpu->set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map); + m_adpcmcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000)); - /* video hardware */ + // video hardware m_gfxdecode->set_info(gfx_trojan); MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan) subdevice("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan)); - /* sound hardware */ + // sound hardware GENERIC_LATCH_8(config, "soundlatch2"); - MSM5205(config, m_msm, XTAL(384'000)); /* verified on PCB */ - m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* slave mode */ + MSM5205(config, m_msm, 384_kHz_XTAL); // verified on PCB + m_msm->set_prescaler_selector(msm5205_device::SEX_4B); // slave mode m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); } @@ -1061,24 +1066,31 @@ void lwings_state::avengers(machine_config &config) { trojan(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map); + I8751(config, m_mcu, 12_MHz_XTAL/2); + screen_device &screen(*subdevice("screen")); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); screen.screen_vblank().append(FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software - subdevice("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map); + m_adpcmcpu->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map); - /* video hardware */ + // video hardware MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers) } -void lwings_state::avengersb(machine_config &config) +void lwings_state::buraikenb(machine_config &config) { avengers(config); - /* video hardware */ - MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb) + + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::buraikenb_map); + config.device_remove("mcu"); + + // video hardware + MCFG_VIDEO_START_OVERRIDE(lwings_state,buraikenb) } @@ -1360,7 +1372,7 @@ ROM_START( trojan ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) ROM_REGION( 0x04000, "gfx1", 0 ) @@ -1407,7 +1419,7 @@ ROM_START( trojana ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) ROM_REGION( 0x04000, "gfx1", 0 ) @@ -1454,7 +1466,7 @@ ROM_START( trojanr ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) ROM_REGION( 0x04000, "gfx1", 0 ) @@ -1501,7 +1513,7 @@ ROM_START( trojanj ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) ROM_REGION( 0x04000, "gfx1", 0 ) @@ -1548,7 +1560,7 @@ ROM_START( trojanlt ) // titled Trojan but only shows Capcom like the Japanese v ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ ROM_LOAD( "tb01.3f", 0x0000, 0x8000, CRC(83c715b2) SHA1(0c69c086657f91828a639ff7c72c703a27ade710) ) // 1xxxxxxxxxxxxxx = 0xFF ROM_REGION( 0x04000, "gfx1", 0 ) @@ -1595,7 +1607,7 @@ ROM_START( trojanb ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "2.6q", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ ROM_LOAD( "1.3f", 0x0000, 0x8000, CRC(83c715b2) SHA1(0c69c086657f91828a639ff7c72c703a27ade710) ) // different ROM_REGION( 0x04000, "gfx1", 0 ) @@ -1653,11 +1665,11 @@ ROM_START( avengers ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + ROM_LOAD( "av.13k", 0x0000, 0x1000, CRC(505a0987) SHA1(ea1d855a9870d79d0e00eaa88a23038355a1203a) ) ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1703,11 +1715,11 @@ ROM_START( avengersa ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + ROM_LOAD( "av.13k", 0x0000, 0x1000, CRC(505a0987) SHA1(ea1d855a9870d79d0e00eaa88a23038355a1203a) ) ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1753,11 +1765,11 @@ ROM_START( avengersb ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + ROM_LOAD( "av.13k", 0x0000, 0x1000, CRC(505a0987) SHA1(ea1d855a9870d79d0e00eaa88a23038355a1203a) ) ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1803,11 +1815,11 @@ ROM_START( avengersc ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + ROM_LOAD( "av.13k", 0x0000, 0x1000, CRC(505a0987) SHA1(ea1d855a9870d79d0e00eaa88a23038355a1203a) ) ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1853,11 +1865,11 @@ ROM_START( buraiken ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + ROM_LOAD( "av.13k", 0x0000, 0x1000, CRC(505a0987) SHA1(ea1d855a9870d79d0e00eaa88a23038355a1203a) ) ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1896,14 +1908,14 @@ ROM_END ROM_START( buraikenb ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "a4", 0x00000, 0x8000, CRC(b4ac7928) SHA1(4a525532f634dd9e800dc3dbd1230a5c431f869a) ) - ROM_LOAD( "a6", 0x10000, 0x8000, CRC(b1c6d40d) SHA1(d150adace829130ebf99b8beeedde0e673124984) ) - ROM_LOAD( "av_05.12n", 0x18000, 0x8000, CRC(9a214b42) SHA1(e13d47dcf9fa055fef467a10751badffcc3b8734) ) + ROM_LOAD( "a4", 0x00000, 0x8000, CRC(b4ac7928) SHA1(4a525532f634dd9e800dc3dbd1230a5c431f869a) ) + ROM_LOAD( "a6", 0x10000, 0x8000, CRC(b1c6d40d) SHA1(d150adace829130ebf99b8beeedde0e673124984) ) + ROM_LOAD( "av_05.12n", 0x18000, 0x8000, CRC(9a214b42) SHA1(e13d47dcf9fa055fef467a10751badffcc3b8734) ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "a2", 0x0000, 0x8000, CRC(5e991c96) SHA1(1866f38043f61244b65213544fa5ec5d6d82f96f) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ ROM_REGION( 0x08000, "gfx1", 0 ) @@ -1942,41 +1954,34 @@ ROM_START( buraikenb ) ROM_END -void lwings_state::init_avengersb() -{ - // set up protection handlers - m_maincpu->space(AS_PROGRAM).install_write_handler(0xf80c, 0xf80c, write8smo_delegate(*m_soundlatch, FUNC(generic_latch_8_device::write))); -} - - /************************************* * * Game driver(s) * *************************************/ -GAME( 1985, sectionz, 0, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, sectionza, sectionz, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sectionz, 0, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sectionza, sectionz, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwings, 0, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwings2, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsj, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsja, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan, rev. A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsb, lwings, lwings, lwingsb, lwings_state, empty_init, ROT90, "bootleg", "Legendary Wings (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwings, 0, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwings2, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsj, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsja, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan, rev. A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsb, lwings, lwings, lwingsb, lwings_state, empty_init, ROT90, "bootleg", "Legendary Wings (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojan, 0, trojan, trojanls, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojana, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanr, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom (Romstar license)", "Trojan (Romstar)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanj, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Tatakai no Banka (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanb, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "bootleg", "Trojan (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanlt, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Trojan (location test)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojan, 0, trojan, trojanls, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojana, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanr, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom (Romstar license)", "Trojan (Romstar)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanj, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Tatakai no Banka (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanb, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "bootleg", "Trojan (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanlt, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Trojan (location test)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengers, 0, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengersa, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengersb, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengersc, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, unknown revision)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, buraiken, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Hissatsu Buraiken (Japan, revision A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, buraikenb, avengers, avengersb, avengers, lwings_state, init_avengersb, ROT90, "Capcom", "Hissatsu Buraiken (Japan, bootleg?)", MACHINE_SUPPORTS_SAVE ) // unprotected at least +GAME( 1987, avengers, 0, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengersa, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengersb, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengersc, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, unknown revision)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, buraiken, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Hissatsu Buraiken (Japan, revision A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, buraikenb, avengers, buraikenb, avengers, lwings_state, empty_init, ROT90, "Capcom", "Hissatsu Buraiken (Japan, unprotected)", MACHINE_SUPPORTS_SAVE ) // cloned lwings hardware -GAME( 1992, fball, 0, fball, fball, lwings_state, empty_init, ROT0, "FM Work", "Fire Ball (FM Work)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fball, 0, fball, fball, lwings_state, empty_init, ROT0, "FM Work", "Fire Ball (FM Work)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/capcom/lwings.h b/src/mame/capcom/lwings.h index 8191d70a862..9133d6cf28e 100644 --- a/src/mame/capcom/lwings.h +++ b/src/mame/capcom/lwings.h @@ -1,37 +1,39 @@ // license:BSD-3-Clause // copyright-holders:Paul Leaman +#include "cpu/mcs51/mcs51.h" #include "video/bufsprite.h" #include "machine/gen_latch.h" #include "sound/msm5205.h" + #include "emupal.h" #include "tilemap.h" class lwings_state : public driver_device { public: - lwings_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_spriteram(*this, "spriteram"), - m_fgvideoram(*this, "fgvideoram"), - m_bg1videoram(*this, "bg1videoram"), - m_soundlatch2(*this, "soundlatch_2"), - m_nmi_mask(0), + lwings_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_soundcpu(*this, "soundcpu"), + m_adpcmcpu(*this, "adpcmcpu"), + m_mcu(*this, "mcu"), m_msm(*this, "5205"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch") { } + m_soundlatch(*this, "soundlatch"), + m_spriteram(*this, "spriteram"), + m_fgvideoram(*this, "fgvideoram"), + m_bg1videoram(*this, "bg1videoram"), + m_soundlatch2(*this, "soundlatch_2") + { } void lwings(machine_config &config); void sectionz(machine_config &config); void trojan(machine_config &config); void fball(machine_config &config); void avengers(machine_config &config); - void avengersb(machine_config &config); - - void init_avengersb(); + void buraikenb(machine_config &config); protected: virtual void machine_start() override; @@ -39,29 +41,39 @@ protected: virtual void video_start() override; private: - /* memory pointers */ + // devices + required_device m_maincpu; + required_device m_soundcpu; + optional_device m_adpcmcpu; + optional_device m_mcu; + optional_device m_msm; + required_device m_gfxdecode; + required_device m_palette; + required_device m_soundlatch; + + // memory pointers required_device m_spriteram; required_shared_ptr m_fgvideoram; required_shared_ptr m_bg1videoram; optional_shared_ptr m_soundlatch2; - /* video-related */ - tilemap_t *m_fg_tilemap = nullptr; - tilemap_t *m_bg1_tilemap = nullptr; - tilemap_t *m_bg2_tilemap = nullptr; - uint8_t m_bg2_image = 0U; - int m_bg2_avenger_hw = 0; - int m_spr_avenger_hw = 0; - uint8_t m_scroll_x[2]{}; - uint8_t m_scroll_y[2]{}; + // video-related + tilemap_t *m_fg_tilemap = nullptr; + tilemap_t *m_bg1_tilemap = nullptr; + tilemap_t *m_bg2_tilemap = nullptr; + uint8_t m_bg2_image = 0U; + int m_bg2_avenger_hw = 0; + int m_spr_avenger_hw = 0; + uint8_t m_scroll_x[2]{}; + uint8_t m_scroll_y[2]{}; - /* misc */ - uint8_t m_param[4]{}; - int m_palette_pen = 0; - uint8_t m_soundstate = 0U; - uint8_t m_adpcm = 0U; - uint8_t m_nmi_mask = 0U; - int m_sprbank = 0; + // misc + uint8_t m_param[4]{}; + int m_palette_pen = 0; + uint8_t m_soundstate = 0U; + uint8_t m_adpcm = 0U; + uint8_t m_nmi_mask = 0U; + int m_sprbank = 0; void avengers_adpcm_w(uint8_t data); uint8_t avengers_adpcm_r(); @@ -86,7 +98,7 @@ private: TILE_GET_INFO_MEMBER(get_bg2_tile_info); DECLARE_VIDEO_START(trojan); DECLARE_VIDEO_START(avengers); - DECLARE_VIDEO_START(avengersb); + DECLARE_VIDEO_START(buraikenb); uint32_t screen_update_lwings(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_trojan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void lwings_interrupt(int state); @@ -94,15 +106,11 @@ private: inline int is_sprite_on( uint8_t *buffered_spriteram, int offs ); void lwings_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); void trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); - int avengers_fetch_paldata( ); - required_device m_maincpu; - required_device m_soundcpu; - optional_device m_msm; - required_device m_gfxdecode; - required_device m_palette; - required_device m_soundlatch; + int avengers_fetch_paldata(); + void avengers_adpcm_io_map(address_map &map); void avengers_map(address_map &map); + void buraikenb_map(address_map &map); void fball_map(address_map &map); void fball_oki_map(address_map &map); void fball_sound_map(address_map &map); diff --git a/src/mame/capcom/lwings_v.cpp b/src/mame/capcom/lwings_v.cpp index 76c7897dede..63d81c185f9 100644 --- a/src/mame/capcom/lwings_v.cpp +++ b/src/mame/capcom/lwings_v.cpp @@ -105,7 +105,7 @@ VIDEO_START_MEMBER(lwings_state,avengers) m_spr_avenger_hw = 1; } -VIDEO_START_MEMBER(lwings_state,avengersb) +VIDEO_START_MEMBER(lwings_state,buraikenb) { VIDEO_START_CALL_MEMBER(trojan); m_bg2_avenger_hw = 0; diff --git a/src/mame/seibu/toki.cpp b/src/mame/seibu/toki.cpp index 47b9d77b2c8..e73eb9f0f0b 100644 --- a/src/mame/seibu/toki.cpp +++ b/src/mame/seibu/toki.cpp @@ -6,9 +6,6 @@ Toki driver by Jarek Parchanski -Coin inputs are handled by the sound CPU, so they don't work with sound -disabled. Use the service switch instead. - Mametesters bug tokiu056gre - "tokiu: "0000000" is always displayed as the top hiscore during gameplay, regardless of what it actually is. This does not happen in the other Toki sets." diff --git a/src/mame/taito/rollrace.cpp b/src/mame/taito/rollrace.cpp index 9b3dfc9677c..e5484889f2c 100644 --- a/src/mame/taito/rollrace.cpp +++ b/src/mame/taito/rollrace.cpp @@ -41,6 +41,7 @@ public: rollrace_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_audiocpu(*this, "audiocpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), m_videoram(*this, "videoram"), @@ -50,7 +51,7 @@ public: { } void rollace2(machine_config &config); - void rollrace(machine_config &config); + void rollace(machine_config &config); protected: virtual void machine_start() override; @@ -58,6 +59,7 @@ protected: private: required_device m_maincpu; + required_device m_audiocpu; required_device m_gfxdecode; required_device m_palette; required_shared_ptr m_videoram; @@ -280,7 +282,7 @@ uint32_t rollrace_state::screen_update(screen_device &screen, bitmap_ind16 &bitm } // sprites - for (int offs = 0x80-4; offs >=0x0; offs -= 4) + for (int offs = 0x80-4; offs >= 0x0; offs -= 4) { int s_flipy = 0; @@ -362,7 +364,7 @@ void rollrace_state::coin_counter_w(int state) void rollrace_state::main_map(address_map &map) { map(0x0000, 0x7fff).rom(); - map(0x8000, 0x9fff).rom(); // only rollace2 + map(0x8000, 0x9fff).rom(); // only rollace2 map(0xc000, 0xcfff).ram(); map(0xd806, 0xd806).nopr(); // looks like a watchdog, bit 4 checked map(0xd900, 0xd900).rw(FUNC(rollrace_state::fake_d900_r), FUNC(rollrace_state::fake_d900_w)); // protection ?? @@ -393,7 +395,7 @@ void rollrace_state::sound_map(address_map &map) } -static INPUT_PORTS_START( rollrace ) +static INPUT_PORTS_START( rollace ) PORT_START("P1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY @@ -519,7 +521,7 @@ static const gfx_layout spritelayout = 32*32 // every sprite takes 128 consecutive bytes }; -static GFXDECODE_START( gfx_rollrace ) +static GFXDECODE_START( gfx_rollace ) GFXDECODE_ENTRY( "chars", 0x0000, charlayout, 0, 32 ) GFXDECODE_ENTRY( "chars", 0x0800, charlayout, 0, 32 ) GFXDECODE_ENTRY( "chars", 0x1000, charlayout, 0, 32 ) @@ -542,15 +544,15 @@ INTERRUPT_GEN_MEMBER(rollrace_state::sound_timer_irq) device.execute().pulse_input_line(INPUT_LINE_NMI, attotime::zero); } -void rollrace_state::rollrace(machine_config &config) +void rollrace_state::rollace(machine_config &config) { // basic machine hardware Z80(config, m_maincpu, XTAL(24'000'000) / 8); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &rollrace_state::main_map); - z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000) / 16)); // verified on PCB - audiocpu.set_addrmap(AS_PROGRAM, &rollrace_state::sound_map); - audiocpu.set_periodic_int(FUNC(rollrace_state::sound_timer_irq), attotime::from_hz(4 * 60)); + Z80(config, m_audiocpu, XTAL(24'000'000) / 16); // verified on PCB + m_audiocpu->set_addrmap(AS_PROGRAM, &rollrace_state::sound_map); + m_audiocpu->set_periodic_int(FUNC(rollrace_state::sound_timer_irq), attotime::from_hz(4 * 60)); ls259_device &mainlatch(LS259(config, "mainlatch")); mainlatch.q_out_cb<0>().set(FUNC(rollrace_state::flipx_w)); @@ -571,7 +573,7 @@ void rollrace_state::rollrace(machine_config &config) screen.set_palette(m_palette); screen.screen_vblank().set(FUNC(rollrace_state::vblank_irq)); - GFXDECODE(config, m_gfxdecode, m_palette, gfx_rollrace); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_rollace); PALETTE(config, m_palette, FUNC(rollrace_state::palette), 256); // sound hardware @@ -581,15 +583,13 @@ void rollrace_state::rollrace(machine_config &config) GENERIC_LATCH_8(config, "soundlatch"); AY8910(config, "ay1", XTAL(24'000'000) / 16).add_route(ALL_OUTPUTS, "rspeaker", 0.10); // verified on PCB - AY8910(config, "ay2", XTAL(24'000'000) / 16).add_route(ALL_OUTPUTS, "rspeaker", 0.10); // verified on PCB - AY8910(config, "ay3", XTAL(24'000'000) / 16).add_route(ALL_OUTPUTS, "lspeaker", 0.10); // verified on PCB } void rollrace_state::rollace2(machine_config &config) { - rollrace(config); + rollace(config); // basic machine hardware @@ -642,9 +642,9 @@ ROM_START( fightrol ) ROM_LOAD ( "4.18d", 0x6000, 0x2000, CRC(3d9e16ab) SHA1(e99628ffc54e3ff4818313a287ca111617120910) ) ROM_REGION( 0x300, "proms", 0 ) // colour - ROM_LOAD("tbp24s10.7u", 0x0000, 0x0100, CRC(9d199d33) SHA1(b8982f7da2b85f10d117177e4e73cbb486931cf5) ) - ROM_LOAD("tbp24s10.7t", 0x0100, 0x0100, CRC(c0426582) SHA1(8e3e4d1e76243cce272aa099d2d6ad4fa6c99f7c) ) - ROM_LOAD("tbp24s10.6t", 0x0200, 0x0100, CRC(c096e05c) SHA1(cb5b509e6124453f381a683ba446f8f4493d4610) ) + ROM_LOAD( "tbp24s10.7u", 0x0000, 0x0100, CRC(9d199d33) SHA1(b8982f7da2b85f10d117177e4e73cbb486931cf5) ) + ROM_LOAD( "tbp24s10.7t", 0x0100, 0x0100, CRC(c0426582) SHA1(8e3e4d1e76243cce272aa099d2d6ad4fa6c99f7c) ) + ROM_LOAD( "tbp24s10.6t", 0x0200, 0x0100, CRC(c096e05c) SHA1(cb5b509e6124453f381a683ba446f8f4493d4610) ) ROM_REGION( 0x1000, "audiocpu", 0 ) ROM_LOAD( "8.6f", 0x0000, 0x1000, CRC(6ec3c545) SHA1(1a2477b9e1563734195b0743f5dbbb005e06022e) ) @@ -689,9 +689,9 @@ ROM_START( rollace ) ROM_LOAD ( "4.18d", 0x6000, 0x2000, CRC(3d9e16ab) SHA1(e99628ffc54e3ff4818313a287ca111617120910) ) ROM_REGION( 0x300, "proms", 0 ) // colour - ROM_LOAD("tbp24s10.7u", 0x0000, 0x0100, CRC(9d199d33) SHA1(b8982f7da2b85f10d117177e4e73cbb486931cf5) ) - ROM_LOAD("tbp24s10.7t", 0x0100, 0x0100, CRC(c0426582) SHA1(8e3e4d1e76243cce272aa099d2d6ad4fa6c99f7c) ) - ROM_LOAD("tbp24s10.6t", 0x0200, 0x0100, CRC(c096e05c) SHA1(cb5b509e6124453f381a683ba446f8f4493d4610) ) + ROM_LOAD( "tbp24s10.7u", 0x0000, 0x0100, CRC(9d199d33) SHA1(b8982f7da2b85f10d117177e4e73cbb486931cf5) ) + ROM_LOAD( "tbp24s10.7t", 0x0100, 0x0100, CRC(c0426582) SHA1(8e3e4d1e76243cce272aa099d2d6ad4fa6c99f7c) ) + ROM_LOAD( "tbp24s10.6t", 0x0200, 0x0100, CRC(c096e05c) SHA1(cb5b509e6124453f381a683ba446f8f4493d4610) ) ROM_REGION( 0x1000, "audiocpu", 0 ) ROM_LOAD( "8.6f", 0x0000, 0x1000, CRC(6ec3c545) SHA1(1a2477b9e1563734195b0743f5dbbb005e06022e) ) @@ -737,9 +737,9 @@ ROM_START( rollace2 ) ROM_LOAD ( "4.18d", 0x6000, 0x2000, CRC(3d9e16ab) SHA1(e99628ffc54e3ff4818313a287ca111617120910) ) ROM_REGION( 0x300, "proms", 0 ) // colour - ROM_LOAD("tbp24s10.7u", 0x0000, 0x0100, CRC(9d199d33) SHA1(b8982f7da2b85f10d117177e4e73cbb486931cf5) ) - ROM_LOAD("tbp24s10.7t", 0x0100, 0x0100, CRC(c0426582) SHA1(8e3e4d1e76243cce272aa099d2d6ad4fa6c99f7c) ) - ROM_LOAD("tbp24s10.6t", 0x0200, 0x0100, CRC(c096e05c) SHA1(cb5b509e6124453f381a683ba446f8f4493d4610) ) + ROM_LOAD( "tbp24s10.7u", 0x0000, 0x0100, CRC(9d199d33) SHA1(b8982f7da2b85f10d117177e4e73cbb486931cf5) ) + ROM_LOAD( "tbp24s10.7t", 0x0100, 0x0100, CRC(c0426582) SHA1(8e3e4d1e76243cce272aa099d2d6ad4fa6c99f7c) ) + ROM_LOAD( "tbp24s10.6t", 0x0200, 0x0100, CRC(c096e05c) SHA1(cb5b509e6124453f381a683ba446f8f4493d4610) ) ROM_REGION( 0x1000, "audiocpu", 0 ) ROM_LOAD( "8.6f", 0x0000, 0x1000, CRC(6ec3c545) SHA1(1a2477b9e1563734195b0743f5dbbb005e06022e) ) @@ -747,7 +747,7 @@ ROM_END } // anonymous namespace - -GAME( 1983, fightrol, 0, rollrace, rollrace, rollrace_state, empty_init, ROT270, "Kaneko (Taito license)", "Fighting Roller", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, rollace, fightrol, rollrace, rollrace, rollrace_state, empty_init, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, rollace2, fightrol, rollace2, rollrace, rollrace_state, empty_init, ROT90, "Kaneko (Williams license)", "Roller Aces (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT SCREEN COMPANY, FULLNAME, FLAGS +GAME( 1983, fightrol, 0, rollace, rollace, rollrace_state, empty_init, ROT270, "Kaneko (Taito license)", "Fighting Roller", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, rollace, fightrol, rollace, rollace, rollrace_state, empty_init, ROT270, "Kaneko (Williams license)", "Roller Aces (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, rollace2, fightrol, rollace2, rollace, rollrace_state, empty_init, ROT90, "Kaneko (Williams license)", "Roller Aces (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )