From 6a22813f7e79db52ebb719df146917e8c0cd8e99 Mon Sep 17 00:00:00 2001 From: Roberto Fresca Date: Sun, 2 May 2021 02:20:09 +0200 Subject: [PATCH] New working machines -------------------- CEI 51.07 (CEI 906-III Poker). --- src/mame/drivers/calomega.cpp | 118 +++++++------- src/mame/drivers/changyu.cpp | 4 +- src/mame/drivers/goldnpkr.cpp | 285 +++++++++++++++++++++++++++++++++- src/mame/drivers/magic10.cpp | 78 ++++++++-- src/mame/drivers/tvg01.cpp | 20 ++- src/mame/includes/calomega.h | 3 - src/mame/mame.lst | 3 +- 7 files changed, 425 insertions(+), 86 deletions(-) diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp index c02fcbb5774..fcf7f6e9354 100644 --- a/src/mame/drivers/calomega.cpp +++ b/src/mame/drivers/calomega.cpp @@ -258,6 +258,8 @@ 46.0x| Gaming Poker | ? | | GPKCG | 6300010 | POKCLR | 6600020 | Nevada Gaming | No | | No 47.0x| 4-Card Indian Bingo | ? | | FCB7CG | 6300150 | FCB7CLR | 6600100 | Amer-Indian | No | | No 48.0x| Keno | ? | | KJCG | 6300060 | POKCLR | 6600020 | Montana | No | | No + | | | | | | | | | | | + 51.07| Poker (906-III) | 906-III | | GP2CG | unknown | WILD | unknown | Nevada Gaming | Yes | OK | Yes 51.08| Poker (906-III) | 906-III | | GP2CG | unknown | WILD | unknown | Nevada Gaming | Yes | OK | Yes | | | | | | | | | | | * 903d | System 903 Diag.PROM | 903 | unknown | any | unknown | any | unknown | Testing H/W | Yes | OK | Yes @@ -447,10 +449,11 @@ General improvements... - Fixed inputs on Cal Omega - Game 12.5 (Bingo). - - Inputs for Cal Omega - Game 13.4 (Nudge). Promoted to WORKING. - - Inputs for Cal Omega - Game 17.6 (Nudge). Promoted to WORKING. - - Inputs for Cal Omega - Game 18.1 (Nudge). Promoted to WORKING. - - Fixed/added technical notes. + - Inputs for Cal Omega - Game 13.4 (Nudge). Promoted to WORKING. + - Inputs for Cal Omega - Game 17.6 (Nudge). Promoted to WORKING. + - Inputs for Cal Omega - Game 18.1 (Nudge). Promoted to WORKING. + - Added new set: CEI 51.07 (CEI 906-III Poker). + - Fixed/added technical notes. [2021-04-26] @@ -4301,7 +4304,7 @@ ROM_END ROM_START( comg5108 ) // Cal Omega v51.08 (Poker) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "epr1.u28", 0x6000, 0x2000, CRC(3d6abca9) SHA1(54a802f89bd64380abf269a2b507513c8db5319b) ) // checked in offset $8034 + ROM_LOAD( "epr1.u28", 0x6000, 0x2000, CRC(3d6abca9) SHA1(54a802f89bd64380abf269a2b507513c8db5319b) ) // schedule eprom 05F. checked in offset $8034 ROM_LOAD( "epr2.u29", 0x8000, 0x2000, CRC(72cf8376) SHA1(fa1682244402e1b36164c670241f585bf4017ad9) ) ROM_LOAD( "epr3.u30", 0xa000, 0x2000, CRC(c79957e5) SHA1(64afdedf5369d56790e9ae7a8d3be5f52125ca1f) ) ROM_LOAD( "epr4.u31", 0xc000, 0x2000, CRC(eb0b0a86) SHA1(4fd29700db8fe183392cc66a54a128657c7e05e0) ) @@ -4312,10 +4315,26 @@ ROM_START( comg5108 ) // Cal Omega v51.08 (Poker) ROM_LOAD( "cg2b.u5", 0x2000, 0x2000, CRC(1f79f76d) SHA1(b2bce60e24dd61977f7bf6ee4705ca7d104ab388) ) ROM_LOAD( "cg2a.u6", 0x4000, 0x2000, CRC(d5fd9fc2) SHA1(68472e7271f835656197109620bb3988fc52308a) ) - ROM_REGION( 0x200, "proms", 0 ) // from other set, second half is empty + ROM_REGION( 0x200, "proms", 0 ) // second half is empty ROM_LOAD( "bprom.u16", 0x0000, 0x0200, CRC(a6d43709) SHA1(cbff2cb60137462dc0b7c7719a64574218d96c62) ) ROM_END +ROM_START( comg5107 ) // Cal Omega v51.07 (Poker) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "epr1.u28", 0x6000, 0x2000, CRC(3d6abca9) SHA1(54a802f89bd64380abf269a2b507513c8db5319b) ) // schedule eprom 05F. same as the 51.08 set + ROM_LOAD( "epr2.u29", 0x8000, 0x2000, CRC(1cefe40d) SHA1(9169c466903485d6e78c53bd104dc61722437509) ) + ROM_LOAD( "epr3.u30", 0xa000, 0x2000, CRC(0bc9be3e) SHA1(bce88a6a37ded6396954ec8c11e19af66f658e4d) ) + ROM_LOAD( "epr4.u31", 0xc000, 0x2000, CRC(34e7d16f) SHA1(c4901e00a5dbaeb6277dbe9bdcad93827c5aa947) ) + ROM_LOAD( "epr5.u32", 0xe000, 0x2000, CRC(e5a252b5) SHA1(7a226c771ba16944b4e50c22db0cd5d7fc530e11) ) + + ROM_REGION( 0x6000, "gfx1", 0 ) + ROM_LOAD( "cg2c.u4", 0x0000, 0x2000, CRC(dc77a6db) SHA1(3af5f568de3f2af1a6bbb00d673bdbff16c87a40) ) + ROM_LOAD( "cg2b.u5", 0x2000, 0x2000, CRC(1f79f76d) SHA1(b2bce60e24dd61977f7bf6ee4705ca7d104ab388) ) + ROM_LOAD( "cg2a.u6", 0x4000, 0x2000, CRC(d5fd9fc2) SHA1(68472e7271f835656197109620bb3988fc52308a) ) + + ROM_REGION( 0x200, "proms", 0 ) // second half is empty + ROM_LOAD( "bprom.u16", 0x0000, 0x0200, CRC(a6d43709) SHA1(cbff2cb60137462dc0b7c7719a64574218d96c62) ) +ROM_END /*********************** Diagnostic PROMs ***********************/ @@ -4606,58 +4625,6 @@ void calomega_state::init_sys905() save_item(NAME(m_s905_mux_data)); } -void calomega_state::init_comg080() -{ - init_sys903(); - - /* Injecting missing Start and NMI vectors... - Start = $2042; NMI = $26f8; - Also a fake vector at $3ff8-$3ff9. The code checks these values to continue. - */ - uint8_t *PRGROM = memregion( "maincpu" )->base(); - - PRGROM[0x3ff8] = 0x8e; // checked by code - PRGROM[0x3ff9] = 0x97; // checked by code - - PRGROM[0x3ffc] = 0x42; // start vector - PRGROM[0x3ffd] = 0x20; - PRGROM[0x3ffe] = 0xf8; // NMI vector - PRGROM[0x3fff] = 0x26; -} - -void calomega_state::init_comg176() -{ - uint8_t *PRGROM = memregion( "maincpu" )->base(); - - PRGROM[0x25df] = 0x00; // patching the checksum flag. -} - -void calomega_state::init_comg5108() -{ - uint8_t *PRGROM = memregion( "maincpu" )->base(); - PRGROM[0xc080] = 0xff; // CHECKSUM ERROR FLAG - No changes for now. - // Debug - // PRGROM[0xc080] = 0x00; // CHECKSUM ERROR FLAG (at start) - // PRGROM[0xbf0e] = 0x00; // CHECKSUM ERROR FLAG (on the fly) - // PRGROM[0xbfb4] = 0x00; // RAM ERROR FLAG - // PRGROM[0xb6A0] = 0x00; // ERROR LOW BATTERY FLAG - // PRGROM[0xb6AA] = 0x00; // ERROR LOW BATTERY FLAG -} - -void calomega_state::init_cas21iwc() -{ - uint8_t *PRGROM = memregion( "maincpu" )->base(); - - PRGROM[0xB603] = 0xff; // Checksum flag. No changes for now. -} - -void calomega_state::init_pokeriwc() -{ - uint8_t *PRGROM = memregion( "maincpu" )->base(); - - PRGROM[0x8000] = 0xa2; // Checksum flag. No changes for now. -} - void calomega_state::init_comg079() { uint8_t *PRGROM = memregion( "maincpu" )->base(); @@ -4785,6 +4752,32 @@ void calomega_state::init_comg079() PRGROM[0x2E6F] = 0x09; } +void calomega_state::init_comg080() +{ + init_sys903(); + + /* Injecting missing Start and NMI vectors... + Start = $2042; NMI = $26f8; + Also a fake vector at $3ff8-$3ff9. The code checks these values to continue. + */ + uint8_t *PRGROM = memregion( "maincpu" )->base(); + + PRGROM[0x3ff8] = 0x8e; // checked by code + PRGROM[0x3ff9] = 0x97; // checked by code + + PRGROM[0x3ffc] = 0x42; // start vector + PRGROM[0x3ffd] = 0x20; + PRGROM[0x3ffe] = 0xf8; // NMI vector + PRGROM[0x3fff] = 0x26; +} + +void calomega_state::init_comg176() +{ + uint8_t *PRGROM = memregion( "maincpu" )->base(); + + PRGROM[0x25df] = 0x00; // patching the checksum flag. +} + // for debug purposes... void calomega_state::init_any() { @@ -4838,7 +4831,8 @@ GAME( 198?, comg903d, 0, sys903, stand903, calomega_state, init_sys903, GAME( 198?, comg905d, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - System 905 Diag.PROM", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) //************* 906-III games ************** -GAME( 198?, comg5108, 0, sys906, stand906, calomega_state, init_comg5108, ROT0, "Casino Electronics Inc.", "CEI 51.08 (CEI 906-III Poker)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, comg5108, 0, sys906, stand906, calomega_state, empty_init, ROT0, "Casino Electronics Inc.", "CEI 51.08 (CEI 906-III Poker)", MACHINE_SUPPORTS_SAVE ) +GAME( 1988, comg5107, 0, sys906, stand906, calomega_state, empty_init, ROT0, "Casino Electronics Inc.", "CEI 51.07 (CEI 906-III Poker)", MACHINE_SUPPORTS_SAVE ) //****** Unofficial 903/904/905 3rd part games ******* GAME( 1982, elgrande, 0, s903mod, elgrande, calomega_state, init_s903mod, ROT0, "Enter-Tech, Ltd. / Tuni Electro Service", "El Grande - 5 Card Draw (New)", MACHINE_SUPPORTS_SAVE ) @@ -4849,6 +4843,6 @@ GAME( 1988, ssipkr30, ssipkr24, s903mod, ssipkr, calomega_state, init_s903mo GAME( 1990, ssipkr40, ssipkr24, s903mod, ssipkr, calomega_state, init_s903mod, ROT0, "SSI", "SSI Poker (v4.0)", MACHINE_SUPPORTS_SAVE ) //****** Unofficial 906-III family 3rd part games ******* -GAME( 1990, cas21iwc, 0, sys906, cas21iwc, calomega_state, init_cas21iwc, ROT0, "UCMC/IWC", "Casino 21 UCMC/IWC (ver 30.08)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pokeriwc, 0, sys906, pokeriwc, calomega_state, init_pokeriwc, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, pokiwc162, pokeriwc, sys906, pokeriwc, calomega_state, init_pokeriwc, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03 20-6-91)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, cas21iwc, 0, sys906, cas21iwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Casino 21 UCMC/IWC (ver 30.08)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pokeriwc, 0, sys906, pokeriwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, pokiwc162, pokeriwc, sys906, pokeriwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03 20-6-91)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/changyu.cpp b/src/mame/drivers/changyu.cpp index 54f1d4a7549..6697109a303 100644 --- a/src/mame/drivers/changyu.cpp +++ b/src/mame/drivers/changyu.cpp @@ -179,7 +179,7 @@ void changyu_state::changyu2(machine_config &config) { changyu(config); - I87C51(config.replace(), "mcu", XTAL(8'000'000)); + I87C51(config.replace(), "mcu", XTAL(8'000'000)).set_disable(); // not dumped yet YM2413(config, "ymsnd", 3.579545_MHz_XTAL).add_route(ALL_OUTPUTS, "mono", 1.0); } @@ -225,7 +225,7 @@ ROM_START( changyu2 ) // 999 ROM999 II BY HUANGYEH string ROM_LOAD( "95.bin", 0x00000, 0x10000, CRC(c3a8061f) SHA1(8e2b2509de32b90c0ac5f3eabb8d256a1fbb393e) ) // 27C512 ROM_REGION(0x1000, "mcu", 0) - ROM_LOAD( "99c.bin", 0x00000, 0x1000, CRC(8d52dc7d) SHA1(84ae3d95696aec6a13401ea46f7b13410dc9c31b) ) // decapped + ROM_LOAD( "99c.bin", 0x00000, 0x1000, NO_DUMP ) // needs decap ROM_REGION(0x20000, "gfx1", 0) ROM_LOAD( "91.bin", 0x00000, 0x08000, CRC(747c98e3) SHA1(30926ee500c6ee21b7e73424afc76f34d84cb896) ) // 27256 diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 76455b87f7e..073240684d9 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -1026,6 +1026,7 @@ public: void super21p(machine_config &config); void caspoker(machine_config &config); void icp_ext(machine_config &config); + void trilancek(machine_config &config); void init_vkdlswwh(); void init_icp1db(); @@ -1116,6 +1117,7 @@ private: void witchcrd_map(address_map &map); void super21p_map(address_map &map); void icp_ext_map(address_map &map); + void trilancek_map(address_map &map); required_shared_ptr m_videoram; required_shared_ptr m_colorram; @@ -1190,7 +1192,8 @@ TILE_GET_INFO_MEMBER(goldnpkr_state::get_bg_tile_info) int attr = m_colorram[tile_index]; int code = ((attr & 1) << 8) | m_videoram[tile_index]; - int bank = (attr & 0x02) >> 1; // bit 1 switch the gfx banks +// int bank = (attr & 0x02) >> 1; // bit 1 switch the gfx banks + int bank = ((attr & 0xc0 ) >> 5 ) + ((attr & 0x02 )>> 1 ); int color = (attr & 0x3c) >> 2; // bits 2-3-4-5 for color tileinfo.set(bank, code, color, 0); @@ -1860,6 +1863,19 @@ void goldnpkr_state::icp_ext_map(address_map &map) map(0x6000, 0x7fff).rom(); } +void goldnpkr_state::trilancek_map(address_map &map) +{ +// map.global_mask(0x7fff); + map(0x0000, 0x07ff).ram().share("nvram"); // battery backed RAM + map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1000, 0x13ff).ram().w(FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram"); + map(0x1800, 0x1bff).ram().w(FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram"); + map(0x2000, 0xffff).rom(); // the whole addressing +} + /********************************************* * Input Ports * @@ -4100,6 +4116,77 @@ static INPUT_PORTS_START( super21p ) INPUT_PORTS_END +static INPUT_PORTS_START( trilancek ) + // Multiplexed - 4x5bits + PORT_START("IN0-0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet/Relance") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) PORT_NAME("Service") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal/Draw") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) + 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("IN0-1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_IMPULSE(3) PORT_NAME("Manual Collect") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small") + 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("IN0-2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) + 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("IN0-3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("IN0-3 01") PORT_CODE(KEYCODE_D) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("IN0-3 02") PORT_CODE(KEYCODE_F) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coupon (Note In)") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(3) PORT_NAME("Coin In") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("IN0-3 10") PORT_CODE(KEYCODE_G) + 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("SW1") + // only bits 4-7 are connected here and were routed to SW1 1-4 + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + /********************************************* * Graphics Layouts * *********************************************/ @@ -4118,7 +4205,8 @@ static const gfx_layout tilelayout = static const gfx_layout fixedtilelayout = { 8, 8, - 0x100, +// 0x100, + RGN_FRAC(1,3), 3, { 0, RGN_FRAC(1,3), RGN_FRAC(2,3) }, { 0, 1, 2, 3, 4, 5, 6, 7 }, @@ -4167,6 +4255,17 @@ static GFXDECODE_START( gfx_caspoker ) GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 128, 16 ) GFXDECODE_END +static GFXDECODE_START( gfx_trilancek ) + GFXDECODE_ENTRY( "gfx1", 0, fixedtilelayout, 0, 16 ) + GFXDECODE_ENTRY( "gfx2", 0, fixedtilelayout, 0, 16 ) + GFXDECODE_ENTRY( "gfx3", 0, fixedtilelayout, 0, 16 ) + GFXDECODE_ENTRY( "gfx4", 0, fixedtilelayout, 0, 16 ) + GFXDECODE_ENTRY( "gfx5", 0, fixedtilelayout, 0, 16 ) + GFXDECODE_ENTRY( "gfx6", 0, fixedtilelayout, 0, 16 ) + GFXDECODE_ENTRY( "gfx7", 0, fixedtilelayout, 0, 16 ) + GFXDECODE_ENTRY( "gfx8", 0, fixedtilelayout, 0, 16 ) +GFXDECODE_END + /********************************************************** * Discrete Sound Routines * @@ -4328,6 +4427,7 @@ void goldnpkr_state::goldnpkr_base(machine_config &config) { // basic machine hardware M6502(config, m_maincpu, CPU_CLOCK); +// R65C02(config, m_maincpu, CPU_CLOCK); m_maincpu->set_addrmap(AS_PROGRAM, &goldnpkr_state::goldnpkr_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); @@ -4624,6 +4724,22 @@ void goldnpkr_state::caspoker(machine_config &config) } +void goldnpkr_state::trilancek(machine_config &config) +{ + goldnpkr_base(config); + + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &goldnpkr_state::trilancek_map); + + // video hardware + m_gfxdecode->set_info(gfx_trilancek); + m_palette->set_init(FUNC(goldnpkr_state::witchcrd_palette)); + + // sound hardware + SPEAKER(config, "mono").front_center(); + DISCRETE(config, m_discrete, goldnpkr_discrete).add_route(ALL_OUTPUTS, "mono", 1.0); +} + /********************************************* * Blitz System * @@ -11326,7 +11442,6 @@ ROM_END and one big relay, with unknown purposes. Etched "PS Public Softwear". */ - ROM_START( super21p ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "13.ic4", 0xa000, 0x2000, CRC(6f414354) SHA1(290e97b876ce7aa9e273fe5f597caaa2e31992a8) ) // ok @@ -11367,6 +11482,163 @@ ROM_START( super21p ) ROM_END +/* + Tri Lance Poker + + There is an extra cards GFX bitplane + in the 1st half of the char ROM. + +*/ +ROM_START( trilance ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "27c64.bin", 0x2000, 0x2000, CRC(531f0788) SHA1(683dfa4de258f848c0aa1a5491a3feafba631c1f) ) + + ROM_REGION( 0x1800, "gfx1", 0 ) + ROM_FILL( 0x0000, 0x1000, 0x0000 ) // filling the R-G bitplanes + ROM_LOAD( "2732.bin", 0x1000, 0x0800, CRC(97efa603) SHA1(c8d42fa0f0ca18a725f63b98f046caec01074d47) ) // text chars. + ROM_CONTINUE( 0x1000, 0x0800 ) // 2nd half: text chars. + + ROM_REGION( 0x1800, "gfx2", 0 ) + ROM_LOAD( "2716_1.bin", 0x0000, 0x0800, CRC(124f131f) SHA1(35b18d1d6b0146ecc5b52f3222a270c6b868742a) ) // cards deck gfx, bitplane 1 + ROM_LOAD( "2716_2.bin", 0x0800, 0x0800, CRC(bc8e0d1f) SHA1(9e8e8e5c54f66948a782071d72ce129126d85e64) ) // cards deck gfx, bitplane 2 + ROM_LOAD( "2716_3.bin", 0x1000, 0x0800, CRC(c8ac16d7) SHA1(90c77e4659c6c52ae87d73ea353cbebf953714b9) ) // cards deck gfx, bitplane 3 + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "prom.bin", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) // PROM dump needed +ROM_END + +ROM_START( trilancea ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "27c64.bin", 0x2000, 0x2000, CRC(531f0788) SHA1(683dfa4de258f848c0aa1a5491a3feafba631c1f) ) + + ROM_REGION( 0x1800, "gfx1", 0 ) + ROM_FILL( 0x0000, 0x1000, 0x0000 ) // filling the R-G bitplanes + ROM_LOAD( "2732_3_4.bin", 0x1000, 0x0800, CRC(97efa603) SHA1(c8d42fa0f0ca18a725f63b98f046caec01074d47) ) // 1st half: unknown cards bitplane. + ROM_CONTINUE( 0x1000, 0x0800 ) // 2nd half: text chars. + + ROM_REGION( 0x1800, "gfx2", 0 ) + ROM_LOAD( "2716_1.bin", 0x0000, 0x0800, CRC(124f131f) SHA1(35b18d1d6b0146ecc5b52f3222a270c6b868742a) ) // cards deck gfx, bitplane 1 + ROM_LOAD( "2716_2.bin", 0x0800, 0x0800, CRC(bc8e0d1f) SHA1(9e8e8e5c54f66948a782071d72ce129126d85e64) ) // cards deck gfx, bitplane 2 + ROM_LOAD( "2716_3.bin", 0x1000, 0x0800, CRC(c8ac16d7) SHA1(90c77e4659c6c52ae87d73ea353cbebf953714b9) ) // cards deck gfx, bitplane 3 + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "prom.bin", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) // PROM dump needed +ROM_END + +ROM_START( trilancek ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "27c512.u5", 0x0000, 0x10000, CRC(1beede75) SHA1(de364f8048d758b69aa904ccdaa079a47260f4a7) ) + +/* + OFFSET ROM 27512.u19 (2nd half) ROM 27512.u20 (2nd half) ROM 27512.u21 (2nd half) + -------------+---------------------------------+---------------------------------+--------------------------------- + 0000-07ff empty cards plane 2 text chars + 0800-0fff empty empty cards plane 3 + 1000-17ff empty alternate cardset? + GP alt text chars (wing) + 1800-1fff empty alternate cardset? few first tiles (selctor?) + 2000-27ff empty unk gfx title Grand Prix 91 + 2800-2fff empty car title lower part empty + 3000-37ff empty car title upper part title Golden Poker + 3800-3fff empty empty empty + 4000-47ff cards plane 1 empty + 4800-4fff title Wild Joker alternate cardset + 5000-57ff alternate cardset? (century) empty + 5800-5fff no se, parecen abejitas figuras upper + 6000-67ff alternate cardset? empty + 6800-6fff figuras upper figuras lower + 7000-77ff figuras lower empty + 7800-7fff GP title GP + bandera +*/ + ROM_REGION( 0x18000, "gfxpool", 0 ) + ROM_LOAD( "27512.u19", 0x00000, 0x8000, CRC(2d3f9798) SHA1(861abd8f9674bed1fb80cab641e40c143f4c2ceb) ) // 27512, first half FF filled. + ROM_CONTINUE( 0x00000, 0x8000 ) // 2nd half: data starts at $4000. + ROM_LOAD( "27512.u20", 0x08000, 0x8000, CRC(a0a7d392) SHA1(45afce9ef8290094bc967180c000e85b0181b5d3) ) // 27512, identical quarters + ROM_CONTINUE( 0x08000, 0x8000 ) // 2nd half: 2 identical quarters. + ROM_LOAD( "27512.u21", 0x10000, 0x8000, CRC(14f06474) SHA1(929dfc5571ddde8102ede91c665d50a03f0c0f8f) ) // 27512, first half FF filled. + ROM_CONTINUE( 0x10000, 0x8000 ) // 2nd half: all is valid data. + + ROM_REGION( 0x1800, "gfx1", 0 ) // chars + ROM_FILL( 0x00000, 0x1000, 0x0000 ) // filling the R-G bitplanes + ROM_COPY( "gfxpool", 0x10000, 0x1000, 0x0800 ) // src-dest-size + +// ROM_REGION( 0x1800, "gfx2", 0 ) // cards +// ROM_COPY( "gfxpool", 0x04000, 0x0000, 0x0800 ) // src-dest-size +// ROM_COPY( "gfxpool", 0x08000, 0x0800, 0x0800 ) // src-dest-size +// ROM_COPY( "gfxpool", 0x10800, 0x1000, 0x0800 ) // src-dest-size + + ROM_REGION( 0x18000, "gfx2", 0 ) // cards + ROM_FILL( 0x00000, 0x10000, 0x0000 ) // filling the R-G bitplanes + ROM_LOAD( "m27c512.u20", 0x10000, 0x8000, CRC(0000d392) SHA1(45afce9ef8290094bc967180c000e85b0181b5d3) ) // 27512, identical quarters + ROM_CONTINUE( 0x10000, 0x8000 ) // 2nd half: all is valid data. + + ROM_REGION( 0x1800, "gfx3", 0 ) // alt chars (wing) + ROM_FILL( 0x00000, 0x1000, 0x0000 ) // filling the R-G bitplanes + ROM_COPY( "gfxpool", 0x11000, 0x1000, 0x0800 ) // src-dest-size + + ROM_REGION( 0x1800, "gfx4", 0 ) // special numbers and car card + ROM_COPY( "gfxpool", 0x02000, 0x0000, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x0a000, 0x0800, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x14800, 0x1000, 0x0800 ) // src-dest-size + + ROM_REGION( 0x1800, "gfx5", 0 ) // car title upper part + ROM_COPY( "gfxpool", 0x03000, 0x0000, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x03000, 0x0800, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x15800, 0x1000, 0x0800 ) // src-dest-size + + ROM_REGION( 0x1800, "gfx7", 0 ) // car title medium part + //ROM_COPY( "gfxpool", 0x02800, 0x0000, 0x0800 ) // src-dest-size + //ROM_COPY( "gfxpool", 0x02800, 0x0800, 0x0800 ) // src-dest-size + //ROM_COPY( "gfxpool", 0x16800, 0x1000, 0x0800 ) // src-dest-size + + ROM_FILL( 0x00000, 0x1000, 0x0000 ) // filling the R-G bitplanes + ROM_COPY( "gfxpool", 0x13000, 0x1000, 0x0800 ) // src-dest-size + + ROM_REGION( 0x1800, "gfx6", 0 ) // car title lower part + GP + ROM_COPY( "gfxpool", 0x03800, 0x0000, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x03800, 0x0800, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x17800, 0x1000, 0x0800 ) // src-dest-size + //ROM_COPY( "gfxpool", 0x07000, 0x0000, 0x0800 ) // src-dest-size + //ROM_COPY( "gfxpool", 0x0f000, 0x0800, 0x0800 ) // src-dest-size + //ROM_COPY( "gfxpool", 0x17000, 0x1000, 0x0800 ) // src-dest-size + + ROM_REGION( 0x1800, "gfx8", 0 ) // few tiles (selector?) + ROM_COPY( "gfxpool", 0x01000, 0x0000, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x09000, 0x0800, 0x0800 ) // src-dest-size + ROM_COPY( "gfxpool", 0x11800, 0x1000, 0x0800 ) // src-dest-size + + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "tsp24s10.u8", 0x0000, 0x0100, BAD_DUMP CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) // PROM dump needed +ROM_END + + +/* + Tri Lance Poker alternate + + dunno... testing + +*/ +ROM_START( trilancec ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "game_27128.15a", 0x2000, 0x2000, CRC(00000788) SHA1(683dfa4de258f848c0aa1a5491a3feafba631c1f) ) + ROM_CONTINUE( 0x2000, 0x2000 ) // identical halves. + ROM_LOAD( "game_2732.16a", 0x7000, 0x1000, CRC(00000788) SHA1(683dfa4de258f848c0aa1a5491a3feafba631c1f) ) + + ROM_REGION( 0x3000, "gfx1", 0 ) + ROM_FILL( 0x0000, 0x2000, 0x0000 ) // filling the R-G bitplanes + ROM_LOAD( "2.7a", 0x2000, 0x1000, CRC(000044d2) SHA1(c309a5ee6922bf2752d218c134edb3ef5f808afa) ) // chars / cards deck gfx, bitplane 3 + + ROM_REGION( 0x3000, "gfx2", 0 ) + ROM_LOAD( "0.5a", 0x0000, 0x1000, CRC(000006c4) SHA1(45b874554fb487173acf12daa4ff99e49e335362) ) // cards deck gfx, bitplane1 + ROM_LOAD( "1.6a", 0x1000, 0x1000, CRC(0000c680) SHA1(3723f66e1def3908f2e6ba2989def229d9846b02) ) // cards deck gfx, bitplane2 + ROM_COPY( "gfx1", 0x2800, 0x2000, 0x0800 ) // cards deck gfx, bitplane 3. found in the 2nd quarter of the chars rom + + + ROM_REGION( 0x0100, "proms", 0 ) + ROM_LOAD( "n82s129.bin", 0x0000, 0x0100, CRC(0000066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) // PROM dump needed +ROM_END + + /********************************************* * Driver Init * *********************************************/ @@ -11964,6 +12236,13 @@ GAME( 198?, geniea, genie, geniea, geniea, goldnpkr_state, empty_init GAMEL( 1983, silverga, 0, goldnpkr, goldnpkr, goldnpkr_state, empty_init, ROT0, "", "Silver Game", 0, layout_goldnpkr ) GAMEL( 1984, bonuspkr, 0, goldnpkr, bonuspkr, goldnpkr_state, init_bonuspkr, ROT0, "Galanthis Inc.", "Bonus Poker", 0, layout_goldnpkr ) +GAME( 198?, trilance, 0, pottnpkr, pottnpkr, goldnpkr_state, empty_init, ROT0, "", "Tri Lance Poker (set 1)", MACHINE_NOT_WORKING ) +GAME( 198?, trilancea, 0, pottnpkr, pottnpkr, goldnpkr_state, empty_init, ROT0, "", "Tri Lance Poker (set 2)", MACHINE_NOT_WORKING ) + +GAME( 198?, trilancec, 0, geniea, geniea, goldnpkr_state, empty_init, ROT0, "", "Tri Lance Poker alt", 0 ) + +GAME( 198?, trilancek, 0, trilancek, trilancek, goldnpkr_state, empty_init, ROT0, "", "Tri Lance Poker (kanda)", MACHINE_NOT_WORKING ) + GAMEL( 198?, superdbl, pottnpkr, goldnpkr, goldnpkr, goldnpkr_state, empty_init, ROT0, "Karateco", "Super Double (French)", 0, layout_goldnpkr ) GAME( 198?, pokerdub, 0, pottnpkr, goldnpkr, goldnpkr_state, empty_init, ROT0, "", "unknown French poker game", MACHINE_NOT_WORKING ) // lacks of 2nd program ROM. GAME( 198?, pokersis, 0, bchancep, goldnpkr, goldnpkr_state, empty_init, ROT0, "Sisteme France", "unknown Sisteme France Poker", MACHINE_NOT_WORKING ) // fix banking (4 prgs?)... diff --git a/src/mame/drivers/magic10.cpp b/src/mame/drivers/magic10.cpp index a297ec1f199..3471f146afd 100644 --- a/src/mame/drivers/magic10.cpp +++ b/src/mame/drivers/magic10.cpp @@ -138,7 +138,6 @@ Both setups show different variants for components layout, memory size, NVRAM, e #define CPU_CLOCK MAIN_CLOCK/2 - class magic10_state : public driver_device { public: @@ -167,6 +166,9 @@ public: void init_hotslot(); void init_altaten(); + DECLARE_READ_LINE_MEMBER(hopper_r); + DECLARE_READ_LINE_MEMBER(ticket_r); + protected: virtual void machine_start() override { m_lamps.resolve(); } virtual void video_start() override; @@ -202,6 +204,9 @@ private: required_device m_gfxdecode; required_device m_palette; output_finder<8> m_lamps; + uint16_t m_hopper_state; + uint16_t m_ticket_state; + }; @@ -336,8 +341,10 @@ void magic10_state::magic10_out_w(uint16_t data) 7654 3210 ========= ---- ---x Payout lamp. - ---- -x-- Coin counter. - + ---- --x- Ticket Motor. + ---- -x-- Coin In counter. + ---- x--- Ticket Coin Out. + -x-- ---- Hopper Coin Out */ // popmessage("lamps: %02X", data); @@ -351,7 +358,26 @@ void magic10_state::magic10_out_w(uint16_t data) m_lamps[6] = BIT(data, 6); /* Lamp 7 - PLAY (BET/TAKE/CANCEL) */ m_lamps[7] = BIT(data, 8); /* Lamp 8 - PAYOUT/SUPERGAME */ - machine().bookkeeping().coin_counter_w(0, data & 0x400); + machine().bookkeeping().coin_counter_w(0, data & 0x0400); // Coin In. + machine().bookkeeping().coin_counter_w(6, data & 0x0200); // Ticket Out. + machine().bookkeeping().coin_counter_w(7, data & 0x4000); // Hopper Out. + + m_hopper_state = (data & 0x4000) >> 14; + m_ticket_state = (data & 0x0200) >> 9; +} + +/*****************/ +/* Pseudo Hopper */ +/*****************/ + +READ_LINE_MEMBER(magic10_state::hopper_r) +{ + return m_hopper_state & 0x0001; +} + +READ_LINE_MEMBER(magic10_state::ticket_r) +{ + return m_ticket_state & 0x0001; } /*************************** @@ -440,7 +466,7 @@ void magic10_state::sgsafari_map(address_map &map) map(0x102000, 0x103fff).ram().w(FUNC(magic10_state::layer2_videoram_w)).share("layer2_videoram"); map(0x200000, 0x203fff).ram().share("nvram"); map(0x300000, 0x3001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - map(0x500002, 0x500003).portr("DSW1"); + map(0x500002, 0x500003).portr("IN1_DSW1"); map(0x500008, 0x500009).w(FUNC(magic10_state::magic10_out_w)); map(0x50000b, 0x50000b).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0x50000e, 0x50000f).portr("IN0"); @@ -478,7 +504,8 @@ static INPUT_PORTS_START( magic10 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Note B") PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("Note C") PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW ) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Out Hole") PORT_CODE(KEYCODE_D) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(magic10_state, ticket_r) PORT_NAME("TKTSW") + //PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Out Hole") PORT_CODE(KEYCODE_D) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN5 ) PORT_NAME("Note D") PORT_CODE(KEYCODE_9) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect") @@ -486,10 +513,29 @@ static INPUT_PORTS_START( magic10 ) PORT_DIPNAME( 0x0001, 0x0001, "Display Logo" ) PORT_DIPSETTING( 0x0000, DEF_STR( No ) ) PORT_DIPSETTING( 0x0001, DEF_STR( Yes ) ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(magic10_state, hopper_r) PORT_NAME("HPSW") +// PORT_DIPNAME( 0x0004, 0x0004, "0004" ) +// PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) +// PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +// PORT_DIPNAME( 0x0008, 0x0008, "0008" ) +// PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) +// PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_CUSTOM ) // empty dispenser - PORT_DIPNAME( 0x00ee, 0x00ee, "Disable Free Play" ) - PORT_DIPSETTING( 0x00ee, DEF_STR( Off ) ) + + PORT_DIPNAME( 0x00ec, 0x00ec, "Disable Free Play - Enable Credit Collect" ) + PORT_DIPSETTING( 0x00ec, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + +/* PORT_DIPNAME( 0x0020, 0x0020, "0020" ) + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, "0040" ) + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, "0080" ) + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +*/ PORT_DIPNAME( 0x0300, 0x0100, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x0300, DEF_STR( Hardest ) ) PORT_DIPSETTING( 0x0200, DEF_STR( Hard ) ) @@ -656,20 +702,28 @@ static INPUT_PORTS_START( sgsafari ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5 / Half Gamble") PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start") PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play (Bet / Take / Cancel)") - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("REVISAR_1") PORT_CODE(KEYCODE_K) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin 1") PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coin 2") PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_NAME("Note B") PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("Note C") PORT_SERVICE_NO_TOGGLE( 0x1000, IP_ACTIVE_LOW ) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(magic10_state, ticket_r) PORT_NAME("TKTSW") PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN5 ) PORT_NAME("Note D") PORT_CODE(KEYCODE_9) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Payout / Super Game") - PORT_START("DSW1") + PORT_START("IN1_DSW1") // TODO: defaults are hardwired with aforementioned startup code, is it intentional? - PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(magic10_state, hopper_r) PORT_NAME("HPSW") + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x0300, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0200, DEF_STR( Normal ) ) diff --git a/src/mame/drivers/tvg01.cpp b/src/mame/drivers/tvg01.cpp index 4f3b97b6fc9..2dd65da4a41 100644 --- a/src/mame/drivers/tvg01.cpp +++ b/src/mame/drivers/tvg01.cpp @@ -1,3 +1,4 @@ + // license:BSD-3-Clause // copyright-holders:AJR, Roberto Fresca /******************************************************************************* @@ -82,7 +83,7 @@ protected: private: template void input_select_w(u8 data); u8 player_inputs_r(); - void bank_select_w(u8 data); + void outport_w(u8 data); u8 bank_r(offs_t offset); void mem_map(address_map &map); @@ -129,10 +130,23 @@ u8 tvg01_state::player_inputs_r() return result; } -void tvg01_state::bank_select_w(u8 data) +void tvg01_state::outport_w(u8 data) { +/* - bits - + 7654 3210 + ---- xxxx bank selector. + ---x ---- hopper motor. + --x- ---- credits in counter. + -x-- ---- credits out counter. + x--- ---- unknown. +*/ m_bank_select = data; m_hopper->motor_w(BIT(data, 4)); + +// the following counters are adding +1 on each reset. +// find why... + machine().bookkeeping().coin_counter_w(0, data & 0x20); // Coins In counter. + machine().bookkeeping().coin_counter_w(1, data & 0x40); // Coins Out counter (only in payout mode). } u8 tvg01_state::bank_r(offs_t offset) @@ -292,7 +306,7 @@ void tvg01_state::theboat(machine_config &config) i8255_device &ppi1(I8255(config, "ppi1")); // D8255AC-2 ppi1.in_pa_callback().set_ioport("INP0"); - ppi1.out_pb_callback().set(FUNC(tvg01_state::bank_select_w)); + ppi1.out_pb_callback().set(FUNC(tvg01_state::outport_w)); i8255_device &ppi2(I8255(config, "ppi2")); // D8255AC-2 ppi2.out_pa_callback().set(FUNC(tvg01_state::input_select_w<0>)); diff --git a/src/mame/includes/calomega.h b/src/mame/includes/calomega.h index 5af538c24b1..43ee91a0ff9 100644 --- a/src/mame/includes/calomega.h +++ b/src/mame/includes/calomega.h @@ -52,9 +52,6 @@ public: void init_comg079(); void init_comg080(); void init_comg176(); - void init_comg5108(); - void init_cas21iwc(); - void init_pokeriwc(); void init_any(); void sys905(machine_config &config); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f3e6d8fca34..f374df7c467 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9845,7 +9845,8 @@ comg240 // (c) 1985 Cal Omega / Casino Electronics Inc. comg246 // (c) 1985 Cal Omega Inc. comg272a // (c) 1985 Cal Omega Inc. comg272b // (c) 1985 Cal Omega Inc. -comg5108 // (c) 1985 Casino Electronics Inc. +comg5107 // (c) 1988 Casino Electronics Inc. +comg5108 // (c) 1988 Casino Electronics Inc. comg903d // (c) 198? Cal Omega Inc. comg905d // (c) 198? Cal Omega Inc. elgrande // (c) 1982 Tuni Electro Service / E.T. Marketing