summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/emu/audio_effects/eq.cpp3
-rw-r--r--src/emu/audio_effects/filter.cpp3
-rw-r--r--src/mame/bmc/koftball.cpp48
-rw-r--r--src/mame/misc/gms.cpp170
4 files changed, 118 insertions, 106 deletions
diff --git a/src/emu/audio_effects/eq.cpp b/src/emu/audio_effects/eq.cpp
index 799b2f8c9b5..c2db2680e5b 100644
--- a/src/emu/audio_effects/eq.cpp
+++ b/src/emu/audio_effects/eq.cpp
@@ -120,6 +120,9 @@ void audio_effect_eq::config_load(util::xml::data_node const *ef_node)
} else
reset_db(band);
}
+
+ for(u32 i = 0; i != BANDS; i++)
+ build_filter(i);
}
void audio_effect_eq::config_save(util::xml::data_node *ef_node) const
diff --git a/src/emu/audio_effects/filter.cpp b/src/emu/audio_effects/filter.cpp
index 70cf7ddc967..947f4b7af58 100644
--- a/src/emu/audio_effects/filter.cpp
+++ b/src/emu/audio_effects/filter.cpp
@@ -113,6 +113,9 @@ void audio_effect_filter::config_load(util::xml::data_node const *ef_node)
m_isset_qh = true;
} else
reset_qh();
+
+ build_highpass();
+ build_lowpass();
}
void audio_effect_filter::config_save(util::xml::data_node *ef_node) const
diff --git a/src/mame/bmc/koftball.cpp b/src/mame/bmc/koftball.cpp
index 015cf7db235..b840a2471ee 100644
--- a/src/mame/bmc/koftball.cpp
+++ b/src/mame/bmc/koftball.cpp
@@ -224,9 +224,8 @@ void koftball_state::video_start()
m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
m_tilemap[0]->set_transparent_pen(0);
- m_tilemap[2]->set_transparent_pen(0);
-
m_tilemap[1]->set_transparent_pen(0);
+ m_tilemap[2]->set_transparent_pen(0);
m_tilemap[3]->set_transparent_pen(0);
m_pixbitmap.allocate(512, 256);
@@ -239,15 +238,15 @@ void koftball_state::draw_pixlayer(bitmap_ind16 &bitmap, const rectangle &clipre
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
- const u16 pitch = y * 0x80;
- for (int x = cliprect.min_x; x <= cliprect.max_x >> 2; x++)
+ const u16 pitch = y << 7;
+ for (int x = cliprect.min_x >> 2; x <= cliprect.max_x >> 2; x++)
{
const u16 tile_data = m_pixram[(pitch + x) & 0xffff];
for (int xi = 0; xi < 4; xi++)
{
- const u8 nibble = (tile_data >> ((3 - xi) * 4)) & 0xf;
+ const u8 nibble = (tile_data >> ((3 - xi) << 2)) & 0xf;
if (nibble)
- bitmap.pix(y, (x << 2) + xi) = pix_bank | nibble;
+ bitmap.pix(y, (x << 2) | xi) = pix_bank | nibble;
}
}
}
@@ -261,18 +260,18 @@ u32 koftball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
Bit 1 and 5 of 0x320000 are the only ones that give correct layer results (see table below).
What is the meaning of the others? More games running on this hw would help.
- The following table describes the attract mode sequence for jxzh. koftball is relatively simpler as it almost
- only uses the first 2 layers (only noted use of the 3rd layer is for the bookkeeping screen).
+ The following table describes the attract mode sequence for jxzh. koftball is relatively simpler as
+ it mostly uses the first 2 layers (only noted use of the 3rd layer is for the bookkeeping screen).
layer0 layer 1 layer 2 layer 3 0x2a000f 0x320000
title screen over under off off 0x13 0x98
girl with scrolling tiles prev screen prev screen over under 0x1b 0xba
0x00 0x00
- demon over under prev screen prev screen 0x1f 0x98
+ odds over under prev screen prev screen 0x1f 0x98
0x00 0x00
- slot with road signs prev screen prev screen over under 0x17 0xba
+ roulette with road signs prev screen prev screen over under 0x17 0xba
Chinese lanterns prev screen prev screen over under 0x17 0xba
- slot with numbers prev screen prev screen over under 0x17 0xba
+ slots with numbers prev screen prev screen over under 0x17 0xba
0x00 0x00
pirates over under prev screen prev screen 0x17 0x98
0x00 0x00
@@ -282,35 +281,40 @@ u32 koftball_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
During game:
last chance over under on top prev screen 0x17 0x9a
+ double up over under prev screen prev screen 0x1f 0x98
bookkeeping prev screen prev screen prev screen prev screen 0x14 0x98 (pixmap on top)
*/
- m_pixbitmap.fill(m_backpen, cliprect);
- draw_pixlayer(m_pixbitmap, cliprect);
+ const bool tmap2_enable = BIT(m_gfx_ctrl, 1);
+ const bool tmap3_enable = BIT(m_gfx_ctrl, 5);
+ const bool bitmap_enable = BIT(m_gfx_ctrl, 7);
+
+ if (bitmap_enable)
+ {
+ m_pixbitmap.fill(m_backpen, cliprect);
+ draw_pixlayer(m_pixbitmap, cliprect);
+ }
bitmap.fill(m_backpen, cliprect);
- // TODO: this drawing routine seems too special-cased. Correct it when more evidence becomes available
- if (BIT(m_gfx_ctrl, 7) && BIT(m_priority, 3))
+ if (bitmap_enable && BIT(m_priority, 3))
copyscrollbitmap_trans(bitmap, m_pixbitmap, 0, 0, 0, 0, cliprect, 0);
- if (BIT(m_gfx_ctrl, 5) && BIT(m_gfx_ctrl, 1))
+ if (tmap3_enable)
{
m_tilemap[3]->draw(screen, bitmap, cliprect, 0, 0);
- m_tilemap[2]->draw(screen, bitmap, cliprect, 0, 0);
}
- if (!BIT(m_gfx_ctrl, 5))
+ else
{
m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
}
- if (!BIT(m_gfx_ctrl, 5) && BIT(m_gfx_ctrl, 1))
- {
+
+ if (tmap2_enable)
m_tilemap[2]->draw(screen, bitmap, cliprect, 0, 0);
- }
- if (BIT(m_gfx_ctrl, 7) && !BIT(m_priority, 3))
+ if (bitmap_enable && !BIT(m_priority, 3))
copyscrollbitmap_trans(bitmap, m_pixbitmap, 0, 0, 0, 0, cliprect, 0);
return 0;
diff --git a/src/mame/misc/gms.cpp b/src/mame/misc/gms.cpp
index 1ec7172a253..5a9616af42a 100644
--- a/src/mame/misc/gms.cpp
+++ b/src/mame/misc/gms.cpp
@@ -64,13 +64,12 @@ Notes:
B1/M1 - 26C1000 / 27C1001 (PRG/data for 89C51?)
S1 - 27C2000 / 232000 mask ROM (OKI samples)
-Hold service credit (9) and reset (F3) to enter service mode.
+Hold test (F2) and reset (F3) to enter service mode.
TODO:
- work out how flip flop input is read in mahjong games in mahjong keyboard mode
-- work out how payout/key-out input is read in mahjong games in mahjong keyboard mode
-- work out how payout/key-out input is read in mahjong games in joystick mode
+- work out how payout input is read in mahjong games in mahjong keyboard mode
- correct EEPROM hookup for all games (this would get rid of a lot of ROM patches)
- hookup MCU and YM2151 / YM3812 sound for the mahjong games
- hookup PIC16F84 for rbspm
@@ -83,6 +82,7 @@ TODO:
permitted when it should be, other issues)
- game logic in baile seems broken (you always win), maybe due to the patches?
- broken title GFX in yyhm (transparent pen problem?)
+- older games don't show key-out/payout in input test - game bug or emulation bug?
- the newer games seem to use range 0x9e1000-0x9e1fff during gameplay
Video references:
@@ -314,13 +314,11 @@ void gms_2layers_state::input_matrix_w(uint16_t data)
void gms_2layers_state::eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- // bad ?
if (ACCESSING_BITS_0_7)
{
- m_eeprom->di_write((data & 0x04) >> 2);
- m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
-
- m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
+ m_eeprom->cs_write(BIT(data, 0));
+ m_eeprom->clk_write(BIT(data, 1));
+ m_eeprom->di_write(BIT(data, 2));
}
}
@@ -479,30 +477,28 @@ void gms_2layers_state::mcu_io(address_map &map)
}
-#define GMS_MAHJONG_COMMON(dsw_port, dsw_bit, dsw_on) \
+#define GMS_MAHJONG_KEYBOARD(dsw_port, dsw_bit, dsw_on) \
PORT_START("IN1") \
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_SERVICE_NO_TOGGLE(0x02, IP_ACTIVE_LOW) \
PORT_BIT( 0x00fc, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
- PORT_BIT( 0x0c00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) /* something to do with payout and maybe flip flop, possibly scanned in matrix */ \
PORT_BIT( 0xf000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) PORT_CUSTOM_MEMBER(FUNC(gms_3layers_state::keyboard_r<0>)) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_START("IN2") \
PORT_BIT( 0x0003, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) PORT_CUSTOM_MEMBER(FUNC(gms_3layers_state::keyboard_r<4>)) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
+ PORT_BIT( 0x0ff8, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x00f8, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0600, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
PORT_START("KEY0") \
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
@@ -544,6 +540,18 @@ void gms_2layers_state::mcu_io(address_map &map)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_CONDITION(dsw_port, dsw_bit, EQUALS, dsw_on) \
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on)
+#define GMS_MAHJONG_COMMON(dsw_port, dsw_bit, dsw_on) \
+ GMS_MAHJONG_KEYBOARD(dsw_port, dsw_bit, dsw_on) \
+ PORT_MODIFY("IN1") \
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on) \
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CONDITION(dsw_port, dsw_bit, NOTEQUALS, dsw_on)
+
#define GMS_MAHJONG_COINAGE(tag, loc) \
PORT_DIPNAME( 0x0007, 0x0000, DEF_STR(Coinage) ) PORT_DIPLOCATION(loc ":1,2,3") /* 投幣比例 */ \
PORT_DIPSETTING( 0x0000, DEF_STR(1C_1C) ) \
@@ -601,22 +609,13 @@ static INPUT_PORTS_START( rbmk )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
PORT_MODIFY("IN2") // 16bit
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", FUNC(eeprom_serial_93cxx_device::do_read))
// Only 4 DIP banks are actually populated on PCBs (2 empty spaces), but test mode reads all 6.
- // Dips based on manuals for both rbmk and rbspm
+ // DIPs based on manuals for both rbmk and rbspm
PORT_START("DSW1") // 16bit, in test mode first 8 are recognized as dsw1, second 8 as dsw4.
PORT_DIPNAME( 0x0007, 0x0000, "Pay Out Rate" ) PORT_DIPLOCATION("DSW1:1,2,3")
PORT_DIPSETTING( 0x0000, "70%" )
@@ -764,23 +763,14 @@ static INPUT_PORTS_START( ssanguoj )
GMS_MAHJONG_COMMON("DSW1", 0x0080, 0x0000)
PORT_MODIFY("IN1") // 16bit
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, NOTEQUALS, 0x0000)
PORT_MODIFY("IN2") // 16bit
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1386,41 +1376,58 @@ static INPUT_PORTS_START( jinpaish )
INPUT_PORTS_END
static INPUT_PORTS_START( baile )
- PORT_INCLUDE( sc2in1 )
+ // Mahjong keyboard controls:
+ // I Bet on Player / Big Confirm in test mode
+ // K Bet on Tie
+ // M Bet on Banker / Small Select in test mode
+ // N Start / Deal / Take Score Exit in test mode
+ // Kan Bet Multiplier
+ // Chi Double Up
+ // Reach Cancel Bet
+ // Ron Peek at Card
+ // Take Score Bet on Player / Big Confirm in test mode
+ // Double Up Double Up
+ // Big Bet on Banker / Small Select in test mode
+ GMS_MAHJONG_KEYBOARD("DSW1", 0x80, 0x80)
- PORT_MODIFY("IN1") // TODO: likely incomplete
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_SERVICE_NO_TOGGLE(0x02, IP_ACTIVE_LOW)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Tie Bet" )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Player Bet" )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Banker Bet" )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME( "Bet Modifier" )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME( "Flip Card / Show Odds" )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_POKER_CANCEL )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_MODIFY("IN1")
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Draw / Take Score" ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Bet on Tie") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Bet on Player / Big") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Bet on Banker / Small") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Bet Multiplier") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Peek at Card / Show Odds") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel Bets") PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x80, NOTEQUALS, 0x80)
+
+ PORT_MODIFY("IN2")
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ //PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", FUNC(eeprom_serial_93cxx_device::do_read)) // TODO: verify
- // Only 1 8-DIP bank on PCB. Most options appear to be software settings.
- PORT_MODIFY("DSW1")
- PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Test ) ) PORT_DIPLOCATION("SW1:1")
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:2")
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
- PORT_DIPUNKNOWN_DIPLOC( 0x0004, 0x0004, "SW1:3")
- PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0008, "SW1:4")
- PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0010, "SW1:5")
- PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0020, "SW1:6")
- PORT_DIPUNKNOWN_DIPLOC( 0x0040, 0x0040, "SW1:7")
- PORT_DIPNAME( 0x0080, 0x0000, "Connector" ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x0000, "Joystick" )
+ // Only 1 8-DIP bank on PCB. Most options appear to be soft settings.
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x0001, 0x0000, DEF_STR(Service_Mode) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x0000, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x0001, DEF_STR(On) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR(Demo_Sounds) ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x0000, DEF_STR(Off) )
+ PORT_DIPSETTING( 0x0002, DEF_STR(On) )
+ PORT_DIPUNKNOWN_DIPLOC( 0x0004, 0x0000, "SW1:3")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0008, 0x0000, "SW1:4")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0010, 0x0000, "SW1:5")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0020, 0x0000, "SW1:6")
+ PORT_DIPUNKNOWN_DIPLOC( 0x0040, 0x0000, "SW1:7")
+ PORT_DIPNAME( 0x0080, 0x0000, "Connector" ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x0000, DEF_STR(Joystick) )
PORT_DIPSETTING( 0x0080, "Mahjong" )
INPUT_PORTS_END
@@ -1432,7 +1439,11 @@ static INPUT_PORTS_START( yyhm )
PORT_BIT( 0xf800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW1", 0x0080, EQUALS, 0x0000)
PORT_MODIFY("IN2")
- PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_DIPUNKNOWN_DIPLOC( 0x1000, 0x1000, "P:10" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x2000, 0x2000, "P:11" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x4000, 0x4000, "P:12" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x8000, 0x8000, "P:13" )
+ //PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNKNOWN )
//PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", FUNC(eeprom_serial_93cxx_device::do_read)) // TODO: verify
// Only 1 8-DIP bank on PCB. DIPs' effects as per test mode.
@@ -1801,15 +1812,6 @@ static INPUT_PORTS_START( cjdlz )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSW2", 0x0080, EQUALS, 0x0080)
PORT_MODIFY("IN2") // 16bit
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -2821,8 +2823,8 @@ ROM_START( cjdlz )
ROM_END
- // the following inits patch out protection (?) checks to allow for testing
- // unfortunately the various U errors shown don't always correspond to correct PCB locations
+// the following inits patch out protection (?) checks to allow for testing
+// unfortunately the various U errors shown don't always correspond to correct PCB locations
void gms_2layers_state::init_rbspm()
{