summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2021-03-19 16:40:31 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2021-03-19 16:40:31 +0100
commite796dc27357cf5c615e906948f0c6d25b1b89f06 (patch)
tree813bbc27938c4f9493efcbcc3c8cfba97392a847
parent931f85ee2709b8630c571c53be10e280fd4ed3bb (diff)
New working clones
------------------ Task Force Harrier (Lettering bootleg) [hammy, EMG] US AAF Mustang (Lettering bootleg) [hammy, Doctor Pinball]
-rw-r--r--src/mame/drivers/menghong.cpp2
-rw-r--r--src/mame/drivers/nmk16.cpp159
-rw-r--r--src/mame/includes/nmk16.h4
-rw-r--r--src/mame/mame.lst2
4 files changed, 164 insertions, 3 deletions
diff --git a/src/mame/drivers/menghong.cpp b/src/mame/drivers/menghong.cpp
index ab9b0892416..3d478895151 100644
--- a/src/mame/drivers/menghong.cpp
+++ b/src/mame/drivers/menghong.cpp
@@ -294,7 +294,7 @@ uint32_t menghong_state::key_r()
int mux = (m_pio >> 8) & 0x1f;
uint8_t data = 0x3f;
- for (int i = 0; i < 5; ++i)
+ for (int i = 0; i < m_keys.size(); ++i)
if (!BIT(mux,i))
data = m_keys[i]->read();
diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp
index a154282d3b3..728233e0b23 100644
--- a/src/mame/drivers/nmk16.cpp
+++ b/src/mame/drivers/nmk16.cpp
@@ -560,6 +560,26 @@ void nmk16_state::mustangb_map(address_map &map)
map(0x0f0000, 0x0fffff).ram().w(FUNC(nmk16_state::mainram_strange_w)).share("mainram");
}
+void nmk16_state::mustangb3_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080001).portr("IN0");
+ map(0x080002, 0x080003).portr("IN1");
+ map(0x080004, 0x080005).portr("DSW1");
+ map(0x080006, 0x080007).lr16(NAME([this]() { if (m_maincpu->pc() == 0x416) return 0x9000; if (m_maincpu->pc() == 0x64e) return 0x548d; return 0x0000; })); // TODO: gross hack. Protection? Or probably something more obvious
+ map(0x08000f, 0x08000f).r("soundlatch2", FUNC(generic_latch_8_device::read));
+ map(0x08000e, 0x08000f).nopw();
+ map(0x080015, 0x080015).w(FUNC(nmk16_state::flipscreen_w));
+ map(0x080016, 0x080017).noprw();
+ map(0x08001f, 0x08001f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08c000, 0x08c001).w(FUNC(nmk16_state::mustang_scroll_w));
+ map(0x08c002, 0x08c087).nopw();
+ map(0x090000, 0x093fff).ram().w(FUNC(nmk16_state::bgvideoram_w<0>)).share("bgvideoram0");
+ map(0x09c000, 0x09c7ff).ram().w(FUNC(nmk16_state::txvideoram_w)).share("txvideoram");
+ map(0x0f0000, 0x0fffff).ram().w(FUNC(nmk16_state::mainram_strange_w)).share("mainram");
+}
+
void nmk16_state::twinactn_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
@@ -4309,6 +4329,46 @@ void nmk16_state::mustangb(machine_config &config)
seibu_sound.ym_write_callback().set("ymsnd", FUNC(ym3812_device::write));
}
+void nmk16_state::mustangb3(machine_config &config)
+{
+ // basic machine hardware
+ M68000(config, m_maincpu, 10000000); // 10 MHz ?
+ m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::mustangb3_map);
+ set_hacky_interrupt_timing(config);
+
+ Z80(config, m_audiocpu, 14318180/4);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::tharrier_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &nmk16_state::tharrier_sound_io_map);
+
+ // video hardware
+ set_hacky_screen_lowres(config);
+ m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit));
+ m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross));
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross);
+ PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024);
+ MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross)
+
+ GENERIC_LATCH_8(config, m_soundlatch);
+ GENERIC_LATCH_8(config, "soundlatch2");
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000));
+ ymsnd.irq_handler().set_inputline("audiocpu", 0);
+ ymsnd.add_route(0, "mono", 0.50);
+ ymsnd.add_route(1, "mono", 0.50);
+ ymsnd.add_route(2, "mono", 0.50);
+ ymsnd.add_route(3, "mono", 1.20);
+
+ OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW);
+ m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10);
+
+ OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW);
+ m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10);
+}
+
void nmk16_state::bioship(machine_config &config)
{
// basic machine hardware
@@ -5892,6 +5952,69 @@ ROM_START( tharrieru )
ROM_LOAD( "26.bpr", 0x00120, 0x020, CRC(0cbfb33e) SHA1(5dfee031a0a14bcd667fe2af2fa9cdfac3941d22) )
ROM_END
+ROM_START( tharrierb )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "cpua", 0x00000, 0x20000, CRC(d55d21c7) SHA1(7c66283ca48453cc7eea257d70e5ce09217cfa1e) )
+ ROM_LOAD16_BYTE( "cpub", 0x00001, 0x20000, CRC(65c247f6) SHA1(9f35f2b6f54814b4c4d23e2d78db8043e678fef2) ) // just a BEQ at 0x6b6a changed to BRA and a BPL at 0x6ba0 changed to BRA
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "s1.512", 0x00000, 0x10000, CRC(b959f837) SHA1(073b14935e7d5b0cad19a3471fd26e9e3a363827) )
+
+ ROM_REGION( 0x1000, "mcu", 0 )
+ ROM_LOAD( "mc68705r35", 0x0000, 0x1000, NO_DUMP ) // doesn't seem to be used by the game. Possibly empty or leftover from a conversion?
+
+ ROM_REGION( 0x8000, "fgtile", 0 )
+ ROM_LOAD( "t.256", 0x0000, 0x8000, CRC(4e9a7e0b) SHA1(ff143d1e01e865a62ecc695fe3359a2a0eacee05) ) // half size if compared to the original
+
+ ROM_REGION( 0x80000, "bgtile", 0 )
+ ROM_LOAD( "10h.512", 0x00000, 0x10000, CRC(9b97073c) SHA1(963d45bac06ae74872206442d7a7c1bfb142e951) )
+ ROM_LOAD( "21h.512", 0x10000, 0x10000, CRC(d5a90bd5) SHA1(b1bccc11aada4277482f3988f4f3ffa565f15f59) )
+ ROM_LOAD( "12h.512", 0x20000, 0x10000, CRC(3d4a03ac) SHA1(a2840d339249441e191bcee59c1330851b5b1992) )
+ ROM_LOAD( "24h.512", 0x30000, 0x10000, CRC(edecb4c8) SHA1(76190d35e188c5272aa2b0131f28e4edd812237b) )
+ ROM_LOAD( "11h.512", 0x40000, 0x10000, CRC(c20d20ed) SHA1(4d5492fcbff15c727c642a97bdc51bbf43623199) )
+ ROM_LOAD( "23h.512", 0x50000, 0x10000, CRC(c7949c45) SHA1(c0d2f58ec9e7e566980dcc8e93215aef735833d4) )
+ ROM_LOAD( "22h.512", 0x60000, 0x10000, CRC(7f38e700) SHA1(55e135f82154b1ad8210fab5b2aa72d38f4d2f32) ) // 1ST AND 2ND HALF IDENTICAL, original has 0x60000-0x67fff 0xff filled
+ ROM_LOAD( "9h.512", 0x70000, 0x10000, CRC(43499c11) SHA1(9215fa7a76be4e76bf5fdc55c93e635c9b113947) )
+
+ ROM_REGION( 0x100000, "sprites", 0 ) // identical to the original up t0 0xeffff, then this bootleg has more data?
+ ROM_LOAD16_BYTE( "l3.512", 0x00000, 0x10000, CRC(b1537a3b) SHA1(82eb2d5b99f3e42b570a46ad3e9861761522a406) )
+ ROM_LOAD16_BYTE( "l10.512", 0x00001, 0x10000, CRC(203b88f8) SHA1(58441f147719e349f3d7fbf4b21504e417c097f7) )
+ ROM_LOAD16_BYTE( "l1.512", 0x20000, 0x10000, CRC(060ed368) SHA1(bc9e742595f45e4726b449c808d89504e0663df5) )
+ ROM_LOAD16_BYTE( "l15.512", 0x20001, 0x10000, CRC(0c5cef0e) SHA1(6bee6956f52de436c2a06f5b5ff8d08f83a79a2d) )
+ ROM_LOAD16_BYTE( "l2.512", 0x40000, 0x10000, CRC(d62b4a9e) SHA1(b6db3fc00755a2d72effff96e721bfaef4216897) )
+ ROM_LOAD16_BYTE( "l16.512", 0x40001, 0x10000, CRC(6b637cda) SHA1(838b4ad3e3ebf29c6673bf559b9ad7f729ea148d) )
+ ROM_LOAD16_BYTE( "l6.512", 0x60000, 0x10000, CRC(5f249283) SHA1(7c25659a3d8f29ca0235b206fc03dfedf15a88fe) )
+ ROM_LOAD16_BYTE( "l14.512", 0x60001, 0x10000, CRC(dfabc192) SHA1(0d83cfbe308275e8b7e59522eaa49ff778e12713) )
+ ROM_LOAD16_BYTE( "l5.512", 0x80000, 0x10000, CRC(5e51cdfa) SHA1(d3d9d12c2caffabb670ef5d5909a474c52640443) )
+ ROM_LOAD16_BYTE( "l11.512", 0x80001, 0x10000, CRC(3ac04d8f) SHA1(e86f8cd21e70b8dd88fda4931db9b28803d6597f) )
+ ROM_LOAD16_BYTE( "l8.512", 0xa0000, 0x10000, CRC(0a8b8eca) SHA1(6be69a9d2fde671a735bce75fe28503c02062201) )
+ ROM_LOAD16_BYTE( "l12.512", 0xa0001, 0x10000, CRC(85445005) SHA1(ae880382591f707cf9d445fd11f2d182bfe44c79) )
+ ROM_LOAD16_BYTE( "l4.512", 0xc0000, 0x10000, CRC(19f82acd) SHA1(ff88e067b05c2de76f56e1a3ad423d8683b498c6) )
+ ROM_LOAD16_BYTE( "l13.512", 0xc0001, 0x10000, CRC(5cf2b63b) SHA1(2e4d093436a8ade97fe3f62a83d6211111900006) )
+ ROM_LOAD16_BYTE( "l7.512", 0xe0000, 0x10000, CRC(fc99519f) SHA1(35e86f3c86f978f75dcc37acce0b601cb1d65fdf) ) // 1ST AND 2ND HALF IDENTICAL, original has 0xf8000-0xfffff 0xff filled
+ ROM_LOAD16_BYTE( "l9.512", 0xe0001, 0x10000, CRC(4c5a8f33) SHA1(82540da291a1a78c91a47f05d9557c492315ddbc) ) // "
+
+ ROM_REGION(0x80000, "oki1", 0 ) // identical to the original, just smaller ROMs
+ ROM_LOAD( "8h.512", 0x00000, 0x10000, CRC(f509f5ca) SHA1(ebdf80efefa01f82d9b9773110326c17b536bfc9) )
+ ROM_LOAD( "7h.512", 0x10000, 0x10000, CRC(1a0ec174) SHA1(345f707d57311efbcc7a438eff76ae53a2055591) )
+ ROM_LOAD( "6h.512", 0x20000, 0x10000, CRC(55e704f7) SHA1(14142d25a5a3875046fc5284ff6d1fe8147045f0) )
+ ROM_LOAD( "5h.512", 0x30000, 0x10000, CRC(ad459ad3) SHA1(4ca8dcfca5bf5b1645d93b5cd18a645d76a9e2e8) )
+ ROM_LOAD( "4h.512", 0x40000, 0x10000, CRC(5ee53d1d) SHA1(1e7739ef7879f395f986ae04a3779536fee4d377) )
+ ROM_LOAD( "3h.512", 0x50000, 0x10000, CRC(91c27b64) SHA1(4e0e72bfac2eb97f19456a15f1dd14bb9c1f2e00) )
+ ROM_LOAD( "2h.512", 0x60000, 0x10000, CRC(8d11ce0d) SHA1(033ee8c8319a0e930ef10a2545d4d3844fee53ed) )
+ ROM_LOAD( "1h.512", 0x70000, 0x10000, CRC(b42203c4) SHA1(23e07e78d229096a837a496ee7e9826a414b9d6e) )
+
+ ROM_REGION(0x80000, "oki2", 0 ) // identical to the original, just smaller ROMs
+ ROM_LOAD( "13h.512", 0x00000, 0x10000, CRC(024878b1) SHA1(df6073ac12d09e7dede796d9bc4f4e2bd9720ff3) )
+ ROM_LOAD( "14h.512", 0x10000, 0x10000, CRC(3544758d) SHA1(df85c8df1ddaf4433bf33f4b82d9092261da25a3) )
+ ROM_LOAD( "15h.512", 0x20000, 0x10000, CRC(6929577a) SHA1(91c890e4e4aa39e219e8566b903cc1a5a38793d3) )
+ ROM_LOAD( "16h.512", 0x30000, 0x10000, CRC(c909d929) SHA1(45e8ac31a66af26044824159efee5fea87e0176d) )
+ ROM_LOAD( "17h.512", 0x40000, 0x10000, CRC(09e7635b) SHA1(64f8d5a7e5cec8abda4d8adcd595bfbb873d3adc) )
+ ROM_LOAD( "18h.512", 0x50000, 0x10000, CRC(370a2fbd) SHA1(9cdf8a6155a8afb4472f23df9d62f6a4e62fff30) )
+ ROM_LOAD( "19h.512", 0x60000, 0x10000, CRC(64e58cfe) SHA1(0310f5504513a8b0be20cfc337a038fcf7925131) )
+ ROM_LOAD( "20h.512", 0x70000, 0x10000, CRC(5ccd9205) SHA1(6e5443d6af5a896d6dd4b4e06d5c3151826bf8b5) )
+ROM_END
+
ROM_START( mustang )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD16_BYTE( "2.bin", 0x00000, 0x20000, CRC(bd9f7c89) SHA1(a0af46a8ff82b90bece2515e1bd74e7a7ddf5379) )
@@ -6007,6 +6130,36 @@ ROM_START( mustangb2 )
ROM_LOAD( "02.bin", 0x00000, 0x10000, CRC(f6f6c4bf) SHA1(ea4cf74d968e254ae47c16c2f4c2f4bc1a528808) )
ROM_END
+// has tharrier derived sound
+ROM_START( mustangb3 )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "u2.bin", 0x00000, 0x20000, CRC(1c6c0aaf) SHA1(4c411a814d5edf2ca6630332d3e90c43812e9b95) )
+ ROM_LOAD16_BYTE( "u1.bin", 0x00001, 0x20000, CRC(e954d6da) SHA1(eec51e651eddd6a4b74dc38fc1a17b31c3550379) )
+
+ ROM_REGION(0x10000, "audiocpu", 0 )
+ ROM_LOAD( "u14.bin", 0x00000, 0x10000, CRC(26041abd) SHA1(d7fb475bb44ea5d968e344a38dabb2eb21bb9e4c) )
+
+ ROM_REGION( 0x1000, "mcu", 0 )
+ ROM_LOAD( "mc68705r35", 0x0000, 0x1000, NO_DUMP ) // doesn't seem to be used by the game. Possibly empty or leftover from a conversion?
+
+ // GFX ROMs (3 to 11) aren't dumped yet, using the ones from the original for now
+ ROM_REGION( 0x20000, "fgtile", 0 )
+ ROM_LOAD( "90058-1", 0x00000, 0x20000, BAD_DUMP CRC(81ccfcad) SHA1(70a0f769c0d4588f6f17bd52cc86a745f30e9f00) )
+
+ ROM_REGION( 0x80000, "bgtile", 0 )
+ ROM_LOAD( "90058-4", 0x00000, 0x80000, BAD_DUMP CRC(a07a2002) SHA1(55720d84a251c33c52ae8c33aa41ff8ac9727941) )
+
+ ROM_REGION( 0x100000, "sprites", 0 )
+ ROM_LOAD16_BYTE( "90058-8", 0x00000, 0x80000, BAD_DUMP CRC(560bff04) SHA1(b005642adc81d878971ecbdead8ef5e604c90ae2) )
+ ROM_LOAD16_BYTE( "90058-9", 0x00001, 0x80000, BAD_DUMP CRC(b9d72a03) SHA1(43ee9def1b6c491c6832562d66c1af54d81d9b3c) )
+
+ ROM_REGION( 0x20000, "oki1", 0 )
+ ROM_LOAD( "u13.bin", 0x00000, 0x20000, CRC(90961f37) SHA1(e3d905516b1454f05125fed1f2c679423ad5b5f0) ) // 1ST AND 2ND HALF IDENTICAL
+
+ ROM_REGION( 0x20000, "oki2", 0 )
+ ROM_LOAD( "u12.bin", 0x00000, 0x20000, CRC(0a28eaca) SHA1(392bd5301904ffb92cf97999e406e238717afa45) )
+ROM_END
+
ROM_START( acrobatm )
ROM_REGION( 0x40000, "maincpu", 0 )
ROM_LOAD16_BYTE( "02_ic100.bin", 0x00000, 0x20000, CRC(3fe487f4) SHA1(29aba5debcfddff14e584a1c7c5a403e85fc6ec0) )
@@ -8647,11 +8800,15 @@ GAME( 1991, manybloc, 0, manybloc, manybloc, nmk16_state, init_
GAME( 1997, tomagic, 0, tomagic, tomagic, nmk16_tomagic_state, init_tomagic, ROT0, "Hobbitron T.K.Trading Co. Ltd.", "Tom Tom Magic", 0 )
// these use the Seibu sound system (sound / music stolen from Raiden) rather than the bootleggers copying the nmk004
-GAME( 1990, mustangb, mustang, mustangb, mustang, nmk16_state, empty_init, ROT0, "bootleg", "US AAF Mustang (bootleg)", 0 )
+GAME( 1990, mustangb, mustang, mustangb, mustang, nmk16_state, empty_init, ROT0, "bootleg", "US AAF Mustang (bootleg, set 1)", 0 )
GAME( 1990, mustangb2, mustang, mustangb, mustang, nmk16_state, empty_init, ROT0, "bootleg (TAB Austria)", "US AAF Mustang (TAB Austria bootleg)", 0 ) // PCB and ROMs have TAB Austria stickers
GAME( 1991, tdragonb, tdragon, tdragonb, tdragonb, nmk16_state, init_tdragonb, ROT270, "bootleg", "Thunder Dragon (bootleg)", 0 )
GAME( 1992, strahljbl, strahl, strahljbl, strahljbl, nmk16_state, empty_init, ROT0, "bootleg", "Koutetsu Yousai Strahl (Japan, bootleg)", 0 )
+// these are bootlegs with tharrier like sound hw
+GAME( 1990, mustangb3, mustang, mustangb3, mustang, nmk16_state, empty_init, ROT0, "bootleg (Lettering)", "US AAF Mustang (Lettering bootleg)", 0 )
+GAME( 1989, tharrierb, tharrier, tharrier, tharrier, nmk16_state, init_tharrier, ROT270, "bootleg (Lettering)", "Task Force Harrier (Lettering bootleg)", 0 )
+
// these are from Comad, based on the Thunder Dragon code?
GAME( 1992, ssmissin, 0, ssmissin, ssmissin, nmk16_state, init_ssmissin, ROT270, "Comad", "S.S. Mission", MACHINE_NO_COCKTAIL )
diff --git a/src/mame/includes/nmk16.h b/src/mame/includes/nmk16.h
index 3b00d63eb9d..6f881bbf701 100644
--- a/src/mame/includes/nmk16.h
+++ b/src/mame/includes/nmk16.h
@@ -66,8 +66,9 @@ public:
void tdragon3h(machine_config &config);
void hachamf_prot(machine_config &config);
void macross(machine_config &config);
- void mustangb(machine_config &config);
void mustang(machine_config &config);
+ void mustangb(machine_config &config);
+ void mustangb3(machine_config &config);
void twinactn(machine_config &config);
void vandykeb(machine_config &config);
@@ -213,6 +214,7 @@ protected:
void manybloc_map(address_map &map);
void mustang_map(address_map &map);
void mustangb_map(address_map &map);
+ void mustangb3_map(address_map &map);
void oki1_map(address_map &map);
void oki2_map(address_map &map);
void raphero_map(address_map &map);
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 91c45d04798..aecfb846a31 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -32802,6 +32802,7 @@ manybloc // (c) 1991 Bee-Oh
mustang // UPL-90058 (c) 1990 UPL
mustangb // bootleg
mustangb2 // TAB Austria bootleg
+mustangb3 // Lettering bootleg
mustangs // UPL-90058 (c) 1990 UPL + Seoul Trading
nouryoku // (c) 1995 Tecmo
nouryokup // (c) 1995 Tecmo
@@ -32835,6 +32836,7 @@ tdragon2a // UPL-93091 (c) 1993 NMK
tdragon3h
tdragonb // bootleg
tharrier // UPL-89053 (c) 1989 UPL
+tharrierb // Lettering bootleg
tharrieru // UPL-89053 (c) 1989 UPL + American Sammy license
tomagic //
twinactn // (c) 1995 - bootleg of US AFF Mustang