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
This commit is contained in:
yukaritamura 2018-08-28 00:20:40 +09:00 committed by Vas Crabb
parent b034e281af
commit 1a10a84a36
4 changed files with 121 additions and 119 deletions

View File

@ -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 )

View File

@ -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;

View File

@ -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 //

View File

@ -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;