diff options
author | David Haywood <hazemamewip@hotmail.com> | 2018-05-28 01:15:53 +0100 |
---|---|---|
committer | ajrhacker <ajrhacker@users.noreply.github.com> | 2018-05-27 20:15:53 -0400 |
commit | da7ae02b43b1d455b1a633b72fe4db5a05e971b8 (patch) | |
tree | 3ee489a47af3e7d00343ef781366edf0c7e77563 | |
parent | c412f39ec8714be3eff20ece0e109f665607a738 (diff) |
new WORKING clones (#3616)
* new WORKING clones
Metal Slug 3 (NGM-2560, earlier) [Razoola]
* consistency (nw)
* date note
-rw-r--r-- | hash/neogeo.xml | 50 | ||||
-rw-r--r-- | src/devices/bus/neogeo/carts.cpp | 1 | ||||
-rw-r--r-- | src/devices/bus/neogeo/prot_sma.cpp | 73 | ||||
-rw-r--r-- | src/devices/bus/neogeo/prot_sma.h | 2 | ||||
-rw-r--r-- | src/devices/bus/neogeo/slot.cpp | 1 | ||||
-rw-r--r-- | src/devices/bus/neogeo/slot.h | 1 | ||||
-rw-r--r-- | src/devices/bus/neogeo/sma.cpp | 15 | ||||
-rw-r--r-- | src/devices/bus/neogeo/sma.h | 11 | ||||
-rw-r--r-- | src/mame/drivers/neogeo.cpp | 64 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
10 files changed, 200 insertions, 19 deletions
diff --git a/hash/neogeo.xml b/hash/neogeo.xml index 7e5feec7d24..9397dd7b20f 100644 --- a/hash/neogeo.xml +++ b/hash/neogeo.xml @@ -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> diff --git a/src/devices/bus/neogeo/carts.cpp b/src/devices/bus/neogeo/carts.cpp index 356ddf60340..94fbb70c34e 100644 --- a/src/devices/bus/neogeo/carts.cpp +++ b/src/devices/bus/neogeo/carts.cpp @@ -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); diff --git a/src/devices/bus/neogeo/prot_sma.cpp b/src/devices/bus/neogeo/prot_sma.cpp index bfd15ab208a..0b81939d957 100644 --- a/src/devices/bus/neogeo/prot_sma.cpp +++ b/src/devices/bus/neogeo/prot_sma.cpp @@ -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 diff --git a/src/devices/bus/neogeo/prot_sma.h b/src/devices/bus/neogeo/prot_sma.h index 040d03a08d9..f0ee9733bd0 100644 --- a/src/devices/bus/neogeo/prot_sma.h +++ b/src/devices/bus/neogeo/prot_sma.h @@ -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: diff --git a/src/devices/bus/neogeo/slot.cpp b/src/devices/bus/neogeo/slot.cpp index df57d410ea7..9a01c1b1196 100644 --- a/src/devices/bus/neogeo/slot.cpp +++ b/src/devices/bus/neogeo/slot.cpp @@ -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" }, diff --git a/src/devices/bus/neogeo/slot.h b/src/devices/bus/neogeo/slot.h index a90c529eea9..edeb2452a1d 100644 --- a/src/devices/bus/neogeo/slot.h +++ b/src/devices/bus/neogeo/slot.h @@ -30,6 +30,7 @@ enum NEOGEO_GAROU, NEOGEO_GAROUH, NEOGEO_MSLUG3, + NEOGEO_MSLUG3A, NEOGEO_KOF2K, NEOGEO_MSLUG4, NEOGEO_MSLUG4P, diff --git a/src/devices/bus/neogeo/sma.cpp b/src/devices/bus/neogeo/sma.cpp index 500b88eb7a1..70b03aa0a28 100644 --- a/src/devices/bus/neogeo/sma.cpp +++ b/src/devices/bus/neogeo/sma.cpp @@ -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 diff --git a/src/devices/bus/neogeo/sma.h b/src/devices/bus/neogeo/sma.h index 60b003f4c56..b4b72b3b5b5 100644 --- a/src/devices/bus/neogeo/sma.h +++ b/src/devices/bus/neogeo/sma.h @@ -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 diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp index 007bb234c3c..b70499a203a 100644 --- a/src/mame/drivers/neogeo.cpp +++ b/src/mame/drivers/neogeo.cpp @@ -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 */ diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 757df79d532..4d9e7117261 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -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 |