mirror of
https://github.com/holub/mame
synced 2025-10-07 17:27:06 +03:00
dc-ctrl.cpp: preliminary keyboard emulation, hooked up to The Typing of the Dead, La Keyboard and Lupin the Typing on Naomi [Angelo Salese]
new WORKING machines -------------------- Capcom vs SNK Pro [Samuele Zannoli, R. Belmont, ElSemi, David Haywood, Angelo Salese, Olivier Galibert, MetalliC] Cleopatra Fortune Plus [Samuele Zannoli, R. Belmont, ElSemi, David Haywood, Angelo Salese, Olivier Galibert, MetalliC]
This commit is contained in:
parent
91c61667b8
commit
f74f8b29dc
@ -2557,6 +2557,224 @@ static INPUT_PORTS_START( suchie3 )
|
||||
PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, naomi_state,naomi_mp_r, "KEY5\0KEY2\0KEY3\0KEY4\0KEY1")
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( naomi_kb )
|
||||
PORT_INCLUDE( naomi_mie )
|
||||
PORT_INCLUDE( naomi_debug )
|
||||
|
||||
PORT_START("P1.M")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_NAME("P1 Left Control") PORT_PLAYER(1)
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_NAME("P1 Left Shift") PORT_PLAYER(1)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_NAME("P1 Left Alt") PORT_PLAYER(1)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LWIN) PORT_NAME("P1 S1") PORT_PLAYER(1)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RCONTROL) PORT_NAME("P1 Right Control") PORT_PLAYER(1)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("P1 Right Shift") PORT_PLAYER(1)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RALT) PORT_NAME("P1 Right Alt") PORT_PLAYER(1)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RWIN) PORT_NAME("P1 S2") PORT_PLAYER(1)
|
||||
|
||||
PORT_START("P1.LD")
|
||||
// TODO: LED information
|
||||
// x--- ---- shift
|
||||
// -x-- ---- power
|
||||
// --x- ---- kana
|
||||
// ---x x--- reserved
|
||||
// ---- -x-- scroll lock
|
||||
// ---- --x- caps lock
|
||||
// ---- ---x num lock
|
||||
|
||||
PORT_START("P1.KC1")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, naomi_state, naomi_kb_r, 0)
|
||||
|
||||
PORT_START("P1.KC2")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P1.KC3")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P1.KC4")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P1.KC5")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P1.KC6")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P1.ROW0")
|
||||
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_UNUSED ) // no operation
|
||||
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // rollover error
|
||||
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // POST error
|
||||
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Undefined error
|
||||
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_A) PORT_NAME("P1 a / A")
|
||||
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_B) PORT_NAME("P1 b / B")
|
||||
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_C) PORT_NAME("P1 c / C")
|
||||
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_D) PORT_NAME("P1 d / D")
|
||||
PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_E) PORT_NAME("P1 e / E")
|
||||
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F) PORT_NAME("P1 f / F")
|
||||
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_G) PORT_NAME("P1 g / G")
|
||||
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_H) PORT_NAME("P1 h / H")
|
||||
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_I) PORT_NAME("P1 i / i")
|
||||
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_J) PORT_NAME("P1 j / J")
|
||||
PORT_BIT(0x00004000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_K) PORT_NAME("P1 k / K")
|
||||
PORT_BIT(0x00008000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_L) PORT_NAME("P1 l / L")
|
||||
PORT_BIT(0x00010000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_M) PORT_NAME("P1 m / M")
|
||||
PORT_BIT(0x00020000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_N) PORT_NAME("P1 n / N")
|
||||
PORT_BIT(0x00040000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_O) PORT_NAME("P1 o / O")
|
||||
PORT_BIT(0x00080000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_P) PORT_NAME("P1 p / P")
|
||||
PORT_BIT(0x00100000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_Q) PORT_NAME("P1 q / Q")
|
||||
PORT_BIT(0x00200000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_R) PORT_NAME("P1 r / R")
|
||||
PORT_BIT(0x00400000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_S) PORT_NAME("P1 s / S")
|
||||
PORT_BIT(0x00800000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_T) PORT_NAME("P1 t / T")
|
||||
PORT_BIT(0x01000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_U) PORT_NAME("P1 u / U")
|
||||
PORT_BIT(0x02000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_V) PORT_NAME("P1 v / V")
|
||||
PORT_BIT(0x04000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_W) PORT_NAME("P1 w / W")
|
||||
PORT_BIT(0x08000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_X) PORT_NAME("P1 x / X")
|
||||
PORT_BIT(0x10000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_Y) PORT_NAME("P1 y / Y")
|
||||
PORT_BIT(0x20000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_Z) PORT_NAME("P1 z / Z")
|
||||
PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_1) PORT_NAME("P1 1 / !")
|
||||
PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_2) PORT_NAME("P1 2 / “")
|
||||
|
||||
PORT_START("P1.ROW1")
|
||||
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_3) PORT_NAME("P1 3 / #")
|
||||
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_4) PORT_NAME("P1 4 / $")
|
||||
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_5) PORT_NAME("P1 5 / %")
|
||||
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_6) PORT_NAME("P1 6 / &")
|
||||
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_7) PORT_NAME("P1 7 / ‘")
|
||||
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_8) PORT_NAME("P1 8 / (")
|
||||
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_9) PORT_NAME("P1 9 / )")
|
||||
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_0) PORT_NAME("P1 0 / ~")
|
||||
PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_ENTER) PORT_NAME("P1 Enter")
|
||||
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_ESC) PORT_NAME("P1 ESC")
|
||||
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("P1 BackSpace")
|
||||
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 TAB")
|
||||
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_SPACE) PORT_NAME("P1 Space")
|
||||
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_MINUS) PORT_NAME("P1 - / =")
|
||||
PORT_BIT(0x00004000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 ^ / ¯")
|
||||
PORT_BIT(0x00008000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 @ / `")
|
||||
PORT_BIT(0x00010000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("P1 [ / {")
|
||||
PORT_BIT(0x00020000, IP_ACTIVE_HIGH, IPT_UNUSED ) // unused for jp keyboard
|
||||
PORT_BIT(0x00040000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("P1 ] / }")
|
||||
PORT_BIT(0x00080000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 ; / +")
|
||||
PORT_BIT(0x00100000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 : / *")
|
||||
PORT_BIT(0x00200000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Hankaku/Zenkaku")
|
||||
PORT_BIT(0x00400000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 , / <")
|
||||
PORT_BIT(0x00800000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 . / >")
|
||||
PORT_BIT(0x01000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 / / ?")
|
||||
PORT_BIT(0x02000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_CAPSLOCK)*/ PORT_NAME("P1 Caps Lock")
|
||||
PORT_BIT(0x04000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F1) PORT_NAME("P1 F1")
|
||||
PORT_BIT(0x08000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F2) PORT_NAME("P1 F2")
|
||||
PORT_BIT(0x10000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F3) PORT_NAME("P1 F3")
|
||||
PORT_BIT(0x20000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F4) PORT_NAME("P1 F4")
|
||||
PORT_BIT(0x40000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F5) PORT_NAME("P1 F5")
|
||||
PORT_BIT(0x80000000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F6) PORT_NAME("P1 F6")
|
||||
|
||||
PORT_START("P1.ROW2")
|
||||
PORT_BIT(0x00000001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F7) PORT_NAME("P1 F7")
|
||||
PORT_BIT(0x00000002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F8) PORT_NAME("P1 F8")
|
||||
PORT_BIT(0x00000004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F9) PORT_NAME("P1 F9")
|
||||
PORT_BIT(0x00000008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F10) PORT_NAME("P1 F10")
|
||||
PORT_BIT(0x00000010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F11) PORT_NAME("P1 F11")
|
||||
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_F12) PORT_NAME("P1 F12")
|
||||
PORT_BIT(0x00000040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Print Screen")
|
||||
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Scroll Lock")
|
||||
PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Pause")
|
||||
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_INSERT) PORT_NAME("P1 Insert")
|
||||
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_HOME) PORT_NAME("P1 Home")
|
||||
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Page Up")
|
||||
PORT_BIT(0x00001000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Delete Forward")
|
||||
PORT_BIT(0x00002000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 End")
|
||||
PORT_BIT(0x00004000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Page Down")
|
||||
PORT_BIT(0x00008000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("P1 Right")
|
||||
PORT_BIT(0x00010000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_LEFT) PORT_NAME("P1 Left")
|
||||
PORT_BIT(0x00020000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_DOWN) PORT_NAME("P1 Down")
|
||||
PORT_BIT(0x00040000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) PORT_CODE(KEYCODE_UP) PORT_NAME("P1 Up")
|
||||
PORT_BIT(0xfff80000, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P1.ROW3")
|
||||
PORT_BIT(0x0000001f, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT(0x00000020, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_F1)*/ PORT_NAME("P1 S3")
|
||||
PORT_BIT(0xffffffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P1.ROW4")
|
||||
PORT_BIT(0x0000007f, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT(0x00000080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Kanji \\ / _")
|
||||
PORT_BIT(0x00000100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Kanji Katakana / Hiragana")
|
||||
PORT_BIT(0x00000200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Kanji \xC2\xA5 / |")
|
||||
PORT_BIT(0x00000400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Kanji Henkan")
|
||||
PORT_BIT(0x00000800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_PLAYER(1) /*PORT_CODE(KEYCODE_?)*/ PORT_NAME("P1 Kanji Muhenkan")
|
||||
PORT_BIT(0xfffff000, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
// TODO: keyboard for player 2
|
||||
PORT_START("P2.M")
|
||||
PORT_DIPNAME( 0x01, 0x00, "P2.ROW0" )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("P2.LD")
|
||||
// TODO: same as above
|
||||
|
||||
PORT_START("P2.KC1")
|
||||
PORT_DIPNAME( 0x01, 0x00, "P2.ROW2" )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("P2.KC2")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P2.KC3")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P2.KC4")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P2.KC5")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("P2.KC6")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
// Atomiswave - inputs are read as standard Dreamcast controllers.
|
||||
// Controller bit patterns:
|
||||
//
|
||||
@ -2785,6 +3003,26 @@ MACHINE_CONFIG_START(naomi_state::naomim4)
|
||||
MCFG_NAOMI_M4_BOARD_ADD("rom_board", "pic_readout", "naomibd_eeprom", WRITE8(*this, dc_state, g1_irq))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*
|
||||
* Naomi M2 with Keyboard controllers
|
||||
*/
|
||||
|
||||
MACHINE_CONFIG_START(naomi_state::naomim2_kb)
|
||||
naomim2(config);
|
||||
MCFG_DC_KEYBOARD_ADD("dcctrl0", "maple_dc", 1, ":P1.M", ":P1.LD", ":P1.KC1", ":P1.KC2", ":P1.KC3", ":P1.KC4", ":P1.KC5", ":P1.KC6")
|
||||
MCFG_DC_KEYBOARD_ADD("dcctrl1", "maple_dc", 2, ":P2.M", ":P2.LD", ":P2.KC1", ":P2.KC2", ":P2.KC3", ":P2.KC4", ":P2.KC5", ":P2.KC6")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*
|
||||
* Naomi GD with Keyboard controllers
|
||||
*/
|
||||
|
||||
MACHINE_CONFIG_START(naomi_state::naomigd_kb)
|
||||
naomigd(config);
|
||||
MCFG_DC_KEYBOARD_ADD("dcctrl0", "maple_dc", 1, ":P1.M", ":P1.LD", ":P1.KC1", ":P1.KC2", ":P1.KC3", ":P1.KC4", ":P1.KC5", ":P1.KC6")
|
||||
MCFG_DC_KEYBOARD_ADD("dcctrl1", "maple_dc", 2, ":P2.M", ":P2.LD", ":P2.KC1", ":P2.KC2", ":P2.KC3", ":P2.KC4", ":P2.KC5", ":P2.KC6")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*
|
||||
* Naomi 2
|
||||
*/
|
||||
@ -10220,8 +10458,8 @@ ROM_END
|
||||
/* 0022 */ GAME( 2000, tduno2, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Touch de Uno! 2 (Japan)", GAME_FLAGS )
|
||||
/* 0023 */ GAME( 2000, 18wheelr, naomi, naomim2, 18wheelr,naomi_state, init_naomi, ROT0, "Sega", "18 Wheeler (deluxe) (Rev A)", GAME_FLAGS )
|
||||
/* 0025 */ GAME( 1999, marstv, naomi, naomim2, marstv, naomi_state, init_naomi, ROT0, "Sega", "Mars TV (Japan)", GAME_FLAGS )
|
||||
/* 0026 */ GAME( 2000, totdo, totd, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "The Typing of the Dead", GAME_FLAGS )
|
||||
/* 0026 */ GAME( 2000, totd, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "The Typing of the Dead (Rev A)", GAME_FLAGS )
|
||||
/* 0026 */ GAME( 2000, totdo, totd, naomim2_kb, naomi_kb, naomi_state, init_naomi, ROT0, "Sega", "The Typing of the Dead", GAME_FLAGS )
|
||||
/* 0026 */ GAME( 2000, totd, naomi, naomim2_kb, naomi_kb, naomi_state, init_naomi, ROT0, "Sega", "The Typing of the Dead (Rev A)", GAME_FLAGS )
|
||||
/* 0027 */ GAME( 2000, smarinef, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Sega Marine Fishing", GAME_FLAGS )
|
||||
/* 0028 */ GAME( 2000, vonot, naomi, naomim2, naomi, naomi_state, init_naomi, ROT0, "Sega", "Virtual On Oratorio Tangram M.S.B.S. ver5.66 2000 Edition", GAME_FLAGS )
|
||||
/* 0030 */ GAME( 2000, qmegamis, naomi, naomim1, naomi, naomi_state, init_naomi, ROT0, "Sega", "Quiz Ah Megamisama", GAME_FLAGS )
|
||||
@ -10387,7 +10625,7 @@ ROM_END
|
||||
// 0015 Virtua Tennis 2 / Power Smash 2 (GDS-0015)
|
||||
/* 0015A */ GAME( 2001, vtennis2, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A)", GAME_FLAGS )
|
||||
/* 0016 */ GAME( 2001, shaktamb, naomigd, naomigd, shaktamb, naomi_state, init_naomigd, ROT0, "Sega", "Shakatto Tambourine Cho Powerup Chu (2K1 AUT) (GDS-0016)", GAME_FLAGS )
|
||||
/* 0017 */ GAME( 2001, keyboard, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "La Keyboard (GDS-0017)", GAME_FLAGS )
|
||||
/* 0017 */ GAME( 2001, keyboard, naomigd, naomigd_kb, naomi_kb, naomi_state, init_naomigd, ROT0, "Sega", "La Keyboard (GDS-0017)", GAME_FLAGS )
|
||||
/* 0018 */ GAME( 2001, lupinsho, naomigd, naomigd, hotd2, naomi_state, init_naomigd, ROT0, "Sega / Eighting", "Lupin The Third - The Shooting (GDS-0018)", GAME_FLAGS )
|
||||
// 0018A Lupin The Third - The Shooting (Rev A) (GDS-0018A) known to exists
|
||||
/* 0019 */ GAME( 2001, vathlete, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_FLAGS )
|
||||
@ -10395,7 +10633,7 @@ ROM_END
|
||||
// 0020A Initial D Arcade Stage (Rev A) (GDS-0020A)
|
||||
/* 0020B */ GAME( 2002, initd, naomi2, naomi2gd, naomi, naomi2_state, init_naomi2, ROT0, "Sega", "Initial D Arcade Stage (Rev B) (Japan) (GDS-0020B)", GAME_FLAGS )
|
||||
// 0021 Lupin The Third - The Typing (GDS-0021)
|
||||
/* 0021A */ GAME( 2002, luptype, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Lupin The Third - The Typing (Rev A) (GDS-0021A)", GAME_FLAGS )
|
||||
/* 0021A */ GAME( 2002, luptype, naomigd, naomigd_kb, naomi_kb, naomi_state, init_naomigd, ROT0, "Sega", "Lupin The Third - The Typing (Rev A) (GDS-0021A)", GAME_FLAGS )
|
||||
/* 0022 */ GAME( 2002, mok, naomigd, naomigd, hotd2, naomi_state, init_naomigd, ROT0, "Sega", "The Maze of the Kings (GDS-0022)", GAME_FLAGS )
|
||||
// 0023 Naomi DIMM Firmware Updater (GDS-0023)
|
||||
/* 0023A */ GAME( 2001, ngdup23a, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Sega", "Naomi DIMM Firmware Updater (2.13) (GDS-0023A)", GAME_FLAGS )
|
||||
@ -10451,7 +10689,7 @@ ROM_END
|
||||
/* 0001 */ GAME( 2001, gundmgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0,"Capcom / Banpresto","Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", GAME_FLAGS )
|
||||
/* 0002 */ GAME( 2001, sfz3ugd, naomigd, naomigd, naomi, naomi_state, init_sfz3ugd, ROT0, "Capcom", "Street Fighter Zero 3 Upper (Japan) (GDL-0002)", GAME_FLAGS )
|
||||
// 0003
|
||||
/* 0004 */ GAME( 2001, cvsgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 Pro (Japan) (GDL-0004)", GAME_FLAGS )
|
||||
/* 0004 */ GAME( 2001, cvsgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom / SNK", "Capcom Vs. SNK Millennium Fight 2000 Pro (Japan) (GDL-0004)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
|
||||
/* 0005 */ GAME( 2001, starseek, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "G.Rev", "Doki Doki Idol Star Seeker (GDL-0005)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
|
||||
/* 0006 */ GAME( 2001, gundmxgd, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Capcom", "Mobile Suit Gundam: Federation Vs. Zeon DX (USA, Japan) (GDL-0006)", GAME_FLAGS )
|
||||
// 0007 Capcom Vs. SNK 2 (GDL-0007)
|
||||
@ -10460,7 +10698,7 @@ ROM_END
|
||||
// 0009
|
||||
/* 0010 */ GAME( 2001, ikaruga, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT270, "Treasure", "Ikaruga (GDL-0010)", GAME_FLAGS )
|
||||
/* 0011 */ GAME( 2002, ggxx, naomigd, naomigd, naomi, naomi_state, init_ggxx, ROT0,"Arc System Works","Guilty Gear XX (GDL-0011)", GAME_FLAGS )
|
||||
/* 0012 */ GAME( 2002, cleoftp, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Altron", "Cleopatra Fortune Plus (GDL-0012)", GAME_FLAGS )
|
||||
/* 0012 */ GAME( 2002, cleoftp, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Altron", "Cleopatra Fortune Plus (GDL-0012)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
|
||||
/* 0013 */ GAME( 2002, moeru, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Altron", "Moeru Casinyo (Japan) (GDL-0013)", GAME_FLAGS )
|
||||
// 0014 Musapey's Choco Marker (GDL-0014)
|
||||
/* 0014A */ GAME( 2002, chocomk, naomigd, naomigd, naomi, naomi_state, init_naomigd, ROT0, "Ecole Software", "Musapey's Choco Marker (Rev A) (GDL-0014A)", GAME_FLAGS )
|
||||
|
@ -66,6 +66,7 @@ class naomi_state : public dc_state
|
||||
|
||||
uint8_t m_mp_mux;
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(naomi_mp_r);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(naomi_kb_r);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(naomi_mp_w);
|
||||
|
||||
uint8_t asciihex_to_dec(uint8_t in);
|
||||
@ -81,9 +82,11 @@ class naomi_state : public dc_state
|
||||
DECLARE_READ64_MEMBER( hotd2_idle_skip_r );
|
||||
void naomi_base(machine_config &config);
|
||||
void naomim2(machine_config &config);
|
||||
void naomim2_kb(machine_config &config);
|
||||
void naomi(machine_config &config);
|
||||
void naomim1(machine_config &config);
|
||||
void naomigd(machine_config &config);
|
||||
void naomigd_kb(machine_config &config);
|
||||
void naomim4(machine_config &config);
|
||||
void naomi_map(address_map &map);
|
||||
void naomi_port(address_map &map);
|
||||
|
@ -3,6 +3,12 @@
|
||||
#include "emu.h"
|
||||
#include "dc-ctrl.h"
|
||||
|
||||
/*******************************
|
||||
*
|
||||
* Dreamcast Controller
|
||||
*
|
||||
******************************/
|
||||
|
||||
DEFINE_DEVICE_TYPE(DC_CONTROLLER, dc_controller_device, "dcctrl", "Dreamcast Controller")
|
||||
|
||||
dc_controller_device::dc_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
@ -48,6 +54,7 @@ void dc_controller_device::maple_w(const uint32_t *data, uint32_t in_size)
|
||||
|
||||
void dc_controller_device::fixed_status(uint32_t *dest)
|
||||
{
|
||||
// TODO: is this right? should be 0x01000000
|
||||
dest[0] = 0x20000000; // Controller
|
||||
dest[1] =
|
||||
((port[2] != nullptr) ? 0x010000 : 0) |
|
||||
@ -73,6 +80,7 @@ void dc_controller_device::free_status(uint32_t *dest)
|
||||
|
||||
void dc_controller_device::read(uint32_t *dest)
|
||||
{
|
||||
// TODO: is this right? should be 0x01000000
|
||||
dest[0] = 0x21000000; // Controller
|
||||
dest[1] =
|
||||
(port[0] ? port[0]->read() : 0xff) |
|
||||
@ -95,3 +103,97 @@ void dc_controller_device::device_start()
|
||||
port[i] = ioport(port_tag[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************
|
||||
*
|
||||
* Dreamcast Keyboard
|
||||
*
|
||||
******************************/
|
||||
|
||||
DEFINE_DEVICE_TYPE(DC_KEYBOARD, dc_keyboard_device, "dckb", "Dreamcast Keyboard")
|
||||
|
||||
dc_keyboard_device::dc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
maple_device(mconfig, DC_KEYBOARD, tag, owner, clock)
|
||||
{
|
||||
memset(port_tag, 0, sizeof(port_tag));
|
||||
|
||||
id = "92key Keyboard for JPN";
|
||||
license = "Produced By or Under License From SEGA ENTERPRISES,LTD.";
|
||||
versions = "Version 1.000,1998/06/12,315-6215-AD ,Key Scan Module: The 1st Edition. 05/20";
|
||||
}
|
||||
|
||||
void dc_keyboard_device::maple_w(const uint32_t *data, uint32_t in_size)
|
||||
{
|
||||
switch(data[0] & 0xff) {
|
||||
case 0x01: // Device request
|
||||
reply_start(5, 0x20, 29);
|
||||
fixed_status(reply_buffer+1);
|
||||
reply_ready_with_delay();
|
||||
break;
|
||||
|
||||
case 0x02: // All status request
|
||||
reply_start(6, 0x20, 49);
|
||||
fixed_status(reply_buffer+1);
|
||||
free_status(reply_buffer+29);
|
||||
reply_ready_with_delay();
|
||||
break;
|
||||
|
||||
case 0x03: // reset - we're stateless where it matters
|
||||
reply_start(7, 0x20, 0);
|
||||
reply_ready_with_delay();
|
||||
break;
|
||||
|
||||
case 0x09: // get condition
|
||||
if(1 || (in_size >= 2 && data[1] == 0x01000000)) {
|
||||
reply_start(8, 0x20, 4);
|
||||
read(reply_buffer+1);
|
||||
reply_ready_with_delay();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void dc_keyboard_device::fixed_status(uint32_t *dest)
|
||||
{
|
||||
// 00000040 00102000 0800000000000000000
|
||||
dest[0] = 0x40000000; // Keyboard
|
||||
dest[1] = 0x00201000; // 1st function
|
||||
dest[2] = 0x00000008; // No 2nd function
|
||||
dest[3] = 0x00000000; // No 3rd function
|
||||
dest[4] = 0x00000002; // Japan region
|
||||
copy_with_spaces(((uint8_t *)dest) + 18, id, 30);
|
||||
copy_with_spaces(((uint8_t *)dest) + 48, license, 60);
|
||||
dest[27] = 0x0190015e; // standby 35mA, max 40mA
|
||||
}
|
||||
|
||||
void dc_keyboard_device::free_status(uint32_t *dest)
|
||||
{
|
||||
copy_with_spaces((uint8_t *)dest, versions, 80);
|
||||
}
|
||||
|
||||
void dc_keyboard_device::read(uint32_t *dest)
|
||||
{
|
||||
dest[0] = 0x40000000; // Keyboard
|
||||
// key code
|
||||
dest[1] =
|
||||
(port[0] ? port[0]->read() : 0) |
|
||||
((port[1] ? port[1]->read() : 0) << 8) |
|
||||
((port[2] ? port[2]->read() : 0) << 16) |
|
||||
((port[3] ? port[3]->read() : 0) << 24);
|
||||
dest[2] =
|
||||
(port[4] ? port[4]->read() : 0) |
|
||||
((port[5] ? port[5]->read() : 0) << 8) |
|
||||
((port[6] ? port[6]->read() : 0) << 16) |
|
||||
((port[7] ? port[7]->read() : 0) << 24);
|
||||
}
|
||||
|
||||
void dc_keyboard_device::device_start()
|
||||
{
|
||||
maple_device::device_start();
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
port[i] = ioport(port_tag[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,6 +55,42 @@ private:
|
||||
ioport_port *port[8];
|
||||
};
|
||||
|
||||
#define MCFG_DC_KEYBOARD_ADD(_tag, _host_tag, _host_port, d0, d1, a0, a1, a2, a3, a4, a5) \
|
||||
MCFG_MAPLE_DEVICE_ADD(_tag, DC_KEYBOARD, 0, _host_tag, _host_port) \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(0, d0); \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(1, d1); \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(2, a0); \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(3, a1); \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(4, a2); \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(5, a3); \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(6, a4); \
|
||||
downcast<dc_controller_device &>(*device).set_port_tag(7, a5);
|
||||
|
||||
|
||||
class dc_keyboard_device : public maple_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
dc_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
void maple_w(const uint32_t *data, uint32_t in_size) override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
void fixed_status(uint32_t *dest);
|
||||
void free_status(uint32_t *dest);
|
||||
void read(uint32_t *dest);
|
||||
|
||||
const char *port_tag[8];
|
||||
const char *id, *license, *versions;
|
||||
|
||||
ioport_port *port[8];
|
||||
};
|
||||
|
||||
DECLARE_DEVICE_TYPE(DC_CONTROLLER, dc_controller_device)
|
||||
DECLARE_DEVICE_TYPE(DC_KEYBOARD, dc_keyboard_device)
|
||||
|
||||
#endif // MAME_MACHINE_DC_CTRL_H
|
||||
|
@ -229,6 +229,7 @@ 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;
|
||||
@ -247,6 +248,39 @@ CUSTOM_INPUT_MEMBER(naomi_state::naomi_mp_r)
|
||||
return retval;
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(naomi_state::naomi_kb_r)
|
||||
{
|
||||
// TODO: player 2 input reading
|
||||
// const int *tagptr = (const int *)param;
|
||||
uint8_t retval = 0;
|
||||
static const char *const keynames[] =
|
||||
{
|
||||
"P1.ROW0", "P1.ROW1", "P1.ROW2", "P1.ROW3", "P1.ROW4"
|
||||
};
|
||||
|
||||
for(int i=0;i<5;i++)
|
||||
{
|
||||
uint32_t row;
|
||||
|
||||
// read the current row
|
||||
row = ioport(keynames[i])->read();
|
||||
|
||||
// if anything is pressed, convert the 32-bit raw value to keycode
|
||||
if(row != 0)
|
||||
{
|
||||
// base value x20
|
||||
retval = i * 0x20;
|
||||
for(int j=0;j<32;j++)
|
||||
{
|
||||
if(row & 1 << j)
|
||||
return retval + j;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
void naomi_state::init_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
|
||||
|
Loading…
Reference in New Issue
Block a user