diff options
Diffstat (limited to 'src/mame/machine/nb1413m3.cpp')
-rw-r--r-- | src/mame/machine/nb1413m3.cpp | 881 |
1 files changed, 0 insertions, 881 deletions
diff --git a/src/mame/machine/nb1413m3.cpp b/src/mame/machine/nb1413m3.cpp deleted file mode 100644 index 00f99cd24ac..00000000000 --- a/src/mame/machine/nb1413m3.cpp +++ /dev/null @@ -1,881 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Takahiro Nogi -/****************************************************************************** - - Machine Hardware for Nichibutsu Mahjong series. - - Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 1999/11/05 - - -******************************************************************************/ -/****************************************************************************** -Memo: - -******************************************************************************/ - -#include "emu.h" -#include "machine/nb1413m3.h" - -#include "cpu/z80/z80.h" - - -#define NB1413M3_DEBUG 0 - -#define NB1413M3_TIMER_BASE 20000000 - -DEFINE_DEVICE_TYPE(NB1413M3, nb1413m3_device, "nb1413m3", "NB1413 Mahjong Custom") - -nb1413m3_device::nb1413m3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, NB1413M3, tag, owner, clock), - m_maincpu(*this, "^maincpu"), - m_sndromrgntag("voice"), - m_sndrombank1(0), - m_sndrombank2(0), - m_busyctr(0), - m_outcoin_flag(1), - m_inputport(0xff), - m_busyflag(1), - m_74ls193_counter(0), - m_nmi_count(0), - m_nmi_clock(0), - m_nmi_enable(0), - m_counter(0), - m_gfxradr_l(0), - m_gfxradr_h(0), - m_gfxrombank(0), - m_outcoin_enable(0), - m_led(*this, "led0") -{ -} - - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void nb1413m3_device::device_start() -{ - m_led.resolve(); - m_timer_cb = timer_alloc(TIMER_CB); - m_timer_cb->adjust(attotime::zero); - - save_item(NAME(m_nb1413m3_type)); - save_item(NAME(m_sndrombank1)); - save_item(NAME(m_sndrombank2)); - save_item(NAME(m_busyctr)); - save_item(NAME(m_busyflag)); - save_item(NAME(m_inputport)); - save_item(NAME(m_74ls193_counter)); - save_item(NAME(m_nmi_count)); - save_item(NAME(m_nmi_clock)); - save_item(NAME(m_nmi_enable)); - save_item(NAME(m_counter)); - save_item(NAME(m_gfxradr_l)); - save_item(NAME(m_gfxradr_h)); - save_item(NAME(m_gfxrombank)); - save_item(NAME(m_outcoin_enable)); - save_item(NAME(m_outcoin_flag)); -} - -//------------------------------------------------- -// device_reset - device-specific startup -//------------------------------------------------- - -void nb1413m3_device::device_reset() -{ - m_nmi_clock = 0; - m_nmi_enable = 0; - m_nmi_count = 0; - m_74ls193_counter = 0; - m_counter = 0; - m_sndromrgntag = "voice"; - m_sndrombank1 = 0; - m_sndrombank2 = 0; - m_busyctr = 0; - m_busyflag = 1; - m_gfxradr_l = 0; - m_gfxradr_h = 0; - m_gfxrombank = 0; - m_inputport = 0xff; - m_outcoin_flag = 1; -} - -/***************************************************************************** - DEVICE HANDLERS -*****************************************************************************/ - -void nb1413m3_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - switch (id) - { - case TIMER_CB: - timer_callback(ptr, param); - break; - default: - throw emu_fatalerror("Unknown id in nb1413m3_device::device_timer"); - } -} - -/* TODO: is all of this actually programmable? */ -TIMER_CALLBACK_MEMBER( nb1413m3_device::timer_callback ) -{ - m_timer_cb->adjust(attotime::from_hz(NB1413M3_TIMER_BASE) * 256); - - m_74ls193_counter++; - m_74ls193_counter &= 0x0f; - - if (m_74ls193_counter == 0x0f) - { - if (m_nmi_enable) - { - m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); - m_nmi_count++; - } - - switch (m_nb1413m3_type) - { - case NB1413M3_TAIWANMB: - m_74ls193_counter = 0x05; - break; - case NB1413M3_OMOTESND: - m_74ls193_counter = 0x05; - break; - case NB1413M3_PASTELG: - m_74ls193_counter = 0x02; - break; - case NB1413M3_HYHOO: - case NB1413M3_HYHOO2: - m_74ls193_counter = 0x05; - break; - } - } -} - - -void nb1413m3_device::nmi_clock_w(uint8_t data) -{ - m_nmi_clock = data; - - switch (m_nb1413m3_type) - { - case NB1413M3_APPAREL: - case NB1413M3_CITYLOVE: - case NB1413M3_MCITYLOV: - case NB1413M3_SECOLOVE: - case NB1413M3_SEIHA: - case NB1413M3_SEIHAM: - case NB1413M3_IEMOTO: - case NB1413M3_IEMOTOM: - case NB1413M3_BIJOKKOY: - case NB1413M3_BIJOKKOG: - case NB1413M3_RYUUHA: - case NB1413M3_OJOUSAN: - case NB1413M3_OJOUSANM: - case NB1413M3_KORINAI: - case NB1413M3_KORINAIM: - case NB1413M3_HOUSEMNQ: - case NB1413M3_HOUSEMN2: - case NB1413M3_LIVEGAL: - case NB1413M3_ORANGEC: - case NB1413M3_ORANGECI: - case NB1413M3_VIPCLUB: - case NB1413M3_MMSIKAKU: - case NB1413M3_KANATUEN: - case NB1413M3_KYUHITO: - m_nmi_clock -= 1; - break; -#if 1 - case NB1413M3_NIGHTLOV: - m_nmi_enable = ((data & 0x08) >> 3); - m_nmi_enable |= ((data & 0x01) ^ 0x01); - m_nmi_clock -= 1; - - m_sndrombank1 = 1; - break; -#endif - } - - m_74ls193_counter = ((m_nmi_clock & 0xf0) >> 4); - -} - -uint8_t nb1413m3_device::sndrom_r(address_space &space, offs_t offset) -{ - int rombank; - - // get top 8 bits of the I/O port address (FIXME: do this the correct way with 16-bit addressing) - offset = (offset << 8) | (downcast<z80_device &>(space.device()).state_int(Z80_BC) >> 8); - - switch (m_nb1413m3_type) - { - case NB1413M3_IEMOTO: - case NB1413M3_IEMOTOM: - case NB1413M3_SEIHA: - case NB1413M3_SEIHAM: - case NB1413M3_RYUUHA: - case NB1413M3_OJOUSAN: - case NB1413M3_OJOUSANM: - case NB1413M3_MJSIKAKU: - case NB1413M3_MMSIKAKU: - case NB1413M3_KORINAI: - case NB1413M3_KORINAIM: - rombank = (m_sndrombank2 << 1) + (m_sndrombank1 & 0x01); - break; - case NB1413M3_HYHOO: - case NB1413M3_HYHOO2: - rombank = (m_sndrombank1 & 0x01); - break; - case NB1413M3_APPAREL: // no samples - case NB1413M3_NIGHTLOV: // 0-1 - case NB1413M3_SECOLOVE: // 0-1 - case NB1413M3_CITYLOVE: // 0-1 - case NB1413M3_MCITYLOV: // 0-1 - case NB1413M3_HOUSEMNQ: // 0-1 - case NB1413M3_HOUSEMN2: // 0-1 - case NB1413M3_LIVEGAL: // 0-1 - case NB1413M3_ORANGEC: // 0-1 - case NB1413M3_ORANGECI: // 0-1 - case NB1413M3_VIPCLUB: // 0-1 - case NB1413M3_KAGUYA: // 0-3 - case NB1413M3_KAGUYA2: // 0-3 + 4-5 for protection - case NB1413M3_BIJOKKOY: // 0-7 - case NB1413M3_BIJOKKOG: // 0-7 - case NB1413M3_OTONANO: // 0-7 - case NB1413M3_MJCAMERA: // 0 + 4-5 for protection - case NB1413M3_IDHIMITU: // 0 + 4-5 for protection - case NB1413M3_KANATUEN: // 0 + 6 for protection - rombank = m_sndrombank1; - break; - case NB1413M3_TAIWANMB: - case NB1413M3_OMOTESND: - case NB1413M3_SCANDAL: - case NB1413M3_SCANDALM: - case NB1413M3_MJFOCUSM: - case NB1413M3_BANANADR: - offset = (((offset & 0x7f00) >> 8) | ((offset & 0x0080) >> 0) | ((offset & 0x007f) << 8)); - rombank = (m_sndrombank1 >> 1); - break; - case NB1413M3_MMCAMERA: - case NB1413M3_MSJIKEN: - case NB1413M3_HANAMOMO: - case NB1413M3_TELMAHJN: - case NB1413M3_GIONBANA: - case NB1413M3_MGION: - case NB1413M3_MGMEN89: - case NB1413M3_MJFOCUS: - case NB1413M3_GALKOKU: - case NB1413M3_HYOUBAN: - case NB1413M3_MJNANPAS: - case NB1413M3_MLADYHTR: - case NB1413M3_CLUB90S: - case NB1413M3_OHPAIPEE: - case NB1413M3_TOGENKYO: - case NB1413M3_LOVEHOUS: - case NB1413M3_CHINMOKU: - case NB1413M3_GALKAIKA: - case NB1413M3_MCONTEST: - case NB1413M3_UCHUUAI: - case NB1413M3_TOKIMBSJ: - case NB1413M3_TOKYOGAL: - case NB1413M3_MAIKO: - case NB1413M3_MMAIKO: - case NB1413M3_HANAOJI: - case NB1413M3_PAIRSNB: - case NB1413M3_PAIRSTEN: - default: - rombank = (m_sndrombank1 >> 1); - break; - } - - offset += 0x08000 * rombank; - -#if NB1413M3_DEBUG - popmessage("Sound ROM %02X:%05X [B1:%02X B2:%02X]", rombank, offset, m_sndrombank1, m_sndrombank2); -#endif - - if (offset < machine().root_device().memregion(m_sndromrgntag)->bytes()) - return machine().root_device().memregion(m_sndromrgntag)->base()[offset]; - else - { - popmessage("read past sound ROM length (%05x[%02X])",offset, rombank); - return 0; - } -} - -void nb1413m3_device::sndrombank1_w(uint8_t data) -{ - // if (data & 0x02) coin counter ? - outcoin_w(data); // (data & 0x04) >> 2; - m_nmi_enable = ((data & 0x20) >> 5); - m_sndrombank1 = (((data & 0xc0) >> 5) | ((data & 0x10) >> 4)); -} - -// bikkuri, to be exposed in driver -void nb1413m3_device::sndrombank1_alt_w(uint8_t data) -{ - machine().bookkeeping().coin_counter_w(0, data & 0x02); - machine().bookkeeping().coin_counter_w(1, data & 0x01); - //outcoin_w(data); // (data & 0x04) >> 2; - m_outcoin_enable = (data & 0x04) >> 2; - - if (m_outcoin_enable) - { - if (m_counter++ == 2) - { - m_outcoin_flag ^= 1; - m_counter = 0; - } - } - - m_nmi_enable = ((data & 0x80) >> 7); - //m_sndrombank1 = (((data & 0xc0) >> 5) | ((data & 0x10) >> 4)); -} - -void nb1413m3_device::sndrombank2_w(uint8_t data) -{ - m_sndrombank2 = (data & 0x03); -} - -uint8_t nb1413m3_device::gfxrom_r(offs_t offset) -{ - uint8_t *GFXROM = machine().root_device().memregion("gfx1")->base(); - - return GFXROM[(0x20000 * (m_gfxrombank | ((m_sndrombank1 & 0x02) << 3))) + ((0x0200 * m_gfxradr_h) + (0x0002 * m_gfxradr_l)) + (offset & 0x01)]; -} - -void nb1413m3_device::gfxrombank_w(uint8_t data) -{ - m_gfxrombank = (((data & 0xc0) >> 4) + (data & 0x03)); -} - -void nb1413m3_device::gfxradr_l_w(uint8_t data) -{ - m_gfxradr_l = data; -} - -void nb1413m3_device::gfxradr_h_w (uint8_t data) -{ - m_gfxradr_h = data; -} - -void nb1413m3_device::inputportsel_w(uint8_t data) -{ - m_inputport = data; -} - -READ_LINE_MEMBER( nb1413m3_device::busyflag_r ) -{ - return m_busyflag & 0x01; -} - -WRITE_LINE_MEMBER( nb1413m3_device::busyflag_w ) -{ - m_busyflag = state; -} - -uint8_t nb1413m3_device::inputport0_r() -{ - return ((machine().root_device().ioport("SYSTEM")->read() & 0xfd) | ((m_outcoin_flag & 0x01) << 1)); -} - -uint8_t nb1413m3_device::inputport1_r() -{ - device_t &root = machine().root_device(); - switch (m_nb1413m3_type) - { - case NB1413M3_HYHOO: - case NB1413M3_HYHOO2: - switch ((m_inputport ^ 0xff) & 0x07) - { - case 0x01: return root.ioport("IN0")->read(); - case 0x02: return root.ioport("IN1")->read(); - case 0x04: return 0xff; - default: return 0xff; - } - case NB1413M3_MSJIKEN: - case NB1413M3_TELMAHJN: - if (root.ioport("DSWA")->read() & 0x80) - { - switch ((m_inputport ^ 0xff) & 0x1f) - { - case 0x01: return root.ioport("KEY0")->read(); - case 0x02: return root.ioport("KEY1")->read(); - case 0x04: return root.ioport("KEY2")->read(); - case 0x08: return root.ioport("KEY3")->read(); - case 0x10: return root.ioport("KEY4")->read(); - default: return (root.ioport("KEY0")->read() & root.ioport("KEY1")->read() & root.ioport("KEY2")->read() - & root.ioport("KEY3")->read() & root.ioport("KEY4")->read()); - } - } - else return root.ioport("JAMMA2")->read(); - case NB1413M3_PAIRSNB: - case NB1413M3_PAIRSTEN: - case NB1413M3_OHPAIPEE: - case NB1413M3_TOGENKYO: - return root.ioport("P1")->read(); - default: - switch ((m_inputport ^ 0xff) & 0x1f) - { - case 0x01: return root.ioport("KEY0")->read(); - case 0x02: return root.ioport("KEY1")->read(); - case 0x04: return root.ioport("KEY2")->read(); - case 0x08: return root.ioport("KEY3")->read(); - case 0x10: return root.ioport("KEY4")->read(); - default: return (root.ioport("KEY0")->read() & root.ioport("KEY1")->read() & root.ioport("KEY2")->read() - & root.ioport("KEY3")->read() & root.ioport("KEY4")->read()); - } - } -} - -uint8_t nb1413m3_device::inputport2_r() -{ - device_t &root = machine().root_device(); - switch (m_nb1413m3_type) - { - case NB1413M3_HYHOO: - case NB1413M3_HYHOO2: - switch ((m_inputport ^ 0xff) & 0x07) - { - case 0x01: return 0xff; - case 0x02: return 0xff; - case 0x04: return root.ioport("IN2")->read(); - default: return 0xff; - } - case NB1413M3_MSJIKEN: - case NB1413M3_TELMAHJN: - if (root.ioport("DSWA")->read() & 0x80) - { - switch ((m_inputport ^ 0xff) & 0x1f) - { - case 0x01: return root.ioport("KEY5")->read(); - case 0x02: return root.ioport("KEY6")->read(); - case 0x04: return root.ioport("KEY7")->read(); - case 0x08: return root.ioport("KEY8")->read(); - case 0x10: return root.ioport("KEY9")->read(); - default: return (root.ioport("KEY5")->read() & root.ioport("KEY6")->read() & root.ioport("KEY7")->read() - & root.ioport("KEY8")->read() & root.ioport("KEY9")->read()); - } - } - else return root.ioport("JAMMA1")->read(); - case NB1413M3_PAIRSNB: - case NB1413M3_PAIRSTEN: - case NB1413M3_OHPAIPEE: - case NB1413M3_TOGENKYO: - return root.ioport("P2")->read(); - default: - switch ((m_inputport ^ 0xff) & 0x1f) - { - case 0x01: return root.ioport("KEY5")->read(); - case 0x02: return root.ioport("KEY6")->read(); - case 0x04: return root.ioport("KEY7")->read(); - case 0x08: return root.ioport("KEY8")->read(); - case 0x10: return root.ioport("KEY9")->read(); - default: return (root.ioport("KEY5")->read() & root.ioport("KEY6")->read() & root.ioport("KEY7")->read() - & root.ioport("KEY8")->read() & root.ioport("KEY9")->read()); - } - } -} - -uint8_t nb1413m3_device::inputport3_r() -{ - switch (m_nb1413m3_type) - { - case NB1413M3_TAIWANMB: - case NB1413M3_IEMOTOM: - case NB1413M3_OJOUSANM: - case NB1413M3_SEIHAM: - case NB1413M3_RYUUHA: - case NB1413M3_KORINAIM: - case NB1413M3_HYOUBAN: - case NB1413M3_TOKIMBSJ: - case NB1413M3_MJFOCUSM: - case NB1413M3_SCANDALM: - case NB1413M3_BANANADR: - case NB1413M3_FINALBNY: - case NB1413M3_MMSIKAKU: - return ((m_outcoin_flag & 0x01) << 1); - default: - return 0xff; - } -} - -uint8_t nb1413m3_device::dipsw1_r() -{ - device_t &root = machine().root_device(); - switch (m_nb1413m3_type) - { - case NB1413M3_KANATUEN: - case NB1413M3_KYUHITO: - return root.ioport("DSWB")->read(); - case NB1413M3_TAIWANMB: - return ((root.ioport("DSWA")->read() & 0xf0) | ((root.ioport("DSWB")->read() & 0xf0) >> 4)); - case NB1413M3_OTONANO: - case NB1413M3_MJCAMERA: - case NB1413M3_IDHIMITU: - case NB1413M3_KAGUYA2: - return (((root.ioport("DSWA")->read() & 0x0f) << 4) | (root.ioport("DSWB")->read() & 0x0f)); - case NB1413M3_SCANDAL: - case NB1413M3_SCANDALM: - case NB1413M3_MJFOCUSM: - case NB1413M3_GALKOKU: - case NB1413M3_HYOUBAN: - case NB1413M3_GALKAIKA: - case NB1413M3_MCONTEST: - case NB1413M3_UCHUUAI: - case NB1413M3_TOKIMBSJ: - case NB1413M3_TOKYOGAL: - return ((root.ioport("DSWA")->read() & 0x0f) | ((root.ioport("DSWB")->read() & 0x0f) << 4)); - case NB1413M3_TRIPLEW1: - case NB1413M3_NTOPSTAR: - case NB1413M3_PSTADIUM: - case NB1413M3_TRIPLEW2: - case NB1413M3_VANILLA: - case NB1413M3_FINALBNY: - case NB1413M3_MJLSTORY: - case NB1413M3_QMHAYAKU: - case NB1413M3_MJGOTTUB: - return (((root.ioport("DSWB")->read() & 0x01) >> 0) | ((root.ioport("DSWB")->read() & 0x04) >> 1) | - ((root.ioport("DSWB")->read() & 0x10) >> 2) | ((root.ioport("DSWB")->read() & 0x40) >> 3) | - ((root.ioport("DSWA")->read() & 0x01) << 4) | ((root.ioport("DSWA")->read() & 0x04) << 3) | - ((root.ioport("DSWA")->read() & 0x10) << 2) | ((root.ioport("DSWA")->read() & 0x40) << 1)); - default: - return machine().root_device().ioport("DSWA")->read(); - } -} - -uint8_t nb1413m3_device::dipsw2_r() -{ - device_t &root = machine().root_device(); - switch (m_nb1413m3_type) - { - case NB1413M3_KANATUEN: - case NB1413M3_KYUHITO: - return root.ioport("DSWA")->read(); - case NB1413M3_TAIWANMB: - return (((root.ioport("DSWA")->read() & 0x0f) << 4) | (root.ioport("DSWB")->read() & 0x0f)); - case NB1413M3_OTONANO: - case NB1413M3_MJCAMERA: - case NB1413M3_IDHIMITU: - case NB1413M3_KAGUYA2: - return ((root.ioport("DSWA")->read() & 0xf0) | ((root.ioport("DSWB")->read() & 0xf0) >> 4)); - case NB1413M3_SCANDAL: - case NB1413M3_SCANDALM: - case NB1413M3_MJFOCUSM: - case NB1413M3_GALKOKU: - case NB1413M3_HYOUBAN: - case NB1413M3_GALKAIKA: - case NB1413M3_MCONTEST: - case NB1413M3_UCHUUAI: - case NB1413M3_TOKIMBSJ: - case NB1413M3_TOKYOGAL: - return (((root.ioport("DSWA")->read() & 0xf0) >> 4) | (root.ioport("DSWB")->read() & 0xf0)); - case NB1413M3_TRIPLEW1: - case NB1413M3_NTOPSTAR: - case NB1413M3_PSTADIUM: - case NB1413M3_TRIPLEW2: - case NB1413M3_VANILLA: - case NB1413M3_FINALBNY: - case NB1413M3_MJLSTORY: - case NB1413M3_QMHAYAKU: - case NB1413M3_MJGOTTUB: - return (((root.ioport("DSWB")->read() & 0x02) >> 1) | ((root.ioport("DSWB")->read() & 0x08) >> 2) | - ((root.ioport("DSWB")->read() & 0x20) >> 3) | ((root.ioport("DSWB")->read() & 0x80) >> 4) | - ((root.ioport("DSWA")->read() & 0x02) << 3) | ((root.ioport("DSWA")->read() & 0x08) << 2) | - ((root.ioport("DSWA")->read() & 0x20) << 1) | ((root.ioport("DSWA")->read() & 0x80) << 0)); - default: - return machine().root_device().ioport("DSWB")->read(); - } -} - -uint8_t nb1413m3_device::dipsw3_l_r() -{ - return ((machine().root_device().ioport("DSWC")->read() & 0xf0) >> 4); -} - -uint8_t nb1413m3_device::dipsw3_h_r() -{ - return ((machine().root_device().ioport("DSWC")->read() & 0x0f) >> 0); -} - -void nb1413m3_device::outcoin_w(uint8_t data) -{ - m_outcoin_enable = (data & 0x04) >> 2; - - switch (m_nb1413m3_type) - { - case NB1413M3_TAIWANMB: - case NB1413M3_IEMOTOM: - case NB1413M3_OJOUSANM: - case NB1413M3_SEIHAM: - case NB1413M3_RYUUHA: - case NB1413M3_KORINAIM: - case NB1413M3_MMSIKAKU: - case NB1413M3_HYOUBAN: - case NB1413M3_TOKIMBSJ: - case NB1413M3_MJFOCUSM: - case NB1413M3_SCANDALM: - case NB1413M3_BANANADR: - case NB1413M3_MGION: - case NB1413M3_HANAOJI: - case NB1413M3_FINALBNY: - case NB1413M3_LOVEHOUS: - case NB1413M3_MMAIKO: - if (m_outcoin_enable) - { - if (m_counter++ == 2) - { - m_outcoin_flag ^= 1; - m_counter = 0; - } - } - break; - default: - break; - } - - m_led = m_outcoin_flag; // out coin -} - -void nb1413m3_device::vcrctrl_w(uint8_t data) -{ - if (data & 0x08) - { - popmessage(" ** VCR CONTROL ** "); - m_led = 1; - } - else - { - m_led = 0; - } -} - -/* Nichibutsu Mahjong games share a common control panel */ -INPUT_PORTS_START( nbmjcontrols ) - PORT_START("KEY0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY5") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY6") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY7") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY8") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY9") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) -INPUT_PORTS_END - -/* Hanafuda controls share part of the mahjong panel. Notice that some of the remaining -inputs are detected in Service Mode, even if we label them as IPT_UNKNOWN because they -do not correspond to actual inputs */ -INPUT_PORTS_START( nbhf1_ctrl ) // used by gionbana, mgion, abunai - PORT_START("KEY0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_F ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_B ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_G ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_C ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_H ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_D ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - 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_START("KEY5") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_E ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_A ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY6") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_F ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_B ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY7") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_G ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_C ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY8") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_HANAFUDA_H ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_HANAFUDA_D ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("KEY9") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - 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 ) -INPUT_PORTS_END - -INPUT_PORTS_START( nbhf2_ctrl ) // used by maiko, hanaoji, hnxmasev and hnageman - PORT_INCLUDE( nbhf1_ctrl ) - - PORT_MODIFY("KEY0") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) - - PORT_MODIFY("KEY1") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) - - PORT_MODIFY("KEY2") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_MODIFY("KEY5") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_HANAFUDA_YES ) PORT_PLAYER(2) - - PORT_MODIFY("KEY6") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_HANAFUDA_NO ) PORT_PLAYER(2) - - PORT_MODIFY("KEY7") - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) -INPUT_PORTS_END |