diff options
| author | 2025-08-24 01:40:15 +0200 | |
|---|---|---|
| committer | 2025-08-24 01:40:15 +0200 | |
| commit | 1c5f26ff7d17edc83e992fb0a338956e5eb30fca (patch) | |
| tree | 77cbf4281f72a2dbc636854e78352c3a0f34f855 | |
| parent | 57b9c3db8ec038dc13084e5ca98d165fda9da107 (diff) | |
goldstar.cpp driver improvements. [Roberto Fresca, Grull Osgo]
- Fixed/improved hopper support to the recently supported games/sets.
- Rearranged inputs and created machine drivers for the A900/animalw series.
- Fixed the horrible noise on the animalw, animalwbl and lucky8t due to use
of AY8910 instead of SN76489.
- Hopper support for luckylad, animalw and animalwbl.
- Improved the lucky 8 lines 1P control panel.
Systems promoted to working
---------------------------
Animal Wonders (ver A900 66) [Roberto Fresca, Grull Osgo]
Animal Wonders (ver A900, bootleg) [Roberto Fresca, Grull Osgo]
| -rw-r--r-- | src/mame/igs/goldstar.cpp | 82 | ||||
| -rw-r--r-- | src/mame/layout/lucky8p1.lay | 21 |
2 files changed, 50 insertions, 53 deletions
diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp index 590f90aa15d..99b9c1f3f8c 100644 --- a/src/mame/igs/goldstar.cpp +++ b/src/mame/igs/goldstar.cpp @@ -211,7 +211,7 @@ * New Lucky 8 Lines (A900 2nd gen, Cross and Bell Bonus) - + This game has new features. The game has stops buttons (stops 1-2-3, and stop all) to stop the reels. @@ -558,6 +558,7 @@ public: void lucky8f(machine_config &config) ATTR_COLD; void lucky8k(machine_config &config) ATTR_COLD; void lucky8p(machine_config &config) ATTR_COLD; + void lucky8t(machine_config &config) ATTR_COLD; void lucky8tet(machine_config &config) ATTR_COLD; void luckybar(machine_config &config) ATTR_COLD; void luckylad(machine_config &config) ATTR_COLD; @@ -617,7 +618,7 @@ private: uint32_t screen_update_mbstar(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void masked_irq(int state); - + void z80_io_w(offs_t offset, uint8_t data); uint8_t z80_io_r(offs_t offset); void tmcu_io_w(offs_t offset, uint8_t data); @@ -626,7 +627,7 @@ private: uint8_t m_z80_io_c0; uint8_t tetin3_r(); - + TILE_GET_INFO_MEMBER(get_magical_fg_tile_info); //virtual void machine_start() override { goldstar_state::machine_start(); m_tile_bank = 0; } @@ -790,6 +791,7 @@ void wingco_state::machine_start() save_item(NAME(m_nmi_enable)); save_item(NAME(m_vidreg)); + m_ticket_dispenser->motor_w(0); } void unkch_state::machine_start() @@ -2954,7 +2956,7 @@ void unkch_state::coincount_w(uint8_t data) */ - m_ticket_dispenser->motor_w(BIT(data, 7)); + m_ticket_dispenser->motor_w(!BIT(data, 7)); machine().bookkeeping().coin_counter_w(0, data & 0x04); // Credit counter machine().bookkeeping().coin_counter_w(1, data & 0x08); // Key In counter @@ -5210,7 +5212,7 @@ static INPUT_PORTS_START( lucky8 ) PORT_START("IN4") // b811 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Hopper") @@ -5534,20 +5536,8 @@ static INPUT_PORTS_START( ns8linew ) INPUT_PORTS_END -static INPUT_PORTS_START( animalw ) - PORT_INCLUDE( ns8linew) - - // expects the following two bits ACTIVE_HIGH or it won't boot - PORT_MODIFY("IN2") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_MODIFY("IN4") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) -INPUT_PORTS_END - - static INPUT_PORTS_START( lucky8t ) - PORT_INCLUDE( ns8linew) + PORT_INCLUDE( lucky8 ) PORT_MODIFY("IN1") // b801 - No P2 Controls... PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -5555,16 +5545,16 @@ static INPUT_PORTS_START( lucky8t ) // code expects the b802h bit2 and b811h bit0 ACTIVE HIGH, and b811h bit3 ACTIVE LOW to boot the game. PORT_MODIFY("IN2") // b802 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // code checks if high to boot - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Stop3 / Right") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Stop2 / Bonus Game") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Stop1 / Left") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Stop3 (Right)") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Stop2 (Bonus Game)") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Stop1 (Left)") PORT_MODIFY("IN3") // b810 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Stop All"); PORT_MODIFY("IN4") // b811 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // code checks if high to boot -// PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // code checks if low to boot PORT_MODIFY("DSW1") @@ -6013,8 +6003,8 @@ static INPUT_PORTS_START( luckylad ) // CHECK & FIX ME PORT_START("IN4") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_NAME("Key Out / Attendant") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Hopper") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -10202,8 +10192,8 @@ static INPUT_PORTS_START( lucky8tet ) //PORT_MODIFY("IN4") // b811 //PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) - - PORT_START("DB_DIP") + + PORT_START("DB_DIP") PORT_DIPNAME(0x03, 0x03, "Max Bet") PORT_DIPLOCATION("DB_DIP:1,2") // MCU port 3.0-3.1 PORT_DIPSETTING(0x00, "8") PORT_DIPSETTING(0x01, "16") @@ -10869,8 +10859,8 @@ void wingco_state::system_outputc_w(uint8_t data) if (!m_nmi_enable) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); - - m_ticket_dispenser->motor_w(BIT(data, 5)); + + m_ticket_dispenser->motor_w(!BIT(data, 7)); } void wingco_state::ay8910_outputa_w(uint8_t data) @@ -10888,7 +10878,7 @@ uint8_t wingco_state::tetin3_r() { uint8_t ret = ioport("IN3")->read(); - if(ret == 0xfe) // r > LUCKY TO TETRIS + if(ret == 0xfe) // r > LUCKY TO TETRIS { if(m_tcount++ == 2) { @@ -10898,7 +10888,7 @@ uint8_t wingco_state::tetin3_r() ret = 0xfe; } - if(ret == 0xfd) // t > TETRIS TO LUCKY + if(ret == 0xfd) // t > TETRIS TO LUCKY { if(m_tcount++ == 2) { @@ -10923,11 +10913,11 @@ uint8_t wingco_state::z80_io_r(offs_t offset) if(offset == 0xc0) { - logerror("z80_io_r: offset:%02x\n", offset); + logerror("z80_io_r: offset:%02x\n", offset); return m_z80_io_c0; } -// logerror("z80_io_r: offset:%02x\n", offset); // investigar funcionalidad ports 0x31, 0x32, 0xc0. +// logerror("z80_io_r: offset:%02x\n", offset); // investigar funcionalidad ports 0x31, 0x32, 0xc0. return machine().rand() & 0x0f; } @@ -10940,7 +10930,7 @@ void wingco_state::z80_io_w(offs_t offset, uint8_t data) void wingco_state::tmcu_io_w(offs_t offset, uint8_t data) { - if ((offset != 0x122) & (offset != 0x123)) + if ((offset != 0x122) & (offset != 0x123)) logerror("tmcu_io Write: Offs:%04x - Data:%02x\n", offset, data); } @@ -10952,7 +10942,7 @@ uint8_t wingco_state::tmcu_io_r(offs_t offset) void wingco_state::tmcu_p1_out(uint8_t data) { m_mcu_p1 = data; -// logerror("MCU Port1:%02x\n", tmcu_p1_out); +// logerror("MCU Port1:%02x\n", tmcu_p1_out); } @@ -11600,13 +11590,23 @@ void wingco_state::luckylad(machine_config &config) maincpu.set_decrypted_tag(":decrypted_opcodes"); } +void wingco_state::lucky8t(machine_config &config) +{ + lucky8(config); + + SN76489(config.replace(), "snsnd", 0); // unused device +} + void wingco_state::animalw(machine_config &config) { lucky8(config); m_maincpu->set_addrmap(AS_PROGRAM, &wingco_state::animalw_map); + + SN76489(config.replace(), "snsnd", 0); // unused device } + void wingco_state::super972(machine_config &config) { lucky8(config); @@ -20496,7 +20496,7 @@ ROM_START( jpknight ) // D9503 DYNA ROM_LOAD( "jpk_1d.d9", 0x00000, 0x40000, CRC(620d041a) SHA1(b146acac5ddc163a78685b4cc2837422c7799206) ) ROM_RELOAD( 0x40000, 0x40000 ) - ROM_REGION( 0x200, "proms", 0 ) + ROM_REGION( 0x200, "proms", 0 ) // not dumped yet ROM_LOAD( "82s135.c9", 0x000, 0x100, CRC(f062d00c) SHA1(9600317958e79839caecffb98307d7cf6a15e715) ) ROM_LOAD( "82s135.c11", 0x100, 0x100, CRC(17c615a5) SHA1(d7bf23402e9da25bc6d9c27f5ceb27f3143caae4) ) ROM_END @@ -23801,7 +23801,7 @@ void wingco_state::init_lucky8p() void wingco_state::init_lucky8r() { uint8_t *rom = memregion("maincpu")->base(); - + // bypass protection rom[0x4340] = 0x20; rom[0x4364] = 0x08; @@ -23815,7 +23815,7 @@ void wingco_state::init_lucky8r() void wingco_state::init_lucky8s() { uint8_t *rom = memregion("maincpu")->base(); - + // bypass protection rom[0x4772] = 0x08; rom[0x47a8] = 0x02; @@ -24836,7 +24836,7 @@ GAMEL( 1988, lucky8p, lucky8, lucky8p, lucky8, wingco_state, init_luck GAMEL( 1988, lucky8q, lucky8, lucky8, lucky8, wingco_state, empty_init, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 16, W-4)", 0, layout_lucky8 ) GAMEL( 1987, lucky8r, lucky8, lucky8, lucky8, wingco_state, init_lucky8r, ROT0, "TQ System", "New Lucky 8 Lines (set 17, W-4, turbo, protected)", 0, layout_lucky8 ) // shift left registers protection GAMEL( 1988, lucky8s, lucky8, lucky8, lucky8, wingco_state, init_lucky8s, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 18, W-4, bingo/fever, protected)", 0, layout_lucky8 ) // shift left registers protection -GAME( 1997, lucky8t, lucky8, lucky8, lucky8t, wingco_state, empty_init, ROT0, "bootleg (Bigico)", "New Lucky 8 Lines (A900 2nd gen, Cross and Bell Bonus)", 0 ) // only 1 control set, no lamps except 2 leftovers... +GAME( 1997, lucky8t, lucky8, lucky8t, lucky8t, wingco_state, empty_init, ROT0, "bootleg (Bigico)", "New Lucky 8 Lines (A900 2nd gen, Cross and Bell Bonus)", 0 ) // only 1 control set, no lamps except 2 leftovers... GAMEL( 198?, ns8lines, 0, lucky8, lucky8b, wingco_state, empty_init, ROT0, "<unknown>", "New Lucky 8 Lines / New Super 8 Lines (W-4)", 0, layout_lucky8p1 ) // only 1 control set... GAMEL( 1985, ns8linesa, ns8lines, lucky8, lucky8b, wingco_state, empty_init, ROT0, "Yamate (bootleg)", "New Lucky 8 Lines / New Super 8 Lines (W-4, Lucky97 HW)", 0, layout_lucky8p1 ) // only 1 control set... GAMEL( 198?, ns8linew, ns8lines, lucky8, ns8linew, wingco_state, empty_init, ROT0, "<unknown>", "New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus)", 0, layout_lucky8 ) // 2 control sets... @@ -24857,8 +24857,8 @@ GAME( 198?, ladylinrd, ladylinr, ladylinrb,ladylinr, goldstar_state, init_lady GAME( 198?, ladylinre, ladylinr, ladylinrb,ladylinr, goldstar_state, init_ladylinre, ROT0, "TAB Austria", "Lady Liner (encrypted, set 4)", 0 ) GAME ( 1992?,wcat, 0, wcat3, lucky8b, wingco_state, init_wcat, ROT0, "Excel", "Wild Cat", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // needs correct GFX ROMs, I/O, etc GAME( 1995, wcat3, 0, wcat3, lucky8, wingco_state, init_wcat3, ROT0, "E.A.I.", "Wild Cat 3", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS ) // decryption partially wrong, needs soft resets before running. Bad PROM decode -GAMEL( 199?, animalw, 0, animalw, animalw, wingco_state, empty_init, ROT0, "GPS", "Animal Wonders (ver A900 66)", MACHINE_NOT_WORKING, layout_lucky8 ) // inputs / DIPs need to be checked -GAMEL( 199?, animalwbl, animalw, lucky8, animalw, wingco_state, empty_init, ROT0, "bootleg", "Animal Wonders (ver A900, bootleg)", MACHINE_NOT_WORKING, layout_lucky8 ) // inputs / DIPs need to be checked +GAMEL( 199?, animalw, 0, animalw, lucky8t, wingco_state, empty_init, ROT0, "GPS", "Animal Wonders (ver A900 66)", 0, layout_lucky8p1 ) // DIPs need to be checked +GAMEL( 199?, animalwbl, animalw, lucky8t, lucky8t, wingco_state, empty_init, ROT0, "bootleg", "Animal Wonders (ver A900, bootleg)", 0, layout_lucky8p1 ) // DIPs need to be checked GAMEL( 1989, cb2, 0, lucky8, lucky8, wingco_state, init_cb2, ROT0, "Dyna", "Cherry Bonus II (V2.00 06/01)", MACHINE_NOT_WORKING, layout_lucky8 ) // I/O need to be checked, seems reasonably working GAMEL( 1990, cbaai, 0, lucky8, lucky8, wingco_state, empty_init, ROT0, "bootleg (A.A.I.)", "Cherry Bonus (A.A.I. bootleg)", MACHINE_NOT_WORKING, layout_lucky8 ) // jumps to 0xf430 but there's nothing there? GAMEL( 199?, ttactoe, 0, lucky8, ttactoe, wingco_state, empty_init, ROT0, "bootleg (Sundance)","Tic Tac Toe (Sundance bootleg of New Lucky 8 Lines)", 0, layout_lucky8 ) // needs more DSW figured out @@ -25015,4 +25015,4 @@ GAMEL( 1988, lucky8tet, lucky8, lucky8tet, lucky8tet, wingco_state, init_l8t /* other possible stealth sets: - cmv4a ---> see the 1fxx zone. put a bp in 1f9f to see the loop. the game has tetris graphics inside. -*/ +*/
\ No newline at end of file diff --git a/src/mame/layout/lucky8p1.lay b/src/mame/layout/lucky8p1.lay index 22072241c2e..2692965b0d3 100644 --- a/src/mame/layout/lucky8p1.lay +++ b/src/mame/layout/lucky8p1.lay @@ -5,8 +5,8 @@ license:CC0-1.0 <mamelayout version="2"> <!-- - New Lucky 8 Lines (1 player) control panel. - Written by Roberto Fresca. + New Lucky 8 Lines (1 player) control panel. + Written by Roberto Fresca. --> <element name="Bet" defstate="0"> @@ -89,22 +89,20 @@ license:CC0-1.0 </element> - <element name="cpanel" /> + <element name="cpanel"> + <rect><color red="0.0" green="0.0" blue="0.0" /></rect> + </element> <element name="cpanel1"> - <rect><color red="0.20" green="0.20" blue="0.20" /></rect> + <rect><color red="0.07" green="0.07" blue="0.07" /></rect> </element> <element name="cpanel2"> - <rect><color red="0.15" green="0.15" blue="0.15" /></rect> + <rect><color red="0.05" green="0.05" blue="0.05" /></rect> </element> <element name="cpanel3"> - <rect><color red="0.10" green="0.10" blue="0.10" /></rect> - </element> - - <element name="cpanel4"> - <rect><color red="0.05" green="0.05" blue="0.05" /></rect> + <rect><color red="0.03" green="0.03" blue="0.03" /></rect> </element> @@ -116,8 +114,7 @@ license:CC0-1.0 <element ref="cpanel1"><bounds left="0" right="4" top="3.01" bottom="3.39" /></element> <element ref="cpanel2"><bounds left="0" right="4" top="3.02" bottom="3.38" /></element> <element ref="cpanel3"><bounds left="0" right="4" top="3.03" bottom="3.37" /></element> - <element ref="cpanel4"><bounds left="0" right="4" top="3.04" bottom="3.36" /></element> - <element ref="cpanel"><bounds left="0" right="4" top="3.05" bottom="3.35" /></element> + <element ref="cpanel"><bounds left="0" right="4" top="3.04" bottom="3.36" /></element> <element name="lamp3" ref="Bet_B" inputtag="IN0" inputmask="0x20"> |
