summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Scott Stone <tafoid@gmail.com>2016-06-09 22:47:33 -0400
committer Scott Stone <tafoid@gmail.com>2016-06-09 22:47:33 -0400
commit774dbac85a485eef81673b97f87b69340de351f7 (patch)
tree69eb139e5905bd45a4cf577170b5463ddce642d3 /src/mame
parent0d9d3f866a8b5bc6cbc1995d555e4330134e4a8b (diff)
New clone added
--------------- Metamorphic Force (ver EAA - alternate) [caius]
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/mystwarr.cpp61
-rw-r--r--src/mame/mame.lst1
2 files changed, 62 insertions, 0 deletions
diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp
index 869035e065a..735e839bda0 100644
--- a/src/mame/drivers/mystwarr.cpp
+++ b/src/mame/drivers/mystwarr.cpp
@@ -92,6 +92,29 @@ Notes:
HSync - 15.2042kHz
VSync - 59.1879Hz
+
+Notes on metamrpha. Research done by Vas Crabb
+The one rom that is different than the parent set has 2 bytes which have switched values (0 to 1 and 1 to 0).
+
+03A90E: B247 cmp.w D7, D1
+03A910: 6604 bne $3a916
+03A912: 08C0 0001 bset #$1, D0
+03A916: 3E3C 6B6E move.w #$6b6e, D7
+03A91A: 0647 7F92 addi.w #$7f92, D7
+03A91E: B447 cmp.w D7, D2
+03A920: 6604 bne $3a926
+03A922: 08C0 0000 bset #$0, D0
+
+In this snippet of code where the change is, from the original metamrph set
+D0 is the integer return value of the function in C ABI, so it's
+if (blah) result |= 2; ... if (blah) result |= 1; ...
+
+In the new dump, the "bset #$1, D0" and "bset #$0, D0" are reversed.
+if (blah) result |= 1; ... if (blah) result |= 2; ...
+
+So I would bet one is a bug fix to the other because someone forgot what each bit in the return value meant.
+There's no way a bad dump could be that precise.
+
**************************************************************************/
#include "emu.h"
@@ -1646,6 +1669,43 @@ ROM_START( metamrph )
ROM_LOAD( "metamrph.nv", 0x0000, 0x080, CRC(2c51229a) SHA1(7f056792cc44ec3d4aacc33c825ab796a913488e) )
ROM_END
+ROM_START( metamrpha ) /* alternate set - possibly a bugfix version. Only 2 adjusted bytes causing a swap in commands */
+ /* main program */
+ ROM_REGION( 0x200000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "3.15h", 0x000001, 0x40000, CRC(8b9f1ba3) SHA1(cccbaf117800a030c8218a91740dc98182a27901) )
+ ROM_LOAD16_BYTE( "224eaa02.15f", 0x000000, 0x40000, CRC(e314330a) SHA1(728a18d604eca58409551e52b7dc18e2d807700a) )
+ ROM_LOAD16_BYTE( "224a03", 0x100001, 0x80000, CRC(a5bedb01) SHA1(5e7a0b93af654ba6a87be8d449c7080a0f0e2a43) )
+ ROM_LOAD16_BYTE( "224a04", 0x100000, 0x80000, CRC(ada53ba4) SHA1(f77bf854dff1f8f718579fe6d3730066708396e2) )
+
+ /* sound program */
+ ROM_REGION( 0x40000, "soundcpu", 0 )
+ ROM_LOAD("224a05", 0x000000, 0x40000, CRC(4b4c985c) SHA1(c83cce05355023be9cd55b4aa595c61f8236269c) )
+
+ /* tiles */
+ ROM_REGION( 0x500000, "gfx1", ROMREGION_ERASE00 )
+ ROM_LOADTILE_WORD( "224a09", 0x000000, 1*1024*1024, CRC(1931afce) SHA1(78838c0fd2a9c80f130db1fcf6c88b14f7363639) )
+ ROM_LOADTILE_WORD( "224a08", 0x000002, 1*1024*1024, CRC(dc94d53a) SHA1(91e16371a335f078a81c06a1045759653080aba0) )
+
+ /* sprites */
+ ROM_REGION( 0x800000, "gfx2", ROMREGION_ERASE00 )
+ ROM_LOAD64_WORD( "224a10", 0x000000, 2*1024*1024, CRC(161287f0) SHA1(a13b197a98fa1cebb11fb87b54e277c72852c4ee) )
+ ROM_LOAD64_WORD( "224a11", 0x000002, 2*1024*1024, CRC(df5960e1) SHA1(ee7794dd119f5f2c52e7ba589d78067a89ff3cab) )
+ ROM_LOAD64_WORD( "224a12", 0x000004, 2*1024*1024, CRC(ca72a4b3) SHA1(a09deb6d7cb8be4edaeb78e0e676ea2d6055e9e0) )
+ ROM_LOAD64_WORD( "224a13", 0x000006, 2*1024*1024, CRC(86b58feb) SHA1(5a43746e2cd3c7aca21496c092aef83e64b3ab2c) )
+
+ /* K053250 linescroll/zoom thingy */
+ ROM_REGION( 0x40000, "k053250_1", 0 )
+ ROM_LOAD( "224a14", 0x000000, 0x40000, CRC(3c79b404) SHA1(7c6bb4cbf050f314ea0cd3e8bc6e1947d0573084) )
+
+ /* sound data */
+ ROM_REGION( 0x400000, "shared", 0 )
+ ROM_LOAD( "224a06", 0x000000, 2*1024*1024, CRC(972f6abe) SHA1(30907495fc49fe3424c092b074c1dc137aa14306) )
+ ROM_LOAD( "224a07", 0x200000, 1*1024*1024, CRC(61b2f97a) SHA1(34bf835d6361c7809d40fa20fd238c9e2a84b101) )
+
+ ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
+ ROM_LOAD( "metamrph.nv", 0x0000, 0x080, CRC(2c51229a) SHA1(7f056792cc44ec3d4aacc33c825ab796a913488e) )
+ROM_END
+
ROM_START( metamrphu )
/* main program */
ROM_REGION( 0x200000, "maincpu", 0 )
@@ -2196,6 +2256,7 @@ GAME( 1993, viostorma, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "
GAME( 1993, viostormab, viostorm, viostorm, viostorm, driver_device, 0, ROT0, "Konami", "Violent Storm (ver AAB)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1993, metamrph, 0, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver EAA)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, metamrpha, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver EAA - alternate)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1993, metamrphu, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver UAA)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1993, metamrphj, metamrph, metamrph, metamrph, driver_device, 0, ROT0, "Konami", "Metamorphic Force (ver JAA)", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 5b8e36d92cd..07b86a45db7 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -27422,6 +27422,7 @@ gaiapols // GX123 (c) 1993 (Europe)
gaiapolsj // GX123 (c) 1993 (Japan)
gaiapolsu // GX123 (c) 1993 (US)
metamrph // GX224 (c) 1993 (Europe)
+metamrpha // GX224 (c) 1993 (Europe) - Alternate
metamrphj // GX224 (c) 1993 (Japan)
metamrphu // GX224 (c) 1993 (US)
mmaulers // GX170 (c) 1993 (Europe)