summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author yukaritamura <35299781+yukaritamura@users.noreply.github.com>2018-08-28 00:20:40 +0900
committer Vas Crabb <cuavas@users.noreply.github.com>2018-08-28 01:20:40 +1000
commit1a10a84a366a1ca59d6897e24a6e3a3f2ea993e2 (patch)
treed8e91711d1164a2b334bea163cf9dced71840899
parentb034e281af09cd29b00af536296ea5b70d39ded6 (diff)
Add Jongputer support (#3912)
* Add Jongputer support Jongputer was an origin of mahjong video games, developed by Alpha Denshi at 1981. T.T Mahjong by Taito that was already supported by mame, and Computer Mahjong by Nichibutsu were licensed variants of the Jongputer. This patch reuses T.T Mahjong's proms to decide palette colors for rendering. This may be inaccurate in terms of emulating the real devices, since I could not find relevant proms on the Jongputer's PCB. Also j1 rom placed beside the AY-3-8910 is still unknown. Address pins seems to be managed by counter logic chips, and probably this is used to realize pseudo sampling voice, "reach". * Jongputer support cleanups - BAD_DUMP marks for reused proms - Mark T.T Mahjong as a clone of Jongputer - Use jongpute instead of ttmahjng since the jongpute is parent now - Sort mame.lst entry in the dict order
-rw-r--r--src/mame/drivers/route16.cpp219
-rw-r--r--src/mame/includes/route16.h16
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/video/route16.cpp2
4 files changed, 121 insertions, 119 deletions
diff --git a/src/mame/drivers/route16.cpp b/src/mame/drivers/route16.cpp
index 4ce75a8b8ce..60c17d4653e 100644
--- a/src/mame/drivers/route16.cpp
+++ b/src/mame/drivers/route16.cpp
@@ -133,25 +133,25 @@ WRITE8_MEMBER(route16_state::stratvox_sn76477_w)
-/*************************************
+/***************************************************
*
- * T.T Mahjong's multiplixed ports
+ * Jongputer and T.T Mahjong's multiplixed ports
*
- *************************************/
+ ***************************************************/
-WRITE8_MEMBER(route16_state::ttmahjng_input_port_matrix_w)
+WRITE8_MEMBER(route16_state::jongpute_input_port_matrix_w)
{
- m_ttmahjng_port_select = data;
+ m_jongpute_port_select = data;
}
-READ8_MEMBER(route16_state::ttmahjng_p1_matrix_r)
+READ8_MEMBER(route16_state::jongpute_p1_matrix_r)
{
uint8_t ret = 0;
- switch (m_ttmahjng_port_select)
+ switch (m_jongpute_port_select)
{
case 1: ret = ioport("KEY0")->read(); break;
case 2: ret = ioport("KEY1")->read(); break;
@@ -163,11 +163,11 @@ READ8_MEMBER(route16_state::ttmahjng_p1_matrix_r)
return ret;
}
-READ8_MEMBER(route16_state::ttmahjng_p2_matrix_r)
+READ8_MEMBER(route16_state::jongpute_p2_matrix_r)
{
uint8_t ret = 0;
- switch (m_ttmahjng_port_select)
+ switch (m_jongpute_port_select)
{
case 1: ret = ioport("KEY4")->read(); break;
case 2: ret = ioport("KEY5")->read(); break;
@@ -264,13 +264,13 @@ void route16_state::speakres_cpu1_map(address_map &map)
}
-void route16_state::ttmahjng_cpu1_map(address_map &map)
+void route16_state::jongpute_cpu1_map(address_map &map)
{
map(0x0000, 0x3fff).rom();
map(0x4000, 0x43ff).ram().share("sharedram");
map(0x4800, 0x4800).portr("DSW").w(FUNC(route16_state::out0_w));
- map(0x5000, 0x5000).r(FUNC(route16_state::ttmahjng_p2_matrix_r)).w(FUNC(route16_state::out1_w));
- map(0x5800, 0x5800).rw(FUNC(route16_state::ttmahjng_p1_matrix_r), FUNC(route16_state::ttmahjng_input_port_matrix_w));
+ map(0x5000, 0x5000).r(FUNC(route16_state::jongpute_p2_matrix_r)).w(FUNC(route16_state::out1_w));
+ map(0x5800, 0x5800).rw(FUNC(route16_state::jongpute_p1_matrix_r), FUNC(route16_state::jongpute_input_port_matrix_w));
map(0x6800, 0x6800).w("ay8910", FUNC(ay8910_device::data_w));
map(0x6900, 0x6900).w("ay8910", FUNC(ay8910_device::address_w));
map(0x8000, 0xbfff).ram().share("videoram1");
@@ -488,112 +488,93 @@ static INPUT_PORTS_START( spacecho )
INPUT_PORTS_END
-static INPUT_PORTS_START( ttmahjng )
+static INPUT_PORTS_START( jongpute )
PORT_START("DSW") /* IN0 */
- PORT_DIPNAME( 0x01, 0x00, "Unknown 01" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x01, "01" )
- PORT_DIPNAME( 0x02, 0x00, "Unknown 02" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x02, "02" )
- PORT_DIPNAME( 0x04, 0x00, "Unknown 04" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x04, "04" )
- PORT_DIPNAME( 0x08, 0x00, "Unknown 08" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x08, "08" )
- PORT_DIPNAME( 0x10, 0x00, "Unknown 10" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x10, "10" )
- PORT_DIPNAME( 0x20, 0x00, "Unknown 20" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x20, "20" )
- PORT_DIPNAME( 0x40, 0x00, "Unknown 40" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x40, "40" )
- PORT_DIPNAME( 0x80, 0x00, "Unknown 80" )
- PORT_DIPSETTING( 0x00, "00" )
- PORT_DIPSETTING( 0x80, "80" )
+ PORT_DIPNAME( 0x0c, 0x08, "Timer Descrement Speed" )
+ PORT_DIPSETTING( 0x00, "Very Fast" )
+ PORT_DIPSETTING( 0x04, "Fast" )
+ PORT_DIPSETTING( 0x08, "Normal" )
+ PORT_DIPSETTING( 0x0c, "Slow" )
PORT_START("KEY0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_A )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_E )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_I )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_M )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MAHJONG_KAN )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("KEY1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_B )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_F )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_J )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_N )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MAHJONG_REACH )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("KEY2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_C )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_G )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_K )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_CHI )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MAHJONG_RON )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("KEY3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_D )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_H )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_L )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_PON )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("KEY4")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_COCKTAIL
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_COCKTAIL
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_COCKTAIL
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_COCKTAIL
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_A ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_E ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_I ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_M ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MAHJONG_KAN ) PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("KEY5")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_COCKTAIL
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_COCKTAIL
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_COCKTAIL
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_COCKTAIL
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_B ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_F ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_J ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_N ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MAHJONG_REACH ) PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("KEY6")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_COCKTAIL
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_COCKTAIL
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_COCKTAIL
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_COCKTAIL
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_C ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_G ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_K ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_CHI ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MAHJONG_RON ) PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("KEY7")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_COCKTAIL
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_COCKTAIL
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_COCKTAIL
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_COCKTAIL
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_MAHJONG_D ) PORT_COCKTAIL
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_H ) PORT_COCKTAIL
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_L ) PORT_COCKTAIL
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_PON ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
INPUT_PORTS_END
MACHINE_START_MEMBER(route16_state, speakres)
@@ -601,9 +582,9 @@ MACHINE_START_MEMBER(route16_state, speakres)
save_item(NAME(m_speakres_vrx));
}
-MACHINE_START_MEMBER(route16_state, ttmahjng)
+MACHINE_START_MEMBER(route16_state, jongpute)
{
- save_item(NAME(m_ttmahjng_port_select));
+ save_item(NAME(m_jongpute_port_select));
}
void route16_state::init_route16()
@@ -661,7 +642,7 @@ MACHINE_CONFIG_START(route16_state::stratvox)
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(route16_state, screen_update_ttmahjng)
+ MCFG_SCREEN_UPDATE_DRIVER(route16_state, screen_update_jongpute)
/* sound hardware */
MCFG_DEVICE_MODIFY("ay8910")
@@ -709,17 +690,17 @@ MACHINE_CONFIG_START(route16_state::spacecho)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(route16_state::ttmahjng)
+MACHINE_CONFIG_START(route16_state::jongpute)
route16(config);
MCFG_DEVICE_MODIFY("cpu1")
- MCFG_DEVICE_PROGRAM_MAP(ttmahjng_cpu1_map)
+ MCFG_DEVICE_PROGRAM_MAP(jongpute_cpu1_map)
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_IO)
- MCFG_MACHINE_START_OVERRIDE(route16_state, ttmahjng)
+ MCFG_MACHINE_START_OVERRIDE(route16_state, jongpute)
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(route16_state, screen_update_ttmahjng)
+ MCFG_SCREEN_UPDATE_DRIVER(route16_state, screen_update_jongpute)
MCFG_DEVICE_REMOVE("palette")
MCFG_PALETTE_ADD_3BIT_BGR("palette")
@@ -1052,6 +1033,25 @@ ROM_START( ttmahjng )
ROM_LOAD( "ju09", 0x0100, 0x0100, CRC(27d47624) SHA1(ee04ce8043216be8b91413b546479419fca2b917) )
ROM_END
+ROM_START( jongpute )
+ ROM_REGION( 0x10000, "cpu1", 0 )
+ ROM_LOAD( "j2", 0x0000, 0x1000, CRC(6690b6a4) SHA1(ab79faa1ed84d766eee652f3cbdc0296ddb80fe2) )
+ ROM_LOAD( "j3", 0x1000, 0x1000, CRC(985723d3) SHA1(9d7499c48cfc242875a95d01459b8f3252ea41bc) )
+ ROM_LOAD( "j4", 0x2000, 0x1000, CRC(f35ab1e6) SHA1(5b76d05ab9d8b2a88b408cf9e9297ec31a8de33a) )
+ ROM_LOAD( "j5", 0x3000, 0x1000, CRC(77074618) SHA1(73329e945ea578bce1d04c80e09929bfb0e9875b) )
+
+ ROM_REGION( 0x10000, "cpu2", 0 )
+ ROM_LOAD( "j6", 0x0000, 0x1000, CRC(54b349b0) SHA1(e5620b85a24a35d995860c7121f1ddf16f7ea168) )
+
+ /* maybe used for pseudo sampling voice, "reach", that is not emulated yet */
+ ROM_REGION( 0x1000, "unknown", 0 )
+ ROM_LOAD( "j1", 0x0000, 0x1000, CRC(6d6ba272) SHA1(a4efd8daddbbf595ee46484578f544d7ed84e090) )
+
+ ROM_REGION( 0x0200, "proms", 0 )
+ /* not dumped, but ttmahjng roms seem to be compatible completely */
+ ROM_LOAD( "ju03", 0x0000, 0x0100, BAD_DUMP CRC(27d47624) SHA1(ee04ce8043216be8b91413b546479419fca2b917) )
+ ROM_LOAD( "ju09", 0x0100, 0x0100, BAD_DUMP CRC(27d47624) SHA1(ee04ce8043216be8b91413b546479419fca2b917) )
+ROM_END
/*************************************
@@ -1107,4 +1107,5 @@ GAME( 1980, spacecho, speakres, spacecho, spacecho, route16_state, empty_init,
GAME( 1980, spacecho2,speakres, spacecho, spacecho, route16_state, empty_init, ROT270, "bootleg (Gayton Games)", "Space Echo (set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1980, speakhlp, speakres, spacecho, spacecho, route16_state, empty_init, ROT270, "bootleg", "Speak & Help", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
-GAME( 1981, ttmahjng, 0, ttmahjng, ttmahjng, route16_state, empty_init, ROT0, "Taito", "T.T Mahjong", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, jongpute, 0, jongpute, jongpute, route16_state, empty_init, ROT0, "Alpha Denshi Co.", "Jongputer", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // sampling voice is not emulated
+GAME( 1981, ttmahjng, jongpute, jongpute, jongpute, route16_state, empty_init, ROT0, "Alpha Denshi Co. (Taito license)", "T.T Mahjong", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/route16.h b/src/mame/includes/route16.h
index 6d9dd999cf9..658b6743ca5 100644
--- a/src/mame/includes/route16.h
+++ b/src/mame/includes/route16.h
@@ -24,7 +24,7 @@ public:
{}
void routex(machine_config &config);
- void ttmahjng(machine_config &config);
+ void jongpute(machine_config &config);
void spacecho(machine_config &config);
void speakres(machine_config &config);
void stratvox(machine_config &config);
@@ -38,17 +38,17 @@ private:
template<bool cpu1> DECLARE_WRITE8_MEMBER(route16_sharedram_w);
DECLARE_READ8_MEMBER(route16_prot_read);
DECLARE_READ8_MEMBER(routex_prot_read);
- DECLARE_WRITE8_MEMBER(ttmahjng_input_port_matrix_w);
- DECLARE_READ8_MEMBER(ttmahjng_p1_matrix_r);
- DECLARE_READ8_MEMBER(ttmahjng_p2_matrix_r);
+ DECLARE_WRITE8_MEMBER(jongpute_input_port_matrix_w);
+ DECLARE_READ8_MEMBER(jongpute_p1_matrix_r);
+ DECLARE_READ8_MEMBER(jongpute_p2_matrix_r);
DECLARE_READ8_MEMBER(speakres_in3_r);
DECLARE_WRITE8_MEMBER(speakres_out2_w);
DECLARE_WRITE8_MEMBER(stratvox_sn76477_w);
DECLARE_MACHINE_START(speakres);
- DECLARE_MACHINE_START(ttmahjng);
+ DECLARE_MACHINE_START(jongpute);
uint32_t screen_update_route16(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_ttmahjng(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_jongpute(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void cpu1_io_map(address_map &map);
void route16_cpu1_map(address_map &map);
@@ -57,7 +57,7 @@ private:
void speakres_cpu1_map(address_map &map);
void stratvox_cpu1_map(address_map &map);
void stratvox_cpu2_map(address_map &map);
- void ttmahjng_cpu1_map(address_map &map);
+ void jongpute_cpu1_map(address_map &map);
required_device<cpu_device> m_cpu1;
required_device<cpu_device> m_cpu2;
@@ -69,7 +69,7 @@ private:
required_device<palette_device> m_palette;
uint8_t m_protection_data;
- uint8_t m_ttmahjng_port_select;
+ uint8_t m_jongpute_port_select;
int m_speakres_vrx;
uint8_t m_flipscreen;
uint8_t m_palette_1;
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 2c5d40eef43..851ab70b5e5 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -33094,6 +33094,7 @@ ron2 // (c) 1981 Sanritsu
roul // (c) 1990
@source:route16.cpp
+jongpute // 1981 Alpha Denshi Co.
route16 // (c) 1981 Tehkan/Sun + Centuri license
route16a // (c) 1981 Tehkan/Sun + Centuri license
route16bl // bootleg
@@ -33107,7 +33108,7 @@ speakresb // bootleg
stratvox // [1980 Sun Electronics] Taito
stratvoxa // [1980 Sun Electronics] Taito
stratvoxb // bootleg
-ttmahjng // Taito
+ttmahjng // 1981 Alpha Denshi Co. / Taito
@source:rowamet.cpp
heavymtl //
diff --git a/src/mame/video/route16.cpp b/src/mame/video/route16.cpp
index f37de62a68d..5dc1ea60bf1 100644
--- a/src/mame/video/route16.cpp
+++ b/src/mame/video/route16.cpp
@@ -109,7 +109,7 @@ uint32_t route16_state::screen_update_route16(screen_device &screen, bitmap_rgb3
* The Stratovox video connections have been verified from the schematics
*/
-uint32_t route16_state::screen_update_ttmahjng(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+uint32_t route16_state::screen_update_jongpute(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
offs_t offs;