summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <hazemamewip@hotmail.com>2018-09-03 22:16:59 +0100
committer MetalliC <0vetal0@gmail.com>2018-09-04 00:16:59 +0300
commitdd58bab60c4b2abd625a4141d434d5c6b5a953c5 (patch)
tree3a8851c84d56941830b67ceeea366a8a16337c5a
parentdc1ad55f9fdd07e14e7c81c11772ef8da7551674 (diff)
new WORKING clones - Toki no Senshi - Chrono Soldier (MC-8123, 317-0040) [ShouTime] (#3952)
* new WORKING clones - Toki no Senshi - Chrono Soldier (MC-8123, 317-0040) [ShouTime] (key was brute forced) * list key (nw) * leftover (nw) * make sure attract mode plays properly without giving a continue screen (nw) * dipswitch is inverted compared to other set
-rw-r--r--src/mame/drivers/system1.cpp92
-rw-r--r--src/mame/includes/system1.h1
-rw-r--r--src/mame/machine/mc8123.cpp1
-rw-r--r--src/mame/mame.lst3
4 files changed, 71 insertions, 26 deletions
diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp
index 51975be2023..ed69c687ecd 100644
--- a/src/mame/drivers/system1.cpp
+++ b/src/mame/drivers/system1.cpp
@@ -1952,9 +1952,9 @@ static INPUT_PORTS_START( tokisens )
PORT_INCLUDE( choplift )
PORT_MODIFY("SWA")
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWB:2")
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWB:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SWB:3,4")
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x08, "2" )
@@ -1974,6 +1974,15 @@ static INPUT_PORTS_START( tokisens )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
+static INPUT_PORTS_START( tokisensa )
+ PORT_INCLUDE( tokisens )
+
+ PORT_MODIFY("SWA")
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SWB:2")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( On ) )
+INPUT_PORTS_END
+
static INPUT_PORTS_START( wbml )
PORT_INCLUDE( choplift )
@@ -4635,30 +4644,62 @@ ROM_START( brain )
ROM_END
-ROM_START( tokisens ) /* Sega game ID# 834-6409 - should use a Sega MC-8123, 317-0040 */
+ROM_START( tokisens ) /* Sega game ID# 834-6409 - Sega MC-8123, 317-0040 */
ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "epr-10961.90", 0x00000, 0x8000, CRC(1466b61d) SHA1(99f93813834d3a7c9f6228076d400f74d9b6dea9) ) /* Possible bootleg or hacked? Should be MC-8123, 317-0040 encrypted */
- ROM_LOAD( "epr-10962.91", 0x10000, 0x8000, CRC(a8479f91) SHA1(0700746fb481fd2bd22ae82c9881aa61222a6379) )
- ROM_LOAD( "epr-10963.92", 0x18000, 0x8000, CRC(b7193b39) SHA1(d40fb8591b1ff83f3d56b955ac11a07496a0adbb) )
+ ROM_LOAD( "epr-10961.ic90", 0x00000, 0x8000, CRC(5c71c203) SHA1(65c3730d2255be5e09fda2f8eae1c7f3d245ce9b) )
+ ROM_LOAD( "epr-10962.ic91", 0x10000, 0x8000, CRC(db9080e3) SHA1(591b1bd4ab694f45d472bb50483dadb980cd2f86) )
+ ROM_LOAD( "epr-10963.ic92", 0x18000, 0x8000, CRC(d17ad93f) SHA1(870dbd3558a4c3a47f36d3d3c0c71c647baacf10) )
+
+ ROM_REGION( 0x2000, "maincpu:key", 0 ) /* MC8123 key */
+ ROM_LOAD( "317-0040.key", 0x0000, 0x2000, CRC(e2b67fd6) SHA1(4fcf457279dac317ccf700591cfaa9a4cff81b4a) )
ROM_REGION( 0x10000, "soundcpu", 0 )
- ROM_LOAD( "epr-10967.126", 0x0000, 0x8000, CRC(97966bf2) SHA1(b5a3d36afbb3d6e2e2e2c121609a30dc080ccf13) )
+ ROM_LOAD( "epr-10967.ic126", 0x0000, 0x8000, CRC(97966bf2) SHA1(b5a3d36afbb3d6e2e2e2c121609a30dc080ccf13) )
ROM_REGION( 0x18000, "tiles", 0 )
- ROM_LOAD( "epr-10964.4", 0x00000, 0x8000, CRC(9013b85c) SHA1(c27322245052ffc9d840fe683ed35965c61bf9e8) )
- ROM_LOAD( "epr-10965.5", 0x08000, 0x8000, CRC(e4755cc6) SHA1(33370d556a70e19edce5e0c7fa8b11453ccbe91b) )
- ROM_LOAD( "epr-10966.6", 0x10000, 0x8000, CRC(5bbfbdcc) SHA1(e7e679da874a79dfdda0be58d1352c192635296d) )
+ ROM_LOAD( "epr-10964.ic4", 0x00000, 0x8000, CRC(25af5c93) SHA1(da6e6244b14c9ad51cee012bf46d591928d13050) )
+ ROM_LOAD( "epr-10965.ic5", 0x08000, 0x8000, CRC(cc8eb99a) SHA1(b66c2a786a3401021a05740f36103cf8e6129a85) )
+ ROM_LOAD( "epr-10966.ic6", 0x10000, 0x8000, CRC(7ecf2459) SHA1(2dc6c4295d0e6f18efd26f8e15e0f31cf0a6820e) )
ROM_REGION( 0x20000, "sprites", 0 )
- ROM_LOAD( "epr-10958.87", 0x00000, 0x8000, CRC(fc2bcbd7) SHA1(6b9007f2057e4c860ecae4ba5db4e02b8aaae8fd) )
- ROM_LOAD( "epr-10957.86", 0x08000, 0x8000, CRC(4ec56860) SHA1(9fd6ba8a68b4cb98183e8ac8643656c251f1c72d) )
- ROM_LOAD( "epr-10960.89", 0x10000, 0x8000, CRC(880e0d44) SHA1(2b2dc144807d1d048ffe81bfd33a77ccf618dd3e) )
- ROM_LOAD( "epr-10959.88", 0x18000, 0x8000, CRC(4deda48f) SHA1(12db2a69286f22cd8243be6faa9a075fafec1dfd) )
+ ROM_LOAD( "epr-10958.ic87", 0x00000, 0x8000, CRC(bb62dbc8) SHA1(f48aa1b38077d801521afe6cd43f1463a22b9431) )
+ ROM_LOAD( "epr-10957.ic86", 0x08000, 0x8000, CRC(4ec56860) SHA1(9fd6ba8a68b4cb98183e8ac8643656c251f1c72d) )
+ ROM_LOAD( "epr-10960.ic89", 0x10000, 0x8000, CRC(880e0d44) SHA1(2b2dc144807d1d048ffe81bfd33a77ccf618dd3e) )
+ ROM_LOAD( "epr-10959.ic88", 0x18000, 0x8000, CRC(4deda48f) SHA1(12db2a69286f22cd8243be6faa9a075fafec1dfd) )
ROM_REGION( 0x0300, "palette", 0 )
- ROM_LOAD( "pri10956.ic20", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) /* MMI 63S141AN - palette red component */
- ROM_LOAD( "pri10955.ic14", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) /* MMI 63S141AN - palette green component */
- ROM_LOAD( "pri10954.ic8", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) /* MMI 63S141AN - palette blue component */
+ ROM_LOAD( "pr10956.ic20", 0x0000, 0x0100, CRC(fd1bba8a) SHA1(4a38239d89f70291df71976b18be49fb24f071ca) ) /* MMI 63S141AN - palette red component */
+ ROM_LOAD( "pr10955.ic14", 0x0100, 0x0100, CRC(72b35df7) SHA1(ef782fb7012c359ed7ca8f4ab42734c4994e473a) ) /* MMI 63S141AN - palette green component */
+ ROM_LOAD( "pr10954.ic8", 0x0200, 0x0100, CRC(b7984867) SHA1(8a03cc98c33e4defe880d10a02a5d0108fa0c9da) ) /* MMI 63S141AN - palette blue component */
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "pr-5317.ic28", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
+ROM_END
+
+ROM_START( tokisensa )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "ic90", 0x00000, 0x8000, CRC(1466b61d) SHA1(99f93813834d3a7c9f6228076d400f74d9b6dea9) )
+ ROM_LOAD( "ic91", 0x10000, 0x8000, CRC(a8479f91) SHA1(0700746fb481fd2bd22ae82c9881aa61222a6379) )
+ ROM_LOAD( "ic92", 0x18000, 0x8000, CRC(b7193b39) SHA1(d40fb8591b1ff83f3d56b955ac11a07496a0adbb) )
+
+ ROM_REGION( 0x10000, "soundcpu", 0 )
+ ROM_LOAD( "epr-10967.ic126", 0x0000, 0x8000, CRC(97966bf2) SHA1(b5a3d36afbb3d6e2e2e2c121609a30dc080ccf13) )
+
+ ROM_REGION( 0x18000, "tiles", 0 )
+ ROM_LOAD( "ic4", 0x00000, 0x8000, CRC(9013b85c) SHA1(c27322245052ffc9d840fe683ed35965c61bf9e8) )
+ ROM_LOAD( "ic5", 0x08000, 0x8000, CRC(e4755cc6) SHA1(33370d556a70e19edce5e0c7fa8b11453ccbe91b) )
+ ROM_LOAD( "ic6", 0x10000, 0x8000, CRC(5bbfbdcc) SHA1(e7e679da874a79dfdda0be58d1352c192635296d) )
+
+ ROM_REGION( 0x20000, "sprites", 0 )
+ ROM_LOAD( "ic87", 0x00000, 0x8000, CRC(fc2bcbd7) SHA1(6b9007f2057e4c860ecae4ba5db4e02b8aaae8fd) )
+ ROM_LOAD( "epr-10957.ic86", 0x08000, 0x8000, CRC(4ec56860) SHA1(9fd6ba8a68b4cb98183e8ac8643656c251f1c72d) )
+ ROM_LOAD( "epr-10960.ic89", 0x10000, 0x8000, CRC(880e0d44) SHA1(2b2dc144807d1d048ffe81bfd33a77ccf618dd3e) )
+ ROM_LOAD( "epr-10959.ic88", 0x18000, 0x8000, CRC(4deda48f) SHA1(12db2a69286f22cd8243be6faa9a075fafec1dfd) )
+
+ ROM_REGION( 0x0300, "palette", 0 )
+ ROM_LOAD( "ic20", 0x0000, 0x0100, CRC(8eee0f72) SHA1(b5694c120f604a5f7cc95618a71ab16a1a6151ed) ) /* MMI 63S141AN - palette red component */
+ ROM_LOAD( "ic14", 0x0100, 0x0100, CRC(3e7babd7) SHA1(d4f8790db4dce75e27156a4c6de2dcef2baf6d76) ) /* MMI 63S141AN - palette green component */
+ ROM_LOAD( "ic8", 0x0200, 0x0100, CRC(371c44a6) SHA1(ac37458d1feb6566b09a795b20c21953d4ab109d) ) /* MMI 63S141AN - palette blue component */
ROM_REGION( 0x0100, "proms", 0 )
ROM_LOAD( "pr-5317.ic28", 0x0000, 0x0100, CRC(648350b8) SHA1(c7986aa9127ef5b50b845434cb4e81dff9861cd2) )
@@ -5371,7 +5412,6 @@ void system1_state::init_blockgal()
}
-
void system1_state::init_wbml()
{
init_bank0c();
@@ -5379,11 +5419,12 @@ void system1_state::init_wbml()
downcast<mc8123_device &>(*m_maincpu).decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), m_maincpu_region->bytes());
}
-void system1_state::init_ufosensi()
+void system1_state::init_tokisens()
{
- init_bank0c();
- m_banked_decrypted_opcodes = std::make_unique<uint8_t[]>(m_maincpu_region->bytes());
- downcast<mc8123_device &>(*m_maincpu).decode(m_maincpu_region->base(), m_banked_decrypted_opcodes.get(), m_maincpu_region->bytes());
+ // HACK otherwise player dies in attract mode and game gives a continue screen, probably the other Z80 timing kludges aren't quite accurate (or the encrypted CPU differs)
+ // could also be different screen refresh, or even just exactly when the first interrupt occurs
+ m_maincpu->set_clock_scale(1.07f);
+ init_wbml();
}
void system1_state::init_dakkochn()
@@ -5578,7 +5619,8 @@ GAME( 1986, gardiab, gardia, sys2_317_0007, gardia, system1_state, i
GAME( 1986, gardiaj, gardia, sys2_317_0006, gardia, system1_state, init_bank44, ROT270, "Coreland / Sega", "Gardia (Japan, 317-0006)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1986, wboysys2, wboy, sys2_315_5177, wboysys2, system1_state, init_bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 1, 315-5177)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, wboysys2a, wboy, sys2_315_5176, wboysys2, system1_state, init_bank0c, ROT0, "Escape (Sega license)", "Wonder Boy (system 2, set 2, 315-5176)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1987, tokisens, 0, sys2, tokisens, system1_state, init_bank0c, ROT90, "Sega", "Toki no Senshi - Chrono Soldier", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, tokisens, 0, sys2xb, tokisens, system1_state, init_tokisens, ROT90, "Sega", "Toki no Senshi - Chrono Soldier (MC-8123, 317-0040)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, tokisensa, tokisens, sys2, tokisensa, system1_state, init_bank0c, ROT90, "Sega", "Toki no Senshi - Chrono Soldier (prototype?)", MACHINE_SUPPORTS_SAVE ) // or bootleg?
GAME( 1987, wbml, 0, sys2xb, wbml, system1_state, init_wbml, ROT0, "Sega / Westone", "Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, wbmljo, wbml, sys2xb, wbml, system1_state, init_wbml, ROT0, "Sega / Westone", "Wonder Boy in Monster Land (Japan Old Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, wbmljb, wbml, sys2xboot, wbml, system1_state, init_bootsys2, ROT0, "bootleg", "Wonder Boy in Monster Land (Japan bootleg)", MACHINE_SUPPORTS_SAVE )
@@ -5591,5 +5633,5 @@ GAME( 1987, wbmld, wbml, sys2xboot, wbml, system1_state, i
GAME( 1987, wbmljod, wbml, sys2xboot, wbml, system1_state, init_bootsys2d, ROT0, "bootleg (mpatou)", "Wonder Boy in Monster Land (decrypted bootleg of Japan Old Ver., MC-8123, 317-0043)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, dakkochn, 0, sys2xb, dakkochn, system1_state, init_dakkochn, ROT0, "White Board", "DakkoChan House (MC-8123B, 317-5014)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, blockgalb, blockgal, sys2x, blockgal, system1_state, init_bootleg, ROT90, "bootleg", "Block Gal (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, ufosensi, 0, sys2rowxb, ufosensi, system1_state, init_ufosensi, ROT0, "Sega", "Ufo Senshi Yohko Chan (MC-8123, 317-0064)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ufosensi, 0, sys2rowxb, ufosensi, system1_state, init_wbml, ROT0, "Sega", "Ufo Senshi Yohko Chan (MC-8123, 317-0064)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, ufosensib, ufosensi, sys2rowxboot, ufosensi, system1_state, init_bootsys2, ROT0, "bootleg", "Ufo Senshi Yohko Chan (bootleg, not encrypted)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/system1.h b/src/mame/includes/system1.h
index 5c8a77f4bd4..0430bcd2587 100644
--- a/src/mame/includes/system1.h
+++ b/src/mame/includes/system1.h
@@ -96,6 +96,7 @@ public:
void init_myherok();
void init_ufosensi();
void init_wbml();
+ void init_tokisens();
void init_bootsys2();
void init_bootsys2d();
void init_choplift();
diff --git a/src/mame/machine/mc8123.cpp b/src/mame/machine/mc8123.cpp
index bb446f89992..0ba137c78c3 100644
--- a/src/mame/machine/mc8123.cpp
+++ b/src/mame/machine/mc8123.cpp
@@ -62,6 +62,7 @@ CPU # Game Notes Seed Upper Limit
317-5014 DakkoChan Jansoh NEC MC-8123B 206850 1C00
317-0029 Block Gal NEC MC-8123B 651 091755 1800?
317-0030 Perfect Billiard 9451EC 1C00
+317-0040 Toki no Senshi - Chrono Soldier 068713 1c00
317-0042 Opa Opa B31FD0 1C00
317-0043 Wonder Boy Monster Land 640708 1C00
317-0054 Shinobi (sound CPU) NEC MC-8123B 652 088992 1800
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index d949ac1cad7..fd68cca56b3 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -36248,7 +36248,8 @@ teddybb // 834-5712 (c) 1985 (S1)
teddybbo // 834-5712 (c) 1985 (S1)
teddybbobl // bootleg
thetogyu // 834-5478 (c) 1984 Sega / Coreland (S1)
-tokisens // (c) 1987 (from a bootleg board) (S2)
+tokisens // (c) 1987
+tokisensa //
ufosensi // 834-6659 (S2)
ufosensib // bootleg
upndown // (c) 1983 (S1)