misc/mjsenpu.cpp: Fixed I/O and DIP switch settings.

This makes it possible to complete a game with either mahjong keyboard
or joystick controls.
This commit is contained in:
Vas Crabb 2024-10-22 01:57:59 +11:00
parent 940671b78c
commit 27a8956384

View File

@ -9,8 +9,6 @@
SPR800F1
0011E
inputs need finishing off
-- Test Mode Note --
The test mode for this game is very buggy, this is not a MAME bug
@ -85,7 +83,7 @@ private:
required_device<e132xt_device> m_maincpu;
required_device<okim6295_device> m_oki;
required_device<palette_device> m_palette;
required_device<ticket_dispenser_device> m_hopper;
required_device<hopper_device> m_hopper;
required_shared_ptr<uint32_t> m_mainram;
// required_shared_ptr<uint32_t> m_vram;
@ -140,13 +138,9 @@ void mjsenpu_state::control_w(uint8_t data)
// bit 0x10 is the M6295 bank, samples <26 are the same in both banks and so bank switch isn't written for them, not even in sound test.
m_oki->set_rom_bank(BIT(data, 4));
// bits 0x08 is used in the alt payout / hopper mode (see dipswitches)
// 0x04 seem to be hopper/ticket related? different ones get used depending on the DIP switches
m_hopper->motor_w(BIT(~data, 2));
// bit 0x02 could be coin counter?
machine().bookkeeping().coin_counter_w(0, BIT(data, 1));
machine().bookkeeping().coin_counter_w(1, BIT(data, 3)); // credits out
m_hopper->motor_w(BIT(data, 2));
machine().bookkeeping().coin_counter_w(0, BIT(data, 1)); // coin or key-in
// bit 0x01 alternates frequently, using as video buffer, but that's a complete guess
m_control = data;
@ -213,144 +207,147 @@ void mjsenpu_state::main_portmap(address_map &map)
static INPUT_PORTS_START( mjsenpu )
PORT_START("KEY0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 槓
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 開始
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00)
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("KEY1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 聽
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 押
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00)
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("KEY2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 吃
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 胡
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00)
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("KEY3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 碰
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x0000003f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00)
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("KEY4") // in joystick mode?
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION("DSW3",0x08,EQUALS,0x00)
PORT_BIT( 0x000000ff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3",0x08,EQUALS,0x08)
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("KEY4")
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 海底
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 得分
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 比倍
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_BIG) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 大
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08) // 小
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 開始
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 上
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 下
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 左
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 右
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 摸捨
PORT_BIT( 0xffffffc0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN1")
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) // might be coin out
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )
PORT_SERVICE_NO_TOGGLE( 0x00000010, IP_ACTIVE_LOW )
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // clears stats in bookkeeping
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_CONDITION("DSW3", 0x08,EQUALS,0x00)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) ) // unused??
PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION("DSW3", 0x02, EQUALS, 0x02) // 投幣
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION("DSW3", 0x02, EQUALS, 0x00) // 投幣
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CONDITION("DSW3", 0x04, EQUALS, 0x04) // 退幣
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION("DSW3", 0x04, EQUALS, 0x00) // 退幣
PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(hopper_device::line_r)) // 哈巴
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) // 査悵
PORT_SERVICE_NO_TOGGLE( 0x00000010, IP_ACTIVE_LOW ) // 測試
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) // clears stats in bookkeeping
PORT_BIT( 0x000000c0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x08)
PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 押注
PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION("DSW3", 0x08, EQUALS, 0x00) // 功能
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("DSW1")
PORT_DIPNAME( 0x00000003, 0x00000003, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x00000003, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00000002, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x00000001, DEF_STR( 1C_3C ) )
PORT_DIPNAME( 0x0000000c, 0x0000000c, "Note Value" ) // used if DSW3 bit 0x02 is changed
PORT_DIPSETTING( 0x00000000, "100" )
PORT_DIPSETTING( 0x00000004, "50" )
PORT_DIPSETTING( 0x00000008, "10" )
PORT_DIPNAME( 0x00000003, 0x00000003, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:1,2")
PORT_DIPSETTING( 0x00000000, DEF_STR(2C_1C) ) // 2:1
PORT_DIPSETTING( 0x00000003, DEF_STR(1C_1C) ) // 1:1
PORT_DIPSETTING( 0x00000002, DEF_STR(1C_2C) ) // 1:2
PORT_DIPSETTING( 0x00000001, DEF_STR(1C_3C) ) // 1:3
PORT_DIPNAME( 0x0000000c, 0x0000000c, "Key-In Rate" ) PORT_DIPLOCATION("SW1:3,4") // 開分比率
PORT_DIPSETTING( 0x0000000c, "5" )
PORT_DIPNAME( 0x00000030, 0x00000030, "Ratio 2" )
PORT_DIPSETTING( 0x00000000, "1:10" )
PORT_DIPSETTING( 0x00000010, "1:5" )
PORT_DIPSETTING( 0x00000020, "1:2" )
PORT_DIPSETTING( 0x00000030, "1:1" )
PORT_DIPNAME( 0x000000c0, 0x000000c0, "Percentage 1" )
PORT_DIPSETTING( 0x00000000, "96" )
PORT_DIPSETTING( 0x00000040, "92" )
PORT_DIPSETTING( 0x00000080, "88" )
PORT_DIPSETTING( 0x000000c0, "84" )
PORT_DIPSETTING( 0x00000008, "10" )
PORT_DIPSETTING( 0x00000004, "50" )
PORT_DIPSETTING( 0x00000000, "100" )
PORT_DIPNAME( 0x00000030, 0x00000030, "Coin Out Rate" ) PORT_DIPLOCATION("SW1:5,6") // 退幣比率
PORT_DIPSETTING( 0x00000030, DEF_STR(1C_1C) ) // 1:1
PORT_DIPSETTING( 0x00000020, DEF_STR(2C_1C) ) // 1:2
PORT_DIPSETTING( 0x00000010, DEF_STR(5C_1C) ) // 1:5
PORT_DIPSETTING( 0x00000000, "10 Coins/1 Credit" ) // 1:10
PORT_DIPNAME( 0x000000c0, 0x000000c0, "Jackpot Odds" ) PORT_DIPLOCATION("SW1:7,8") // 大滿貫機率
PORT_DIPSETTING( 0x000000c0, "84%" )
PORT_DIPSETTING( 0x00000080, "88%" )
PORT_DIPSETTING( 0x00000040, "92%" )
PORT_DIPSETTING( 0x00000000, "96%" )
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("DSW2")
PORT_DIPNAME( 0x00000003, 0x00000003, "Value 2" )
PORT_DIPSETTING( 0x00000000, "5" )
PORT_DIPSETTING( 0x00000001, "3" )
PORT_DIPSETTING( 0x00000002, "2" )
PORT_DIPNAME( 0x00000003, 0x00000003, "Minimum Bet" ) PORT_DIPLOCATION("SW2:1,2") // 最小押注
PORT_DIPSETTING( 0x00000003, "1" )
PORT_DIPNAME( 0x00000004, 0x00000004, "Value 3" )
PORT_DIPSETTING( 0x00000002, "2" )
PORT_DIPSETTING( 0x00000001, "3" )
PORT_DIPSETTING( 0x00000000, "5" )
PORT_DIPNAME( 0x00000004, 0x00000004, "Maximum Bet" ) PORT_DIPLOCATION("SW2:3") // 最大押注
PORT_DIPSETTING( 0x00000004, "10" )
PORT_DIPSETTING( 0x00000000, "20" )
PORT_DIPNAME( 0x00000008, 0x00000000, DEF_STR( Demo_Sounds ) )
PORT_DIPNAME( 0x00000008, 0x00000000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:4") // 示範音樂
PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00000010, 0x00000010, DEF_STR( Flip_Screen ) )
PORT_DIPNAME( 0x00000010, 0x00000010, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:5") // 倒轉画面
PORT_DIPSETTING( 0x00000010, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x000000e0, 0x000000e0, "Percentage 2" )
PORT_DIPSETTING( 0x00000000, "60" )
PORT_DIPSETTING( 0x00000020, "65" )
PORT_DIPSETTING( 0x00000040, "70" )
PORT_DIPSETTING( 0x00000060, "75" )
PORT_DIPSETTING( 0x00000080, "80" )
PORT_DIPSETTING( 0x000000a0, "85" )
PORT_DIPSETTING( 0x000000c0, "90" )
PORT_DIPSETTING( 0x000000e0, "95" )
PORT_DIPNAME( 0x000000e0, 0x000000e0, "Game Odds" ) PORT_DIPLOCATION("SW2:6,7,8") // 遊戲機率
PORT_DIPSETTING( 0x00000000, "60%" )
PORT_DIPSETTING( 0x00000020, "65%" )
PORT_DIPSETTING( 0x00000040, "70%" )
PORT_DIPSETTING( 0x00000060, "75%" )
PORT_DIPSETTING( 0x00000080, "80%" )
PORT_DIPSETTING( 0x000000a0, "85%" )
PORT_DIPSETTING( 0x000000c0, "90%" )
PORT_DIPSETTING( 0x000000e0, "95%" )
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("DSW3")
PORT_DIPNAME( 0x00000001, 0x00000001, "Credit Limit" )
PORT_DIPNAME( 0x00000001, 0x00000001, "Credit Limit" ) PORT_DIPLOCATION("SW3:1") // 进分上限
PORT_DIPSETTING( 0x00000001, "100" )
PORT_DIPSETTING( 0x00000000, "500" )
PORT_DIPNAME( 0x00000002, 0x00000002, "Coin Type?" ) // uses different coinage
PORT_DIPSETTING( 0x00000002, "Coins?" )
PORT_DIPSETTING( 0x00000000, "Notes?" )
PORT_DIPNAME( 0x00000004, 0x00000004, "Hopper Type?" )
PORT_DIPSETTING( 0x00000004, "Normal?" ) // pressing Pay Out button activates hopper on bit 0x04 and pays out
PORT_DIPSETTING( 0x00000000, "Other?" ) // pressing Pay Out activates something on bit 0x08, prints KEY OUT and quickly resets the game
PORT_DIPNAME( 0x00000008, 0x00000008, "Control Type" )
PORT_DIPSETTING( 0x00000008, "Mahjong Panel" )
PORT_DIPSETTING( 0x00000000, "Joystick" )
PORT_DIPNAME( 0x00000010, 0x00000010, "Symbol 5" )
PORT_DIPSETTING( 0x00000010, "0" )
PORT_DIPSETTING( 0x00000000, "1" )
PORT_DIPNAME( 0x00000060, 0x00000060, "Percentage 3" )
PORT_DIPSETTING( 0x00000000, "92" )
PORT_DIPSETTING( 0x00000020, "88" )
PORT_DIPSETTING( 0x00000040, "84" )
PORT_DIPSETTING( 0x00000060, "80" )
PORT_DIPNAME( 0x00000080, 0x00000080, "Symbol 6" )
PORT_DIPSETTING( 0x00000080, "0" )
PORT_DIPSETTING( 0x00000000, "1" )
PORT_DIPNAME( 0x00000002, 0x00000002, "Credit Mode" ) PORT_DIPLOCATION("SW3:2") // 進分方式
PORT_DIPSETTING( 0x00000002, "Coin Acceptor" ) // 投幣
PORT_DIPSETTING( 0x00000000, "Key-In" ) // 開分
PORT_DIPNAME( 0x00000004, 0x00000004, "Payout Mode" ) PORT_DIPLOCATION("SW3:3") // 退分方式
PORT_DIPSETTING( 0x00000004, "Return Coins" ) // 退幣
PORT_DIPSETTING( 0x00000000, "Key-Out" ) // 洗分
PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR(Controls) ) PORT_DIPLOCATION("SW3:4") // 操作方法
PORT_DIPSETTING( 0x00000008, "Mahjong" ) // 按鍵
PORT_DIPSETTING( 0x00000000, DEF_STR(Joystick) ) // 搖桿
PORT_DIPNAME( 0x00000010, 0x00000010, "Double Up Game" ) PORT_DIPLOCATION("SW3:5") // 續玩遊戲
PORT_DIPSETTING( 0x00000010, DEF_STR(Off) ) // 無
PORT_DIPSETTING( 0x00000000, DEF_STR(On) ) // 有
PORT_DIPNAME( 0x00000060, 0x00000060, "Double Up Odds" ) PORT_DIPLOCATION("SW3:6,7") // 續玩機率
PORT_DIPSETTING( 0x00000060, "80%" )
PORT_DIPSETTING( 0x00000040, "84%" )
PORT_DIPSETTING( 0x00000020, "88%" )
PORT_DIPSETTING( 0x00000000, "92%" )
PORT_DIPNAME( 0x00000080, 0x00000080, "Jackpot Win" ) PORT_DIPLOCATION("SW3:8") // 大滿貫中奨
PORT_DIPSETTING( 0x00000080, DEF_STR(Off) ) // 無
PORT_DIPSETTING( 0x00000000, DEF_STR(On) ) // 有
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@ -420,7 +417,7 @@ void mjsenpu_state::mjsenpu(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);
// more likely coins out?
TICKET_DISPENSER(config, m_hopper, attotime::from_msec(50));
HOPPER(config, m_hopper, attotime::from_msec(50));
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));