From 20f98477f6b11200ead88ac7c003911304eb29a4 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sat, 21 Dec 2024 03:13:29 +1100 Subject: -ui/filemngr.cpp: Show warnings at the bottom. -dynax/royalmah.cpp: Improved DIP switch settings for ippatsu. -dynax/royalmah.cpp, seibu/seibuspi.cpp: Use standard mahjong matrix. --- src/frontend/mame/ui/filemngr.cpp | 25 +++-- src/mame/dynax/royalmah.cpp | 205 ++++++++++++++------------------------ src/mame/seibu/seibuspi.cpp | 102 +++++++------------ 3 files changed, 126 insertions(+), 206 deletions(-) diff --git a/src/frontend/mame/ui/filemngr.cpp b/src/frontend/mame/ui/filemngr.cpp index 75a0fb02f77..abbe2e29a8b 100644 --- a/src/frontend/mame/ui/filemngr.cpp +++ b/src/frontend/mame/ui/filemngr.cpp @@ -73,11 +73,13 @@ void menu_file_manager::recompute_metrics(uint32_t width, uint32_t height, float float const max_width(1.0F - (4.0F * lr_border())); m_warnings_layout.emplace(create_layout(max_width, text_layout::text_justify::LEFT)); m_warnings_layout->add_text(m_warnings, ui().colors().text_color()); - } - set_custom_space( - m_warnings_layout ? ((m_warnings_layout->lines() * line_height()) + 3.0F * tb_border()) : 0.0F, - line_height() + 3.0F * tb_border()); + set_custom_space(0.0F, (float(m_warnings_layout->lines() + 1) * line_height()) + (6.0F * tb_border())); + } + else + { + set_custom_space(0.0F, line_height() + (3.0F * tb_border())); + } } @@ -87,23 +89,24 @@ void menu_file_manager::recompute_metrics(uint32_t width, uint32_t height, float void menu_file_manager::custom_render(uint32_t flags, void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2) { + // access the path + if (m_selected_device && m_selected_device->exists()) + extra_text_render(top, (3.0F * tb_border()) + line_height(), origx1, origy1, origx2, origy2, std::string_view(), m_selected_device->filename()); + // show the warnings if any if (m_warnings_layout) { ui().draw_outlined_box( container(), - ((1.0F + m_warnings_layout->actual_width()) * 0.5F) + lr_border(), origy1 - (3.0F * tb_border()) - (m_warnings_layout->lines() * line_height()), - ((1.0F - m_warnings_layout->actual_width()) * 0.5F) - lr_border(), origy1 - tb_border(), + ((1.0F + m_warnings_layout->actual_width()) * 0.5F) + lr_border(), origy2 + (4.0F * tb_border()) + line_height(), + ((1.0F - m_warnings_layout->actual_width()) * 0.5F) - lr_border(), origy2 + bottom, ui().colors().background_color()); m_warnings_layout->emit( container(), (1.0F - m_warnings_layout->actual_width()) * 0.5F, - origy1 - (2.0F * tb_border()) - (m_warnings_layout->lines() * line_height())); + origy2 + (5.0F * tb_border()) + line_height()); } - // access the path - std::string_view path = m_selected_device && m_selected_device->exists() ? m_selected_device->filename() : std::string_view(); - extra_text_render(top, bottom, origx1, origy1, origx2, origy2, std::string_view(), path); } @@ -136,7 +139,9 @@ void menu_file_manager::fill_image_line(device_image_interface &img, std::string } } else + { filename.assign("---"); + } } //------------------------------------------------- diff --git a/src/mame/dynax/royalmah.cpp b/src/mame/dynax/royalmah.cpp index 1487d453893..510635970ef 100644 --- a/src/mame/dynax/royalmah.cpp +++ b/src/mame/dynax/royalmah.cpp @@ -106,6 +106,8 @@ Stephh's notes (based on the games Z80 code and some tests) : #include "emu.h" +#include "mahjong.h" + #include "cpu/tlcs90/tlcs90.h" #include "cpu/z80/tmpz84c015.h" #include "cpu/z80/z80.h" @@ -1636,97 +1638,45 @@ void royalmah_prgbank_state::mjvegasa_map(address_map &map) static INPUT_PORTS_START( mjctrl1 ) - PORT_START("KEY0") // P1 IN0 - 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_OTHER ) PORT_NAME("P1 Credit Clear") PORT_CODE(KEYCODE_O) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Credit Clear") PORT_CODE(KEYCODE_8) - - PORT_START("KEY1") // P1 IN1 - 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_MAHJONG_BET ) + PORT_INCLUDE(mahjong_matrix_2p_bet_wup) + + PORT_MODIFY("KEY0") // P1 IN0 + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Credit Clear") PORT_CODE(KEYCODE_MINUS) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Credit Clear") PORT_CODE(KEYCODE_EQUALS) + + PORT_MODIFY("KEY1") // P1 IN1 PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("KEY2") // P1 IN2 - 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( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY3") // P1 IN3 - 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( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("KEY2") // P1 IN2 + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("KEY4") // P1 IN4 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) + PORT_MODIFY("KEY3") // P1 IN3 PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("KEY5") // P2 IN0 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) + PORT_MODIFY("KEY4") // P1 IN4 + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("KEY5") // P2 IN0 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_START("KEY6") // P2 IN1 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) + PORT_MODIFY("KEY6") // P2 IN1 PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("KEY7") // P2 IN2 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) - PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY8") // P2 IN3 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) - PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("KEY7") // P2 IN2 + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("KEY8") // P2 IN3 + PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("KEY9") // P2 IN4 - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) + PORT_MODIFY("KEY9") // P2 IN4 PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("SYSTEM") // IN10 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) // "Note" ("Paper Money") = 10 Credits PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MEMORY_RESET ) // Memory Reset - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) // Analizer (Statistics) - PORT_SERVICE( 0x08, IP_ACTIVE_HIGH ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_TOGGLE // Analizer (Statistics) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_TOGGLE PORT_NAME( DEF_STR(Service_Mode) ) PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END @@ -1735,7 +1685,7 @@ static INPUT_PORTS_START( mjctrl2 ) PORT_INCLUDE( mjctrl1 ) PORT_MODIFY("KEY0") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_O) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -3347,7 +3297,7 @@ static INPUT_PORTS_START( ippatsu ) PORT_START("DSW1") // DSW (inport $10) - PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) + PORT_DIPNAME( 0x0f, 0x0f, "Payout Rate" ) PORT_DIPLOCATION("MAIN SW:1,2,3,4") // PAY OUT RATE PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) @@ -3364,65 +3314,64 @@ static INPUT_PORTS_START( ippatsu ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x60, 0x60, "Maximum Bet" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR(Unknown) ) PORT_DIPLOCATION("MAIN SW:5") + PORT_DIPSETTING( 0x10, DEF_STR(Off) ) + PORT_DIPSETTING( 0x00, DEF_STR(On) ) + PORT_DIPNAME( 0x60, 0x60, "Maximum Bet" ) PORT_DIPLOCATION("MAIN SW:6,7") // BET MAX PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x40, "7" ) PORT_DIPSETTING( 0x60, "10" ) - PORT_DIPNAME( 0x80, 0x80, "First Chance" ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x80, 0x80, "Open Reach" ) PORT_DIPLOCATION("MAIN SW:8") // OPEN リーチ + PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ナシ + PORT_DIPSETTING( 0x80, DEF_STR(On) ) // アリ PORT_START("DSW2") // DSW (inport $12) - PORT_DIPNAME( 0x03, 0x03, "Cut" ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x02, "2 Bai" ) - PORT_DIPSETTING( 0x01, "3 Bai" ) - PORT_DIPSETTING( 0x03, "Yakuman" ) - PORT_DIPNAME( 0x0c, 0x0c, "Yakuman Bonus" ) - PORT_DIPSETTING( 0x00, "32" ) - PORT_DIPSETTING( 0x04, "100" ) - PORT_DIPSETTING( 0x08, "200" ) - PORT_DIPSETTING( 0x0c, "300" ) - PORT_DIPNAME( 0x30, 0x30, "Unknown 1-4&5*" ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x10, "4" ) - PORT_DIPSETTING( 0x20, "5" ) - PORT_DIPSETTING( 0x30, "6" ) - PORT_DIPNAME( 0x40, 0x40, "Unknown 1-6*" ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x40, "5" ) - PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x03, 0x03, "Cut" ) PORT_DIPLOCATION("SUB SW-1:1,2") + PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // CUT ナシ + PORT_DIPSETTING( 0x01, "Baiman" ) // バイマン      CUT + PORT_DIPSETTING( 0x02, "Sanbaiman" ) // 3バイマン     CUT + PORT_DIPSETTING( 0x03, "Yakuman" ) // ヤクマン      CUT + PORT_DIPNAME( 0x0c, 0x0c, "Yakuman Payout" ) PORT_DIPLOCATION("SUB SW-1:3,4") // ハイトウ + PORT_DIPSETTING( 0x00, "32" ) // D    (32) + PORT_DIPSETTING( 0x04, "100" ) // C   (100) + PORT_DIPSETTING( 0x08, "200" ) // B   (200) + PORT_DIPSETTING( 0x0c, "300" ) // A   (300) + PORT_DIPNAME( 0x30, 0x30, "Double-Up Count" ) PORT_DIPLOCATION("SUB SW-1:5,6") // ダブル UP + PORT_DIPSETTING( 0x00, "3" ) // 3カイ + PORT_DIPSETTING( 0x10, "4" ) // 4カイ + PORT_DIPSETTING( 0x20, "5" ) // 5カイ + PORT_DIPSETTING( 0x30, "6" ) // 6カイ + PORT_DIPNAME( 0x40, 0x40, "Last Chance Count" ) PORT_DIPLOCATION("SUB SW-1:7") // ラストチャンス + PORT_DIPSETTING( 0x00, "3" ) // 3カイ + PORT_DIPSETTING( 0x40, "5" ) // 5カイ + PORT_DIPNAME( 0x80, 0x80, DEF_STR(Unknown) ) PORT_DIPLOCATION("SUB SW-1:8") // (未使用) + PORT_DIPSETTING( 0x80, DEF_STR(Off) ) + PORT_DIPSETTING( 0x00, DEF_STR(On) ) PORT_START("DSW3") // DSW (inport $13) - PORT_DIPNAME( 0x01, 0x01, "Unknown 2-0*" ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x01, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x02, 0x02, "Second Bonus" ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x04, 0x04, "Allow Bets" ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x18, 0x18, "Unknown 2-3&4*" ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x18, "2" ) - PORT_DIPSETTING( 0x10, "4" ) - PORT_DIPSETTING( 0x08, "8" ) - PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x01, 0x01, "Double Chance (1/8)" ) PORT_DIPLOCATION("SUB SW-2:1") // DOUBLEチャンス(1/8) + PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ナシ + PORT_DIPSETTING( 0x01, DEF_STR(On) ) // アリ + PORT_DIPNAME( 0x02, 0x02, "Second Bonus" ) PORT_DIPLOCATION("SUB SW-2:2") // 2nd BONUS + PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ナシ + PORT_DIPSETTING( 0x02, DEF_STR(On) ) // アリ + PORT_DIPNAME( 0x04, 0x04, "Double Bet" ) PORT_DIPLOCATION("SUB SW-2:3") // DOUBLE BET + PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ナシ + PORT_DIPSETTING( 0x04, DEF_STR(On) ) // アリ + PORT_DIPNAME( 0x18, 0x18, "Heart Chance" ) PORT_DIPLOCATION("SUB SW-2:4,5") + PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ハートチャンス    ナシ + PORT_DIPSETTING( 0x08, "1/8 (12.5%)" ) // 1/8  (12.5%)   アリ + PORT_DIPSETTING( 0x10, "1/4 (25%)" ) // 1/4   (25%)   アリ + PORT_DIPSETTING( 0x18, "1/2 (50%)" ) // 1/2   (50%)   アリ + PORT_DIPNAME( 0x60, 0x60, "Payout Limit" ) PORT_DIPLOCATION("SUB SW-2:6,7") // ウチドメクレジト + PORT_DIPSETTING( 0x60, "300" ) + PORT_DIPSETTING( 0x40, "500" ) + PORT_DIPSETTING( 0x20, "800" ) + PORT_DIPSETTING( 0x00, "1000" ) + PORT_DIPNAME( 0x80, 0x80, "Show Payout Limit" ) PORT_DIPLOCATION("SUB SW-2:8") // メッセージ + PORT_DIPSETTING( 0x00, DEF_STR(Off) ) // ナシ + PORT_DIPSETTING( 0x80, DEF_STR(On) ) // アリ INPUT_PORTS_END static INPUT_PORTS_START( mjdejavu ) diff --git a/src/mame/seibu/seibuspi.cpp b/src/mame/seibu/seibuspi.cpp index 3b7d2eb6743..e2847dc10c5 100644 --- a/src/mame/seibu/seibuspi.cpp +++ b/src/mame/seibu/seibuspi.cpp @@ -879,6 +879,8 @@ Notes: #include "emu.h" #include "seibuspi.h" +#include "mahjong.h" + #include "cpu/i386/i386.h" #include "cpu/z80/z80.h" #include "machine/ds2404.h" @@ -982,10 +984,13 @@ u32 seibuspi_state::ejsakura_keyboard_r() // coins/eeprom data u32 ret = m_special->read(); - // multiplexed inputs - for (int i = 0; i < 5; i++) - if (m_ejsakura_input_port >> i & 1) - ret &= m_key[i]->read(); + // switch matrix + if (BIT(m_ejsakura_input_port, 0)) ret &= m_key[3]->read(); + if (BIT(m_ejsakura_input_port, 1)) ret &= m_key[4]->read(); + if (BIT(m_ejsakura_input_port, 2)) ret &= m_key[2]->read(); + if (BIT(m_ejsakura_input_port, 3)) ret &= m_key[0]->read(); + if (BIT(m_ejsakura_input_port, 4)) ret &= m_key[1]->read(); + ret = (ret & ~u32(0x1f)) | bitswap<5>(ret, 0, 1, 2, 3, 4); return ret; } @@ -1231,12 +1236,13 @@ ioport_value seibuspi_state::ejanhs_encode() RON - 110 port C Start - 111 port A */ - static const u8 encoding[] = { 6, 5, 4, 3, 2, 7 }; - ioport_value state = ~m_key[N]->read(); + ioport_value const state = m_key[N]->read(); - for (int bit = 0; bit < std::size(encoding); bit++) - if (state & (1 << bit)) - return encoding[bit]; + for (int bit = 0; bit < 6; bit++) + { + if (!BIT(state, bit)) + return bit + 2; + } return 0; } @@ -1337,61 +1343,15 @@ static INPUT_PORTS_START( sys386i ) INPUT_PORTS_END -static INPUT_PORTS_START( spi_mahjong_keyboard ) - PORT_START("KEY.0") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_H ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_D ) - PORT_BIT( 0xffffffe0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY.1") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) - PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY.2") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_G ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_C ) - PORT_BIT( 0xffffffe0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY.3") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_M ) - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_E ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_A ) - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) - - PORT_START("KEY.4") - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_N ) - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) - PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_F ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_B ) - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) - PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) -INPUT_PORTS_END - - static INPUT_PORTS_START( spi_ejanhs ) - PORT_INCLUDE( spi_mahjong_keyboard ) + PORT_INCLUDE( mahjong_matrix_1p ) PORT_INCLUDE( sxx2c ) PORT_START("INPUTS") - PORT_BIT( 0x00000007, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(FUNC(seibuspi_state::ejanhs_encode<3>)) - PORT_BIT( 0x00000038, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(FUNC(seibuspi_state::ejanhs_encode<4>)) + PORT_BIT( 0x00000007, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(FUNC(seibuspi_state::ejanhs_encode<0>)) + PORT_BIT( 0x00000038, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(FUNC(seibuspi_state::ejanhs_encode<1>)) PORT_BIT( 0x00000700, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(FUNC(seibuspi_state::ejanhs_encode<2>)) - PORT_BIT( 0x00003800, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(FUNC(seibuspi_state::ejanhs_encode<0>)) + PORT_BIT( 0x00003800, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(FUNC(seibuspi_state::ejanhs_encode<3>)) PORT_SPECIAL_ONOFF_DIPLOC( 0x00008000, 0x00000000, Flip_Screen, "SW1:1" ) PORT_BIT( 0xffff4000, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -1403,12 +1363,6 @@ static INPUT_PORTS_START( spi_ejanhs ) PORT_BIT( 0x000000f3, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_MODIFY("KEY.1") - PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) // Decoded but not recognized - - PORT_MODIFY("KEY.4") - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNUSED ) // Decoded but not recognized - PORT_START("EXCH") // Another set of mahjong inputs is decoded from here but not used PORT_BIT( 0xffffffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1420,13 +1374,25 @@ INPUT_PORTS_END static INPUT_PORTS_START( ejsakura ) - PORT_INCLUDE( spi_mahjong_keyboard ) + PORT_INCLUDE( mahjong_matrix_1p_bet_wup ) - PORT_MODIFY("KEY.4") + PORT_MODIFY("KEY0") + PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("KEY1") PORT_SERVICE_NO_TOGGLE( 0x00000200, IP_ACTIVE_LOW) - PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Payout") PORT_CODE(KEYCODE_Q) + PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_Q) PORT_BIT( 0xfffff5c0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("KEY2") + PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("KEY3") + PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("KEY4") + PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_START("SPECIAL") PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_COIN2 ) -- cgit v1.2.3