new WORKING clones (#3616)

* new WORKING clones
Metal Slug 3 (NGM-2560, earlier) [Razoola]

* consistency (nw)

* date note
This commit is contained in:
David Haywood 2018-05-28 01:15:53 +01:00 committed by ajrhacker
parent c412f39ec8
commit da7ae02b43
10 changed files with 200 additions and 19 deletions

View File

@ -8186,9 +8186,9 @@
<!-- revision 2000.4.1 -->
<feature name="slot" value="sma_mslug3" />
<dataarea name="maincpu" width="16" endianness="big" size="0x900000">
<rom loadflag="load16_word_swap" name="neo-sma" offset="0x0c0000" size="0x040000" crc="9cd55736" sha1="d6efb2b313127c2911d47d9324626b3f1e7c6ccb" />
<rom loadflag="load16_word_swap" name="green.neo-sma" offset="0x0c0000" size="0x040000" crc="9cd55736" sha1="d6efb2b313127c2911d47d9324626b3f1e7c6ccb" />
<!-- stored in the custom chip -->
<!-- The SMA for this release has a green colour marking; the older revision has a white colour marking -->
<!-- The SMA has a green colour marking -->
<rom loadflag="load16_word_swap" name="256-pg1.p1" offset="0x100000" size="0x400000" crc="b07edfd5" sha1="dcbd9e500bfae98d754e55cdbbbbf9401013f8ee" /> <!-- TC5332202 -->
<rom loadflag="load16_word_swap" name="256-pg2.p2" offset="0x500000" size="0x400000" crc="6097c26b" sha1="248ec29d21216f29dc6f5f3f0e1ad1601b3501b6" /> <!-- TC5332202 -->
</dataarea>
@ -8218,6 +8218,52 @@
</dataarea>
</part>
</software>
<software name="mslug3a" cloneof="mslug3"> <!-- see neogeo.cpp for notes on this set -->
<description>Metal Slug 3 (NGM-2560, earlier)</description>
<year>2000</year>
<publisher>SNK</publisher>
<info name="serial" value="NGM-2560"/>
<info name="release" value="20000323"/>
<info name="alt_title" value="メタルスラッグ 3"/>
<sharedfeat name="release" value="MVS" />
<sharedfeat name="compatibility" value="MVS,AES" />
<part name="cart" interface="neo_cart">
<!-- revision Mar/17/2000 1:36 (from SMA rom) -->
<feature name="slot" value="sma_mslug3a" />
<dataarea name="maincpu" width="16" endianness="big" size="0x900000">
<rom loadflag="load16_word_swap" name="white.neo-sma" offset="0x0c0000" size="0x040000" crc="c60d29b2" sha1="1647260ccbda833b35005608ef1fdc82fba02f04" />
<!-- stored in the custom chip -->
<!-- The SMA has a white colour marking -->
<rom loadflag="load16_word_swap" name="256.p1" offset="0x100000" size="0x400000" crc="a1177628" sha1="4c4c379d9fc3a83265b7f32fbfce9d16b7d0f0fd" /> <!-- TC5332202 -->
<rom loadflag="load16_word_swap" name="256.p2" offset="0x500000" size="0x400000" crc="9b659826" sha1="d6bd03cf61879217922c18db4d3bd77095c0fe19" /> <!-- TC5332202 -->
</dataarea>
<dataarea name="fixed" size="0x80000">
<!-- The Encrypted Boards do _not_ have an s1 rom, data for it comes from the Cx ROMs -->
<rom value="0" size="0x80000" offset="0x000000" loadflag="fill" />
</dataarea>
<dataarea name="audiocpu" size="0x080000">
<rom offset="0x000000" size="0x080000" name="256-m1.m1" crc="eaeec116" sha1="54419dbb21edc8c4b37eaac2e7ad9496d2de037a" /> <!-- mask rom TC534000 -->
</dataarea>
<dataarea name="ymsnd" size="0x1000000">
<rom name="256-v1.v1" offset="0x000000" size="0x400000" crc="f2690241" sha1="fd56babc1934d10e0d27c32f032f9edda7ca8ce9" /> <!-- TC5332204 -->
<rom name="256-v2.v2" offset="0x400000" size="0x400000" crc="7e2a10bd" sha1="0d587fb9f64cba0315ce2d8a03e2b8fe34936dff" /> <!-- TC5332204 -->
<rom name="256-v3.v3" offset="0x800000" size="0x400000" crc="0eaec17c" sha1="c3ed613cc6993edd6fc0d62a90bcd85de8e21915" /> <!-- TC5332204 -->
<rom name="256-v4.v4" offset="0xc00000" size="0x400000" crc="9b4b22d4" sha1="9764fbf8453e52f80aa97a46fb9cf5937ef15a31" /> <!-- TC5332204 -->
</dataarea>
<dataarea name="sprites" size="0x4000000">
<!-- Encrypted -->
<rom loadflag="load16_byte" name="256-c1.c1" offset="0x000000" size="0x800000" crc="5a79c34e" sha1="b8aa51fa50935cae62ab3d125b723ab888691e60" /> <!-- TC5364205 -->
<rom loadflag="load16_byte" name="256-c2.c2" offset="0x000001" size="0x800000" crc="944c362c" sha1="3843ab300f956280475469caee70135658f67089" /> <!-- TC5364205 -->
<rom loadflag="load16_byte" name="256-c3.c3" offset="0x1000000" size="0x800000" crc="6e69d36f" sha1="94e8cf42e999114b4bd8b30e0aa2f365578c4c9a" /> <!-- TC5364205 -->
<rom loadflag="load16_byte" name="256-c4.c4" offset="0x1000001" size="0x800000" crc="b755b4eb" sha1="804700a0966a48f130c434ede3f970792ea74fa5" /> <!-- TC5364205 -->
<rom loadflag="load16_byte" name="256-c5.c5" offset="0x2000000" size="0x800000" crc="7aacab47" sha1="312c1c9846175fe1a3cad51d5ae230cf674fc93d" /> <!-- TC5364205 -->
<rom loadflag="load16_byte" name="256-c6.c6" offset="0x2000001" size="0x800000" crc="c698fd5d" sha1="16818883b06849ba2f8d61bdd5e21aaf99bd8408" /> <!-- TC5364205 -->
<rom loadflag="load16_byte" name="256-c7.c7" offset="0x3000000" size="0x800000" crc="cfceddd2" sha1="7def666adf8bd1703f40c61f182fc040b6362dc9" /> <!-- TC5364205 -->
<rom loadflag="load16_byte" name="256-c8.c8" offset="0x3000001" size="0x800000" crc="4d9be34c" sha1="a737bdfa2b815aea7067e7af2636e83a9409c414" /> <!-- TC5364205 -->
</dataarea>
</part>
</software>
<software name="mslug3h" cloneof="mslug3">
<description>Metal Slug 3 (NGH-2560)</description>

View File

@ -54,6 +54,7 @@ void neogeo_cart(device_slot_interface &device)
device.option_add_internal("sma_garou", NEOGEO_SMA_GAROU_CART);
device.option_add_internal("sma_garouh", NEOGEO_SMA_GAROUH_CART);
device.option_add_internal("sma_mslug3", NEOGEO_SMA_MSLUG3_CART);
device.option_add_internal("sma_mslug3a", NEOGEO_SMA_MSLUG3A_CART);
// These use SMA for prg & CMC50 for gfx + audiocpu
device.option_add_internal("sma_kof2k", NEOGEO_SMA_KOF2000_CART);

View File

@ -1,5 +1,6 @@
// license:BSD-3-Clause
// copyright-holders:S. Smith,David Haywood,Fabio Priuli
// copyright-holders:S. Smith,David Haywood,Fabio Priuli, Razoola, Mr.K
// thanks to Razoola and Mr K for the decode and banking information
#include "emu.h"
#include "prot_sma.h"
@ -64,7 +65,6 @@ WRITE16_MEMBER( sma_prot_device::kof99_bankswitch_w )
WRITE16_MEMBER( sma_prot_device::garou_bankswitch_w )
{
// thanks to Razoola and Mr K for the info
int bankaddress;
static const int bankoffset[64] =
{
@ -100,7 +100,6 @@ WRITE16_MEMBER( sma_prot_device::garou_bankswitch_w )
WRITE16_MEMBER( sma_prot_device::garouh_bankswitch_w )
{
// thanks to Razoola and Mr K for the info
int bankaddress;
static const int bankoffset[64] =
{
@ -138,7 +137,6 @@ WRITE16_MEMBER( sma_prot_device::garouh_bankswitch_w )
WRITE16_MEMBER( sma_prot_device::mslug3_bankswitch_w )
{
// thanks to Razoola and Mr K for the info
int bankaddress;
static const int bankoffset[64] =
{
@ -173,7 +171,6 @@ WRITE16_MEMBER( sma_prot_device::mslug3_bankswitch_w )
WRITE16_MEMBER( sma_prot_device::kof2000_bankswitch_w )
{
// thanks to Razoola and Mr K for the info
int bankaddress;
static const int bankoffset[64] =
{
@ -232,7 +229,6 @@ uint32_t sma_prot_device::kof99_bank_base(uint16_t sel)
uint32_t sma_prot_device::garou_bank_base(uint16_t sel)
{
// thanks to Razoola and Mr K for the info
static const int bankoffset[64] =
{
0x000000, 0x100000, 0x200000, 0x300000, // 00
@ -266,7 +262,6 @@ uint32_t sma_prot_device::garou_bank_base(uint16_t sel)
uint32_t sma_prot_device::garouh_bank_base(uint16_t sel)
{
// thanks to Razoola and Mr K for the info
static const int bankoffset[64] =
{
0x000000, 0x100000, 0x200000, 0x300000, // 00
@ -302,7 +297,6 @@ uint32_t sma_prot_device::garouh_bank_base(uint16_t sel)
uint32_t sma_prot_device::mslug3_bank_base(uint16_t sel)
{
// thanks to Razoola and Mr K for the info
static const int bankoffset[64] =
{
0x000000, 0x020000, 0x040000, 0x060000, // 00
@ -333,9 +327,40 @@ uint32_t sma_prot_device::mslug3_bank_base(uint16_t sel)
return bankaddress;
}
uint32_t sma_prot_device::mslug3a_bank_base(uint16_t sel)
{
static const int bankoffset[64] =
{
0x000000, 0x030000, 0x040000, 0x070000, // 00
0x080000, 0x0a0000, 0x0c0000, 0x0e0000, // 04
0x0f0000, 0x100000, 0x130000, 0x140000, // 08
0x150000, 0x160000, 0x190000, 0x1a0000, // 12
0x1B0000, 0x1C0000, 0x1F0000, 0x200000, // 16
0x210000, 0x220000, 0x250000, 0x260000, // 20
0x270000, 0x280000, 0x2B0000, 0x2C0000, // 24
0x2D0000, 0x2E0000, 0x310000, 0x320000, // 28
0x330000, 0x340000, 0x370000, 0x380000, // 32
0x390000, 0x3A0000, 0x3D0000, 0x3E0000, // 36
0x400000, 0x410000, 0x440000, 0x450000, // 40
0x460000, 0x470000, 0x4A0000, 0x4B0000, // 44
0x4C0000, /* rest not used? */
};
// unscramble bank number
int data =
(BIT(sel, 15) << 0)+
(BIT(sel, 3) << 1)+
(BIT(sel, 1) << 2)+
(BIT(sel, 6) << 3)+
(BIT(sel, 12) << 4)+
(BIT(sel, 11) << 5);
int bankaddress = 0x100000 + bankoffset[data];
return bankaddress;
}
uint32_t sma_prot_device::kof2000_bank_base(uint16_t sel)
{
// thanks to Razoola and Mr K for the info
static const int bankoffset[64] =
{
0x000000, 0x100000, 0x200000, 0x300000, // 00
@ -391,7 +416,7 @@ READ16_MEMBER( sma_prot_device::random_r )
// kof99, garou, garouh, mslug3 and kof2000 have an SMA chip which contains program code and decrypts the 68k roms
// kof99, garou, garouh, mslug3, mslug3a and kof2000 have an SMA chip which contains program code and decrypts the 68k roms
void sma_prot_device::kof99_decrypt_68k(uint8_t* base)
{
uint16_t *rom = (uint16_t *)(base + 0x100000);
@ -418,7 +443,6 @@ void sma_prot_device::kof99_decrypt_68k(uint8_t* base)
void sma_prot_device::garou_decrypt_68k(uint8_t* base)
{
// thanks to Razoola and Mr K for the info
uint16_t *rom = (uint16_t *)(base + 0x100000);
// swap data lines on the whole ROMs
@ -444,7 +468,6 @@ void sma_prot_device::garou_decrypt_68k(uint8_t* base)
void sma_prot_device::garouh_decrypt_68k(uint8_t* base)
{
// thanks to Razoola and Mr K for the info
uint16_t *rom = (uint16_t *)(base + 0x100000);
// swap data lines on the whole ROMs
@ -470,7 +493,6 @@ void sma_prot_device::garouh_decrypt_68k(uint8_t* base)
void sma_prot_device::mslug3_decrypt_68k(uint8_t* base)
{
// thanks to Razoola and Mr K for the info
uint16_t *rom = (uint16_t *)(base + 0x100000);
// swap data lines on the whole ROMs
@ -493,10 +515,33 @@ void sma_prot_device::mslug3_decrypt_68k(uint8_t* base)
}
}
void sma_prot_device::mslug3a_decrypt_68k(uint8_t* base)
{
uint16_t *rom = (uint16_t *)(base + 0x100000);
/* swap data lines on the whole ROMs */
for (int i = 0;i < 0x800000/2;i++)
rom[i] = bitswap<16>(rom[i],2,11,12,14,9,3,1,4,13,7,6,8,10,15,0,5);
/* swap address lines & relocate fixed part */
rom = (uint16_t *)base;
for (int i = 0; i < 0x0c0000/2; i++)
rom[i] = rom[0x5d0000/2 + bitswap<24>(i,23,22,21,20,19,18,1,16,14,7,17,5,8,4,15,6,3,2,0,13,10,12,9,11)];
rom = (uint16_t *)(base + 0x100000);
/* swap address lines for the banked part */
for (int i = 0;i < 0x800000/2; i += 0x10000/2)
{
uint16_t buffer[0x10000/2];
memcpy(buffer,&rom[i],0x10000);
for (int j = 0;j < 0x10000/2;j++)
rom[i+j] = buffer[bitswap<24>(j,23,22,21,20,19,18,17,16,15,12,0,11,3,4,13,6,8,14,7,5,2,10,9,1)];
}
}
void sma_prot_device::kof2000_decrypt_68k(uint8_t* base)
{
// thanks to Razoola and Mr K for the info
uint16_t *rom = (uint16_t *)(base + 0x100000);
// swap data lines on the whole ROMs

View File

@ -30,11 +30,13 @@ public:
uint32_t garou_bank_base(uint16_t sel);
uint32_t garouh_bank_base(uint16_t sel);
uint32_t mslug3_bank_base(uint16_t sel);
uint32_t mslug3a_bank_base(uint16_t sel);
uint32_t kof2000_bank_base(uint16_t sel);
void kof99_decrypt_68k(uint8_t* base);
void garou_decrypt_68k(uint8_t* base);
void garouh_decrypt_68k(uint8_t* base);
void mslug3_decrypt_68k(uint8_t* base);
void mslug3a_decrypt_68k(uint8_t* base);
void kof2000_decrypt_68k(uint8_t* base);
protected:

View File

@ -158,6 +158,7 @@ static const neogeo_slot slot_list[] =
{ NEOGEO_GAROU, "sma_garou" },
{ NEOGEO_GAROUH, "sma_garouh" },
{ NEOGEO_MSLUG3, "sma_mslug3" },
{ NEOGEO_MSLUG3A, "sma_mslug3a" },
{ NEOGEO_KOF2K, "sma_kof2k" },
{ NEOGEO_MSLUG4, "pcm2_mslug4" },
{ NEOGEO_MSLUG4P, "pcm2_ms4p" },

View File

@ -30,6 +30,7 @@ enum
NEOGEO_GAROU,
NEOGEO_GAROUH,
NEOGEO_MSLUG3,
NEOGEO_MSLUG3A,
NEOGEO_KOF2K,
NEOGEO_MSLUG4,
NEOGEO_MSLUG4P,

View File

@ -16,7 +16,8 @@ DEFINE_DEVICE_TYPE(NEOGEO_SMA_CART, neogeo_sma_cart_device, "neo
DEFINE_DEVICE_TYPE(NEOGEO_SMA_KOF99_CART, neogeo_sma_kof99_cart_device, "neocart_kof99", "Neo Geo KoF 99 SMA Cart")
DEFINE_DEVICE_TYPE(NEOGEO_SMA_GAROU_CART, neogeo_sma_garou_cart_device, "neocart_garou", "Neo Geo Garou SMA Cart")
DEFINE_DEVICE_TYPE(NEOGEO_SMA_GAROUH_CART, neogeo_sma_garouh_cart_device, "neocart_garouh", "Neo Geo Garou AES SMA Cart")
DEFINE_DEVICE_TYPE(NEOGEO_SMA_MSLUG3_CART, neogeo_sma_mslug3_cart_device, "neocart_mslug3", "Neo Geo Metal Slug 3 SMA Cart")
DEFINE_DEVICE_TYPE(NEOGEO_SMA_MSLUG3_CART, neogeo_sma_mslug3_cart_device, "neocart_mslug3", "Neo Geo Metal Slug 3 SMA Cart (green)")
DEFINE_DEVICE_TYPE(NEOGEO_SMA_MSLUG3A_CART, neogeo_sma_mslug3a_cart_device, "neocart_mslug3a", "Neo Geo Metal Slug 3 SMA Cart (white)")
DEFINE_DEVICE_TYPE(NEOGEO_SMA_KOF2000_CART, neogeo_sma_kof2000_cart_device, "neocart_kof2000", "Neo Geo KoF 2000 SMA Cart")
@ -127,6 +128,18 @@ void neogeo_sma_mslug3_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
m_cmc_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
}
neogeo_sma_mslug3a_cart_device::neogeo_sma_mslug3a_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
neogeo_sma_cart_device(mconfig, NEOGEO_SMA_MSLUG3A_CART, tag, owner, clock)
{
}
void neogeo_sma_mslug3a_cart_device::decrypt_all(DECRYPT_ALL_PARAMS)
{
m_sma_prot->mslug3a_decrypt_68k(cpuregion);
m_cmc_prot->cmc42_gfx_decrypt(spr_region, spr_region_size, MSLUG3_GFX_KEY);
m_cmc_prot->sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size);
}
/*************************************************
kof2000

View File

@ -104,6 +104,17 @@ public:
DECLARE_DEVICE_TYPE(NEOGEO_SMA_MSLUG3_CART, neogeo_sma_mslug3_cart_device)
class neogeo_sma_mslug3a_cart_device : public neogeo_sma_cart_device
{
public:
neogeo_sma_mslug3a_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual void decrypt_all(DECRYPT_ALL_PARAMS) override;
virtual int get_fixed_bank_type() override { return 1; }
virtual uint32_t get_bank_base(uint16_t sel) override { return m_sma_prot->mslug3a_bank_base(sel); }
};
DECLARE_DEVICE_TYPE(NEOGEO_SMA_MSLUG3A_CART, neogeo_sma_mslug3a_cart_device)
/*************************************************
kof2000

View File

@ -601,6 +601,7 @@ public:
void garouh(machine_config &config);
void garoubl(machine_config &config);
void mslug3(machine_config &config);
void mslug3a(machine_config &config);
void mslug3h(machine_config &config);
void mslug3b6(machine_config &config);
void kof2000(machine_config &config);
@ -1434,6 +1435,7 @@ void neogeo_base_state::set_slot_idx(int slot)
space.install_read_handler(0x2ffff0, 0x2ffff1, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]));
break;
case NEOGEO_MSLUG3:
case NEOGEO_MSLUG3A:
space.install_write_handler(0x2fffe4, 0x2fffe5, write16_delegate(FUNC(neogeo_base_state::write_bankprot),this));
space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]));
//space.install_read_handler(0x2ffff8, 0x2ffff9, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]));
@ -2497,6 +2499,11 @@ MACHINE_CONFIG_START(mvs_led_state::mslug3)
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_mslug3")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mvs_led_state::mslug3a)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("sma_mslug3a")
MACHINE_CONFIG_END
MACHINE_CONFIG_START(mvs_led_state::mslug3h)
mv1_fixed(config);
NEOGEO_CONFIG_ONE_FIXED_CARTSLOT("cmc42_mslug3h")
@ -8756,8 +8763,7 @@ ROM_END
ROM_START( mslug3 ) /* Original Version - Encrypted Code & GFX */ /* revision 2000.4.1 */ /* MVS VERSION */
ROM_REGION( 0x900000, "cslot1:maincpu", ROMREGION_BE|ROMREGION_16BIT )
ROM_LOAD16_WORD_SWAP( "neo-sma", 0x0c0000, 0x040000, CRC(9cd55736) SHA1(d6efb2b313127c2911d47d9324626b3f1e7c6ccb) ) /* stored in the custom chip */
/* The SMA for this release has a green colour marking; the older revision has a white colour marking */
ROM_LOAD16_WORD_SWAP( "green.neo-sma", 0x0c0000, 0x040000, CRC(9cd55736) SHA1(d6efb2b313127c2911d47d9324626b3f1e7c6ccb) ) /* stored in the custom SMA chip, the SMA has a green colour marking */
ROM_LOAD16_WORD_SWAP( "256-pg1.p1", 0x100000, 0x400000, CRC(b07edfd5) SHA1(dcbd9e500bfae98d754e55cdbbbbf9401013f8ee) ) /* TC5332202 */
ROM_LOAD16_WORD_SWAP( "256-pg2.p2", 0x500000, 0x400000, CRC(6097c26b) SHA1(248ec29d21216f29dc6f5f3f0e1ad1601b3501b6) ) /* TC5332202 */
@ -8789,6 +8795,59 @@ ROM_START( mslug3 ) /* Original Version - Encrypted Code & GFX */ /* revision 20
ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) ) /* Plane 2,3 */ /* TC5364205 */
ROM_END
/*
The Program roms for the set below are actually 4 ROMs contained on a recycled NeoGeo Pocket card and marked
SNK48249Q
JAPAN9948HAK
T8V12A
(two of these)
SNK48327V
JAPAN9948HAK
T8V12A
(two of these)
KOF2000 and Garou boards have been found with the same setup (data verified to match existing sets)
The roms were dumped via the NGPC cartridge edge connector, so the exact way they should be split into 4 is unknown.
As a result the ROM has been split to match the usual configuration as it likely exists like this too anyway.
*/
ROM_START( mslug3a ) /* Original Version - Encrypted Code & GFX */ /* MVS VERSION */
ROM_REGION( 0x900000, "cslot1:maincpu", ROMREGION_BE|ROMREGION_16BIT )
ROM_LOAD16_WORD_SWAP( "white.neo-sma", 0x0c0000, 0x040000, CRC(c60d29b2) SHA1(1647260ccbda833b35005608ef1fdc82fba02f04) ) /* stored in the custom SMA chip, the SMA has a white colour marking */
ROM_LOAD16_WORD_SWAP( "256.p1", 0x100000, 0x400000, CRC(a1177628) SHA1(4c4c379d9fc3a83265b7f32fbfce9d16b7d0f0fd) )
ROM_LOAD16_WORD_SWAP( "256.p2", 0x500000, 0x400000, CRC(9b659826) SHA1(d6bd03cf61879217922c18db4d3bd77095c0fe19) )
ROM_Y_ZOOM
/* The Encrypted Boards do not have an s1 rom, data for it comes from the Cx ROMs */
ROM_REGION( 0x80000, "cslot1:fixed", 0 ) /* larger char set */
ROM_FILL( 0x000000, 0x20000, 0x000000 )
ROM_REGION( 0x20000, "fixedbios", 0 )
ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) )
NEO_BIOS_AUDIO_512K( "256-m1.m1", CRC(eaeec116) SHA1(54419dbb21edc8c4b37eaac2e7ad9496d2de037a) ) /* mask rom TC534000 */
ROM_REGION( 0x1000000, "cslot1:ymsnd", 0 )
ROM_LOAD( "256-v1.v1", 0x000000, 0x400000, CRC(f2690241) SHA1(fd56babc1934d10e0d27c32f032f9edda7ca8ce9) ) /* TC5332204 */
ROM_LOAD( "256-v2.v2", 0x400000, 0x400000, CRC(7e2a10bd) SHA1(0d587fb9f64cba0315ce2d8a03e2b8fe34936dff) ) /* TC5332204 */
ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) ) /* TC5332204 */
ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) ) /* TC5332204 */
ROM_REGION( 0x4000000, "cslot1:sprites", 0 )
/* Encrypted */
ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) ) /* Plane 0,1 */ /* TC5364205 */
ROM_LOAD16_BYTE( "256-c2.c2", 0x0000001, 0x800000, CRC(944c362c) SHA1(3843ab300f956280475469caee70135658f67089) ) /* Plane 2,3 */ /* TC5364205 */
ROM_LOAD16_BYTE( "256-c3.c3", 0x1000000, 0x800000, CRC(6e69d36f) SHA1(94e8cf42e999114b4bd8b30e0aa2f365578c4c9a) ) /* Plane 0,1 */ /* TC5364205 */
ROM_LOAD16_BYTE( "256-c4.c4", 0x1000001, 0x800000, CRC(b755b4eb) SHA1(804700a0966a48f130c434ede3f970792ea74fa5) ) /* Plane 2,3 */ /* TC5364205 */
ROM_LOAD16_BYTE( "256-c5.c5", 0x2000000, 0x800000, CRC(7aacab47) SHA1(312c1c9846175fe1a3cad51d5ae230cf674fc93d) ) /* Plane 0,1 */ /* TC5364205 */
ROM_LOAD16_BYTE( "256-c6.c6", 0x2000001, 0x800000, CRC(c698fd5d) SHA1(16818883b06849ba2f8d61bdd5e21aaf99bd8408) ) /* Plane 2,3 */ /* TC5364205 */
ROM_LOAD16_BYTE( "256-c7.c7", 0x3000000, 0x800000, CRC(cfceddd2) SHA1(7def666adf8bd1703f40c61f182fc040b6362dc9) ) /* Plane 0,1 */ /* TC5364205 */
ROM_LOAD16_BYTE( "256-c8.c8", 0x3000001, 0x800000, CRC(4d9be34c) SHA1(a737bdfa2b815aea7067e7af2636e83a9409c414) ) /* Plane 2,3 */ /* TC5364205 */
ROM_END
ROM_START( mslug3h ) /* Original Version - Encrypted GFX */ /* revision 2000.3.17 */ /* AES VERSION */
ROM_REGION( 0x500000, "cslot1:maincpu", ROMREGION_BE|ROMREGION_16BIT )
ROM_LOAD16_WORD_SWAP( "256-ph1.p1", 0x000000, 0x100000, CRC(9c42ca85) SHA1(7a8f77a89867b889295ae9b9dfd4ba28f02d234d) )
@ -11563,6 +11622,7 @@ GAME( 1999, garouha, garou, garou, neogeo, mvs_led_state, empty_ini
GAME( 1999, garoup, garou, neobase, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Garou - Mark of the Wolves (prototype)", MACHINE_SUPPORTS_SAVE )
GAME( 1999, garoubl, garou, garoubl, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "Garou - Mark of the Wolves (bootleg)", MACHINE_SUPPORTS_SAVE ) /* Bootleg of garoup */
GAME( 2000, mslug3, neogeo, mslug3, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Metal Slug 3 (NGM-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */
GAME( 2000, mslug3a, mslug3, mslug3a, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Metal Slug 3 (NGM-2560, earlier)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX - revision Mar/17/2000 1:36 (from SMA rom) */
GAME( 2000, mslug3h, mslug3, mslug3h, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "Metal Slug 3 (NGH-2560)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */
GAME( 2000, mslug3b6, mslug3, mslug3b6, neogeo, mvs_led_state, empty_init, ROT0, "bootleg", "Metal Slug 6 (Metal Slug 3 bootleg)", MACHINE_SUPPORTS_SAVE ) /* real Metal Slug 6 is an Atomiswave HW game, see naomi.c ;-) */
GAME( 2000, kof2000, neogeo, kof2000, neogeo, mvs_led_state, empty_init, ROT0, "SNK", "The King of Fighters 2000 (NGM-2570 ~ NGH-2570)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted Code & GFX */

View File

@ -29795,6 +29795,7 @@ mslug // 0201 (c) 1996 Nazca
mslug2 // 0241 (c) 1998 SNK
mslug2t // bootleg
mslug3 // 0256 (c) 2000 SNK
mslug3a // 0256 (c) 2000 SNK
mslug3b6 // bootleg
mslug3h // 0256 (c) 2000 SNK
mslug4 // 0263 (c) 2002 Mega Enterprise