diff options
Diffstat (limited to '')
-rw-r--r-- | src/emu/audio_effects/eq.cpp | 3 | ||||
-rw-r--r-- | src/emu/audio_effects/filter.cpp | 3 | ||||
-rw-r--r-- | src/mame/bmc/koftball.cpp | 48 | ||||
-rw-r--r-- | src/mame/misc/gms.cpp | 170 |
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() { |