summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <mamehaze@users.noreply.github.com>2015-10-04 12:39:01 +0100
committer David Haywood <mamehaze@users.noreply.github.com>2015-10-04 12:39:01 +0100
commit2da1bb0f8dee1665058b0d6cd1baa2ab8bf9dc8d (patch)
treeb798fb35ac44dbb4670d9f6c861a82c4b8a94efb
parent39e97dc9f43278c222bf12e0164fc520a9955f7e (diff)
new clones
Air Duel (World, M82) [system11, The Dumping Union]
-rw-r--r--src/mame/arcade.lst3
-rw-r--r--src/mame/drivers/m72.c154
-rw-r--r--src/mame/includes/m72.h4
3 files changed, 81 insertions, 80 deletions
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 6059394211d..98a979bc2a9 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -1852,7 +1852,8 @@ dkgensanm72 // (c) 1990 (Japan)
poundfor // (c) 1990 (World)
poundforj // (c) 1990 (Japan)
poundforu // (c) 1990 Irem America (US)
-airduel // (c) 1990 (Japan)
+airduelm72 // (c) 1990 (Japan)
+airduel // (c) 1990 (World)
cosmccop // (c) 1991 (World)
gallop // (c) 1991 (Japan)
ltswords // (c) 1991 (World)
diff --git a/src/mame/drivers/m72.c b/src/mame/drivers/m72.c
index 4bf6607651e..7f0fb223f4b 100644
--- a/src/mame/drivers/m72.c
+++ b/src/mame/drivers/m72.c
@@ -22,7 +22,8 @@ Major Title 1990 M84 N
Hammerin' Harry / Daiku no Gensan 1990 M82(3) N
Daiku no Gensan 1990 M72(4) Y
Pound for Pound 1990 M85 N
-Air Duel 1990 M72? Y
+Air Duel (World) 1990 M82 N
+Air Duel (Japan) 1990 M72? Y
Cosmic Cop / 1991 M84 N
Gallop - Armed Police Unit 1991 M72 N
Ken-Go 1991 ? Encrypted
@@ -458,7 +459,7 @@ WRITE16_MEMBER(m72_state::dbreedm72_sample_trigger_w)
if (ACCESSING_BITS_0_7 && (data & 0xff) < 9) m_audio->set_sample_start(a[data & 0xff]);
}
-WRITE16_MEMBER(m72_state::airduel_sample_trigger_w)
+WRITE16_MEMBER(m72_state::airduelm72_sample_trigger_w)
{
static const int a[16] = {
0x00000, 0x00020, 0x03ec0, 0x05640, 0x06dc0, 0x083a0, 0x0c000, 0x0eb60,
@@ -630,7 +631,7 @@ static const UINT8 dbreedm72_crc[CRC_LEN] = { 0xa4,0x96,0x5f,0xc0, 0xab,0x49,0
0x84,0xe6,0xd6,0xca, 0x00,0x00 };
/* Air Duel */
-static const UINT8 airduel_code[CODE_LEN] =
+static const UINT8 airduelm72_code[CODE_LEN] =
{
0x68,0x00,0xd0, // push 0d000h
0x1f, // pop ds
@@ -640,7 +641,7 @@ static const UINT8 airduel_code[CODE_LEN] =
0xc6,0x06,0xc0,0x1c,0x57, // mov [1cc0h], byte 057h
0xea,0x69,0x0b,0x00,0x00 // jmp 0000:$0b69
};
-static const UINT8 airduel_crc[CRC_LEN] = { 0x72,0x9c,0xca,0x85, 0xc9,0x12,0xcc,0xea,
+static const UINT8 airduelm72_crc[CRC_LEN] = { 0x72,0x9c,0xca,0x85, 0xc9,0x12,0xcc,0xea,
0x00,0x00 };
/* Daiku no Gensan */
@@ -727,10 +728,10 @@ DRIVER_INIT_MEMBER(m72_state,dbreedm72)
m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::dbreedm72_sample_trigger_w),this));
}
-DRIVER_INIT_MEMBER(m72_state,airduel)
+DRIVER_INIT_MEMBER(m72_state,airduelm72)
{
- install_protection_handler(airduel_code,airduel_crc);
- m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::airduel_sample_trigger_w),this));
+ install_protection_handler(airduelm72_code,airduelm72_crc);
+ m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::airduelm72_sample_trigger_w),this));
}
DRIVER_INIT_MEMBER(m72_state,dkgenm72)
@@ -893,6 +894,23 @@ static ADDRESS_MAP_START( hharryu_map, AS_PROGRAM, 16, m72_state )
AM_RANGE(0xffff0, 0xfffff) AM_ROM
ADDRESS_MAP_END
+static ADDRESS_MAP_START( airduelm82_map, AS_PROGRAM, 16, m72_state )
+ AM_RANGE(0x00000, 0x7ffff) AM_ROM
+ AM_RANGE(0xcc000, 0xccbff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
+ AM_RANGE(0xa4000, 0xa4bff) AM_READWRITE(palette2_r, palette2_w) AM_SHARE("paletteram2")
+// AM_RANGE(0xec000, 0xec001) AM_WRITE(irq_line_w)
+ AM_RANGE(0xec000, 0xec001) AM_WRITE(dmaon_w)
+
+ AM_RANGE(0xc0000, 0xc03ff) AM_RAM AM_SHARE("spriteram")
+// AM_RANGE(0xc8000, 0xc83ff) AM_RAM // written to, but not tested?
+
+ AM_RANGE(0xac000, 0xaffff) AM_RAM_WRITE(videoram1_w) AM_SHARE("videoram1")
+ AM_RANGE(0xb0000, 0xb3fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2")
+ AM_RANGE(0xd0000, 0xd3fff) AM_RAM /* work RAM */
+
+ AM_RANGE(0xffff0, 0xfffff) AM_ROM
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( kengo_map, AS_PROGRAM, 16, m72_state )
AM_RANGE(0x00000, 0x7ffff) AM_ROM
AM_RANGE(0xa0000, 0xa0bff) AM_READWRITE(palette1_r, palette1_w) AM_SHARE("paletteram")
@@ -1925,99 +1943,49 @@ static MACHINE_CONFIG_START( rtype2, m72_state )
MCFG_FRAGMENT_ADD(m72_audio_chips)
MACHINE_CONFIG_END
-// not m72, different video system (less tiles regions?)
-static MACHINE_CONFIG_START( dbreed, m72_state )
+// not m72, different video system (less tiles regions?)
+static MACHINE_CONFIG_DERIVED( hharryu, rtype2 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
- MCFG_CPU_PROGRAM_MAP(dbreed_map)
- MCFG_CPU_IO_MAP(hharry_portmap)
-
- MCFG_CPU_ADD("soundcpu",Z80, SOUND_CLOCK)
- MCFG_CPU_PROGRAM_MAP(sound_rom_map)
- MCFG_CPU_IO_MAP(rtype2_sound_portmap)
- MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
- /* IRQs are generated by main Z80 and YM2151 */
-
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(hharryu_map)
MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
- /* video hardware */
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", rtype2)
- MCFG_PALETTE_ADD("palette", 512)
+ MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
+MACHINE_CONFIG_END
- 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,hharry)
+static MACHINE_CONFIG_DERIVED( airduelm82, rtype2 ) // m82
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(airduelm82_map)
- MCFG_FRAGMENT_ADD(m72_audio_chips)
+ MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
MACHINE_CONFIG_END
-// not m72, different video system (less tiles regions?)
-static MACHINE_CONFIG_START( hharry, m72_state )
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
- MCFG_CPU_PROGRAM_MAP(hharry_map)
+// not m72, different video system (less tiles regions?)
+static MACHINE_CONFIG_DERIVED( dbreed, rtype2 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(dbreed_map)
MCFG_CPU_IO_MAP(hharry_portmap)
- MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
- MCFG_CPU_PROGRAM_MAP(sound_rom_map)
- MCFG_CPU_IO_MAP(rtype2_sound_portmap)
- MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
- /* IRQs are generated by main Z80 and YM2151 */
-
-
MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
- /* video hardware */
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", rtype2)
- MCFG_PALETTE_ADD("palette", 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")
-
MCFG_VIDEO_START_OVERRIDE(m72_state,hharry)
-
- MCFG_FRAGMENT_ADD(m72_audio_chips)
-
MACHINE_CONFIG_END
// not m72, different video system (less tiles regions?)
-static MACHINE_CONFIG_START( hharryu, m72_state )
+static MACHINE_CONFIG_DERIVED( hharry, rtype2 )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", V30,MASTER_CLOCK/2/2) /* 16 MHz external freq (8MHz internal) */
- MCFG_CPU_PROGRAM_MAP(hharryu_map)
- MCFG_CPU_IO_MAP(rtype2_portmap)
-
- MCFG_CPU_ADD("soundcpu", Z80, SOUND_CLOCK)
- MCFG_CPU_PROGRAM_MAP(sound_rom_map)
- MCFG_CPU_IO_MAP(rtype2_sound_portmap)
- MCFG_CPU_PERIODIC_INT_DRIVER(m72_state, nmi_line_pulse, 128*55) /* clocked by V1? (Vigilante) */
- /* IRQs are generated by main Z80 and YM2151 */
-
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(hharry_map)
+ MCFG_CPU_IO_MAP(hharry_portmap)
MCFG_MACHINE_RESET_OVERRIDE(m72_state,xmultipl)
- /* video hardware */
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", rtype2)
- MCFG_PALETTE_ADD("palette", 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")
-
- MCFG_VIDEO_START_OVERRIDE(m72_state,hharryu)
-
- MCFG_FRAGMENT_ADD(m72_audio_chips)
-
+ MCFG_VIDEO_START_OVERRIDE(m72_state,hharry)
MACHINE_CONFIG_END
// not m72, different video system (less tiles regions?)
@@ -3368,8 +3336,38 @@ ROM_START( poundforu )
ROM_LOAD( "ppa-v0.bin", 0x00000, 0x40000, CRC(03321664) SHA1(51f2b2b712385c1cd55fd069829efac01838d603) )
ROM_END
+
ROM_START( airduel )
ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "AD_(M82)_A-H0-D.IC52", 0x00001, 0x20000, CRC(dbecc726) SHA1(526e9fdf0ca3af3eae462524df71af8e6bfa85d0) )
+ ROM_LOAD16_BYTE( "AD_(M82)_A-L0-D.IC60", 0x00000, 0x20000, CRC(6a9fcf59) SHA1(a2ae64d290137036c350f84c38054cf6681473a5) )
+ ROM_LOAD16_BYTE( "AD_(M82)_A-H1-D.IC51", 0x40001, 0x20000, CRC(bafc152a) SHA1(e20fa8b832ebfb7a4407fc162f28388858686d61) )
+ ROM_RELOAD( 0xc0001, 0x20000 )
+ ROM_LOAD16_BYTE( "AD_(M82)_A-L1-D.IC59", 0x40000, 0x20000, CRC(9e2b1ae7) SHA1(838ccffb760b464d7d7e108e033a09e6295e5fc8) )
+ ROM_RELOAD( 0xc0000, 0x20000 )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "AD_(M82)_A-SP-D.IC15", 0x00000, 0x10000, CRC(16a858a3) SHA1(51dbac5b37ecb30b46072f5a300a29dc7f7b8542) )
+
+ ROM_REGION( 0x080000, "gfx1", 0 )
+ ROM_LOAD( "AD_(M82)_B-N0-D.IC44", 0x00000, 0x20000, CRC(2f0d599b) SHA1(a966f806b5e25bb98cc63c46c49e0e676a62afcf) ) /* sprites */
+ ROM_LOAD( "AD_(M82)_B-N1-D.IC45", 0x20000, 0x20000, CRC(9865856b) SHA1(b18a06899ae29d45e2351594df544220f3f4485a) )
+ ROM_LOAD( "AD_(M82)_B-N2-D.IC46", 0x40000, 0x20000, CRC(d392aef2) SHA1(0f639a07066cadddc3884eb490885a8745571567) )
+ ROM_LOAD( "AD_(M82)_B-N3-D.IC36", 0x60000, 0x20000, CRC(923240c3) SHA1(f587a83329087a715a3e42110f74f104e8c8ef1f) )
+
+ ROM_REGION( 0x080000, "gfx2", 0 )
+ ROM_LOAD( "AD_(M82)_A-C0-D.IC49", 0x00000, 0x20000, CRC(ce134b47) SHA1(841358cc222c81b8a91edc262f355310d50b4dbb) ) /* tiles #2 */
+ ROM_LOAD( "AD_(M82)_A-C1-D.IC48", 0x20000, 0x20000, CRC(097fd853) SHA1(8e08f4f4a747c899bb8e21b347635e26af9edc2d) )
+ ROM_LOAD( "AD_(M82)_A-C2-D.IC57", 0x40000, 0x20000, CRC(6a94c1b9) SHA1(55174acbac54236e5fc1b80d120cd6da9fe5524c) )
+ ROM_LOAD( "AD_(M82)_A-C3-D.IC56", 0x60000, 0x20000, CRC(6637c349) SHA1(27cb7c89ab73292b43f8ae3c0d803a01ef3d3936) )
+
+ ROM_REGION( 0x20000, "samples", 0 ) /* samples */
+ ROM_LOAD( "AD_(M82)_A-V0-D.IC12", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) )
+ROM_END
+
+
+ROM_START( airduelm72 )
+ ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "ad-c-h0.bin", 0x00001, 0x20000, CRC(12140276) SHA1(f218c5f2e6795b6295dea064817d7d6b1a7762b6) )
ROM_LOAD16_BYTE( "ad-c-l0.bin", 0x00000, 0x20000, CRC(4ac0b91d) SHA1(97e2f633181cd5c25927fd0e2988af2acdb3f388) )
ROM_LOAD16_BYTE( "ad-c-h3.bin", 0x40001, 0x20000, CRC(9f7cfca3) SHA1(becf827aa7749c54f1c435ea224e1fd9c8b3f5f9) )
@@ -3402,6 +3400,7 @@ ROM_START( airduel )
ROM_LOAD( "ad-v0.bin", 0x00000, 0x20000, CRC(339f474d) SHA1(a81bb52598a0e31b2ed6a538755237c5d14d1844) )
ROM_END
+
ROM_START( cosmccop )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD16_BYTE( "cc-d-h0b.bin", 0x00001, 0x40000, CRC(38958b01) SHA1(7d7e217742e33a1fe096adf5bbc93d63ddcfb375) )
@@ -3561,7 +3560,8 @@ GAME( 1990, poundfor, 0, poundfor, poundfor, driver_device, 0,
GAME( 1990, poundforj, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem", "Pound for Pound (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1990, poundforu, poundfor, poundfor, poundfor, driver_device, 0, ROT270, "Irem America", "Pound for Pound (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
-GAME( 1990, airduel, 0, m72, airduel, m72_state, airduel, ROT270, "Irem", "Air Duel (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, airduel, 0, airduelm82, airduel, driver_device, 0, ROT270, "Irem", "Air Duel (World, M82)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, airduelm72, airduel, m72, airduel, m72_state, airduelm72, ROT270, "Irem", "Air Duel (Japan, M72)", MACHINE_SUPPORTS_SAVE )
GAME( 1991, cosmccop, 0, cosmccop, gallop, driver_device, 0, ROT0, "Irem", "Cosmic Cop (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1991, gallop, cosmccop, m72, gallop, m72_state, gallop, ROT0, "Irem", "Gallop - Armed Police Unit (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/m72.h b/src/mame/includes/m72.h
index f0dab51ca7d..91acc3ada96 100644
--- a/src/mame/includes/m72.h
+++ b/src/mame/includes/m72.h
@@ -114,7 +114,7 @@ public:
DECLARE_WRITE16_MEMBER(imgfight_sample_trigger_w);
DECLARE_WRITE16_MEMBER(loht_sample_trigger_w);
DECLARE_WRITE16_MEMBER(dbreedm72_sample_trigger_w);
- DECLARE_WRITE16_MEMBER(airduel_sample_trigger_w);
+ DECLARE_WRITE16_MEMBER(airduelm72_sample_trigger_w);
DECLARE_WRITE16_MEMBER(dkgenm72_sample_trigger_w);
DECLARE_WRITE16_MEMBER(gallop_sample_trigger_w);
DECLARE_READ16_MEMBER(poundfor_trackball_r);
@@ -145,7 +145,7 @@ public:
DECLARE_DRIVER_INIT(gallop);
DECLARE_DRIVER_INIT(m72_8751);
DECLARE_DRIVER_INIT(dbreedm72);
- DECLARE_DRIVER_INIT(airduel);
+ DECLARE_DRIVER_INIT(airduelm72);
DECLARE_DRIVER_INIT(nspirit);
DECLARE_DRIVER_INIT(loht);
DECLARE_DRIVER_INIT(imgfight);