mirror of
https://github.com/holub/mame
synced 2025-04-26 02:07:14 +03:00
Naomi: Mahjong panel simulation
note: there is more errors in JVS (host?) producing 'JVS checksum error's, resulting wrong reading of KEY2 line
This commit is contained in:
parent
f7ad93826a
commit
12643dfbda
@ -2400,35 +2400,22 @@ static INPUT_PORTS_START( naomi_mp )
|
||||
PORT_INCLUDE( naomi_mie )
|
||||
PORT_INCLUDE( naomi_debug )
|
||||
|
||||
PORT_START("P1") /* inputs are all there, it needs a mux write mechanism of some sort ... */
|
||||
PORT_DIPNAME( 0x0100, 0x0000, "SYSA" )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
|
||||
PORT_START("OUTPUT")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_CHANGED_MEMBER(DEVICE_SELF, naomi_state,naomi_mp_w, NULL)
|
||||
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, naomi_state,naomi_mp_r, "KEY1\0KEY2\0KEY3\0KEY4\0KEY5")
|
||||
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("KEY1")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) //TODO: mahjong panel test & service buttons are presumably here
|
||||
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_FLIP_FLOP )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_MAHJONG_LAST_CHANCE )
|
||||
PORT_START("KEY2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
|
||||
@ -2440,7 +2427,7 @@ static INPUT_PORTS_START( naomi_mp )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_MAHJONG_A )
|
||||
PORT_START("KEY3")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MAHJONG_BET )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_MAHJONG_REACH )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_MAHJONG_N )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_MAHJONG_J )
|
||||
@ -2467,6 +2454,12 @@ static INPUT_PORTS_START( naomi_mp )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_MAHJONG_D )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( suchie3 )
|
||||
PORT_INCLUDE( naomi_mp )
|
||||
PORT_MODIFY("P1")
|
||||
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, naomi_state,naomi_mp_r, "KEY5\0KEY2\0KEY3\0KEY4\0KEY1")
|
||||
INPUT_PORTS_END
|
||||
|
||||
// Atomiswave - inputs are read as standard Dreamcast controllers.
|
||||
// Controller bit patterns:
|
||||
//
|
||||
@ -9055,7 +9048,7 @@ GAME( 2003, puyofevp, naomi, naomim1, naomi, naomi_state, naomi, ROT0, "Sega", "
|
||||
|
||||
/* 841-xxxxx ("Licensed by Sega" Naomi cart games)*/
|
||||
/* 0001 */ GAME( 1999, pstone, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Capcom", "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_FLAGS )
|
||||
/* 0002 */ GAME( 1999, suchie3, naomi, naomim2, naomi_mp,naomi_state,naomi_mp,ROT0, "Jaleco", "Idol Janshi Suchie-Pai 3 (JPN)", GAME_FLAGS )
|
||||
/* 0002 */ GAME( 1999, suchie3, naomi, naomim2, suchie3, naomi_state,naomi_mp,ROT0, "Jaleco", "Idol Janshi Suchie-Pai 3 (JPN)", GAME_FLAGS )
|
||||
/* 0003 */ GAME( 1999, doa2, naomi, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 0003 */ GAME( 2000, doa2m, doa2, naomim2, naomi, naomi_state, naomi, ROT0, "Tecmo", "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
/* 0004 */ GAME( 1999, shangril, naomi, naomim2, naomi_mp,naomi_state,naomi_mp,ROT0, "Marvelous Ent.", "Dengen Tenshi Taisen Janshi Shangri-la (JPN, USA, EXP, KOR, AUS)", GAME_FLAGS )
|
||||
|
@ -62,9 +62,12 @@ class naomi_state : public dc_state
|
||||
DECLARE_READ64_MEMBER( aw_modem_r );
|
||||
DECLARE_WRITE64_MEMBER( aw_modem_w );
|
||||
|
||||
UINT8 m_mp_mux;
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(naomi_mp_r);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(naomi_mp_w);
|
||||
|
||||
inline int decode_reg32_64(UINT32 offset, UINT64 mem_mask, UINT64 *shift);
|
||||
|
||||
int jvsboard_type;
|
||||
UINT16 actel_id;
|
||||
|
||||
UINT8 aw_ctrl_type;
|
||||
|
@ -192,7 +192,6 @@ DRIVER_INIT_MEMBER(naomi_state,naomi)
|
||||
{
|
||||
//m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this); // rev e bios
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r),this)); // rev h bios
|
||||
jvsboard_type = JVSBD_DEFAULT;
|
||||
actel_id = 0xffff;
|
||||
|
||||
create_pic_from_retdat();
|
||||
@ -201,18 +200,35 @@ DRIVER_INIT_MEMBER(naomi_state,naomi)
|
||||
DRIVER_INIT_MEMBER(naomi_state,naomi2)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi2_biose_idle_skip_r),this)); // rev e bios
|
||||
jvsboard_type = JVSBD_DEFAULT;
|
||||
actel_id = 0xffff;
|
||||
|
||||
create_pic_from_retdat();
|
||||
}
|
||||
|
||||
INPUT_CHANGED_MEMBER(naomi_state::naomi_mp_w)
|
||||
{
|
||||
m_mp_mux = newval;
|
||||
}
|
||||
CUSTOM_INPUT_MEMBER(naomi_state::naomi_mp_r)
|
||||
{
|
||||
const char *tagptr = (const char *)param;
|
||||
UINT8 retval = 0;
|
||||
|
||||
for (int i = 0x80; i >= 0x08; i >>= 1)
|
||||
{
|
||||
if (m_mp_mux & i)
|
||||
retval |= ioport(tagptr)->read_safe(0);
|
||||
tagptr += strlen(tagptr) + 1;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(naomi_state,naomi_mp)
|
||||
{
|
||||
//m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this); // rev e bios
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r),this)); // rev h bios
|
||||
jvsboard_type = JVSBD_MAHJONG;
|
||||
actel_id = 0xffff;
|
||||
m_mp_mux = 0;
|
||||
|
||||
create_pic_from_retdat();
|
||||
}
|
||||
@ -221,7 +237,6 @@ DRIVER_INIT_MEMBER(naomi_state,naomigd)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this)); // rev e bios
|
||||
//m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r),this)); // rev h bios
|
||||
jvsboard_type = JVSBD_DEFAULT;
|
||||
actel_id = 0xffff;
|
||||
|
||||
create_pic_from_retdat();
|
||||
@ -231,8 +246,8 @@ DRIVER_INIT_MEMBER(naomi_state,naomigd_mp)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this)); // rev e bios
|
||||
//m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r),this)); // rev h bios
|
||||
jvsboard_type = JVSBD_MAHJONG;
|
||||
actel_id = 0xffff;
|
||||
m_mp_mux = 0;
|
||||
|
||||
create_pic_from_retdat();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user