From b56b7746aa74ba89519b8d1743fd7e81d4859967 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 01:05:10 -0500 Subject: [PATCH 01/22] re add code. --- src/mame/misc/fruitctk.cpp | 333 +++++++++++++++++++++++++++++++++++++ 1 file changed, 333 insertions(+) create mode 100644 src/mame/misc/fruitctk.cpp diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp new file mode 100644 index 0000000000000..dfb146f0be4d2 --- /dev/null +++ b/src/mame/misc/fruitctk.cpp @@ -0,0 +1,333 @@ +// license:BSD-3-Clause +// copyright-holders:flama12333 +/************************************************************************* +Driver For fruit cocktail - Roulette gambling board + +Notes: (Wip) +K0+K1 = RESET +K0 = credits reset +K1 = Coin in/out display +K2 = Account coins? +also Shown program date +1999 09 13 2002 +K3 = Check account +K1+K3 = 0 to 19 value, Press play to enter, If is Incorrect will shown Error 21 +Errors + +00 RAM +02 IN/OUT Counter meters not detected at power on +04 ??? after tried to hex edit at 240 nvram +10 IC6116 +12 OUT Counter error at payment +23 Also happen if NVRAM Are Not Reset after access credits reset. - +30 COIN error +32 HOPPER error at payment +33 Coin IN account error +34 Coin OUT account error +52 Keyboard pressed at power on, or coin in cheat +35 requires reset k0+k1 to write data on ram + +Notes by the Dumper: +keyboard keys MUST NOT be pressed +counters in-out must be NC (0, LOW) +coin acceptor NC 0 LOW +hopper sensor NC 0 LOW + + + +Hardware info: (Wip) + +Board: +1x 8 dip switch +1x 4 dip switch +k0 k1 k2 k4 - misspelled as k3 +at89c52 or Syncmos sm8951ac25p + +gm76c28a-10 or p511ssl-10 + +m27c512-10f1 or w27c512 +w27c020-70 + +? - altera 7032 for I/O? +u2413 - ym2413 +u6295 - oki m6295 +? - 8910 clone + +Led board +X2 M82C55A-2 +new8279 + +Todo: + +Led Controller +Layout. + +Still Looping F1 During reset +if press to insert coin will cause bell ding and error 02 or error 30 +debug: +pc = 424 - boot +pc = 231 +*/ + +#include "emu.h" + +#include "cpu/mcs51/mcs51.h" +#include "machine/nvram.h" +#include "machine/ticket.h" +#include "machine/i8255.h" +#include "machine/i8279.h" +#include "sound/ay8910.h" +#include "sound/okim6295.h" +#include "sound/ymopl.h" +#include "speaker.h" +#include "marywu.lh" + + +namespace { + +class fruitctk_state : public driver_device +{ +public: + fruitctk_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_digits(*this, "digit%u", 0U) + , m_leds(*this, "led%u", 0U) + , m_inputs(*this, { "Inputs1", "Inputs2", "Inputs3", "Inputs4" }) + , m_hopper(*this, "hopper") + , m_oki(*this, "oki") + + { } + + void fruitctk(machine_config &config); + void p1_w(uint8_t data); + +protected: + virtual void machine_start() override; + +private: + void display_7seg_data_w(uint8_t data); + void multiplex_7seg_w(uint8_t data); + void io_map(address_map &map); + void program_map(address_map &map); + + + uint8_t keyboard_r(); + uint8_t m_selected_7seg_module = 0; + output_finder<32> m_digits; + output_finder<30> m_leds; + required_ioport_array<4> m_inputs; + required_device m_hopper; + required_device m_oki; + +}; + + +static INPUT_PORTS_START( fruitctk ) + + PORT_START("Inputs1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_Q) PORT_NAME("Bet 8") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 7") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 6") + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_R) PORT_NAME("Bet 5") + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_T) PORT_NAME("Bet 4") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_Y) PORT_NAME("Bet 3") + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_U) PORT_NAME("Bet 2") + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_I) PORT_NAME("Bet 1") + + + PORT_START("Inputs2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_CODE(KEYCODE_O) PORT_NAME("Start") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_CODE(KEYCODE_P) // D-UP Low? + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_CODE(KEYCODE_A) // D-UP High? + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_S) // unused? + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_D) PORT_NAME("Credit") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_F) PORT_NAME("Win") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_G) // Payout? + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CODE(KEYCODE_H)// Coin. will cause error 30 + + PORT_START("Inputs3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_J) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_K) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_L) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_X) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_C) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_V) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_B) + + PORT_START("Inputs4") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("K3") // K0 + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_NAME("K2") // K1 + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_NAME("K1") // K2 + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("K0") // K3 + + PORT_START("P1") + + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(hopper_device::line_r)) // will cause error 02 During reset + + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("P1.6") + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("P1.7") + + + +PORT_START("DSW1") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8") + + +PORT_START("DSW2") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8") +INPUT_PORTS_END + + + + +void fruitctk_state::p1_w(uint8_t data) +{ + + m_hopper->motor_w(BIT(data, 3)); // ?? from guessed + machine().bookkeeping().coin_counter_w(7, data & 0x80); + machine().bookkeeping().coin_counter_w(6, data & 0x40); + machine().bookkeeping().coin_counter_w(5, data & 0x20); + machine().bookkeeping().coin_counter_w(4, data & 0x10); + machine().bookkeeping().coin_counter_w(3, data & 0x08); + machine().bookkeeping().coin_counter_w(2, data & 0x04); // unused? + machine().bookkeeping().coin_counter_w(1, data & 0x02); // unused? + machine().bookkeeping().coin_counter_w(0, data & 0x01); // unused? + + logerror("P1.0 Write to %02x\n", data); + + +} + + + +void fruitctk_state::multiplex_7seg_w(uint8_t data) +{ + m_selected_7seg_module = data; +} + +uint8_t fruitctk_state::keyboard_r() +{ + switch (m_selected_7seg_module & 0x07) + { + case 0: + case 1: + case 2: + case 3: + return m_inputs[m_selected_7seg_module & 0x07]->read(); + default: + return 0x00; + } +} + +void fruitctk_state::display_7seg_data_w(uint8_t data) +{ + static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // HEF4511BP (7 seg display driver) // Code was from marywu + + m_digits[2 * m_selected_7seg_module + 0] = patterns[data & 0x0f]; + m_digits[2 * m_selected_7seg_module + 1] = patterns[data >> 4]; +} + +void fruitctk_state::program_map(address_map &map) +{ + map(0x0000, 0xffff).rom(); +} + +void fruitctk_state::io_map(address_map &map) +{ +map(0x8000, 0x87ff).ram().share("nvram"); +map(0xc000, 0xc001).w("opll", FUNC(ym2413_device::write)); +map(0x9002, 0x9003).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); +map(0xb000, 0xb001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); +map(0xb004, 0xb004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +map(0xb008, 0xb00a).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); +map(0xb00b, 0xb00b).nopw(); // ?? +map(0xb00c, 0xb00c).nopw(); // Led Board +map(0xb00d, 0xb00f).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? +} + +void fruitctk_state::machine_start() +{ + m_digits.resolve(); + m_leds.resolve(); +} + +void fruitctk_state::fruitctk(machine_config &config) +{ + /* Video */ + config.set_default_layout(layout_marywu); + + /* basic machine hardware */ + i8051_device &maincpu(I8051(config, "maincpu", XTAL(12'000'000))); + maincpu.set_addrmap(AS_PROGRAM, &fruitctk_state::program_map); + maincpu.set_addrmap(AS_IO, &fruitctk_state::io_map); + maincpu.port_in_cb<1>().set_ioport("P1"); + maincpu.port_out_cb<1>().set(FUNC(fruitctk_state::p1_w)); + + HOPPER(config, m_hopper, attotime::from_msec(10)); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + + /* Keyboard & display interface */ + i8279_device &kbdc(I8279(config, "i8279", XTAL(12'000'000) / 6)); + kbdc.out_sl_callback().set(FUNC(fruitctk_state::multiplex_7seg_w)); // select block of 7seg modules by multiplexing the SL scan lines + kbdc.in_rl_callback().set(FUNC(fruitctk_state::keyboard_r)); // keyboard Return Lines + kbdc.out_disp_callback().set(FUNC(fruitctk_state::display_7seg_data_w)); + + I8255A(config, "ppi1"); + I8255A(config, "ppi2"); + + + /* sound hardware */ + SPEAKER(config, "mono").front_center(); + ay8910_device &ay1(AY8910(config, "ay1", XTAL(12'000'000) / 6)); + ay1.add_route(ALL_OUTPUTS, "mono", 1.0); + ay1.port_a_read_callback().set_ioport("DSW1"); + ay1.port_b_read_callback().set_ioport("DSW2"); + + ym2413_device &opll(YM2413(config, "opll", 3.579545_MHz_XTAL)); + opll.add_route(ALL_OUTPUTS, "mono", 1.0); + + OKIM6295(config, "oki", XTAL(12'000'000) / 10, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // Clock frequency & pin 7 not verified + +} + +ROM_START( fruitctk ) // cpu type unknown + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "w27c512.bin", 0x0000, 0x10000, CRC(2A1B63C1) SHA1(631a95c684db961283f45b4bfe67fa58d79b2191) ) + + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "w27c02.bin", 0x00000, 0x40000, CRC(A8217121) SHA1(a35004f00632b552b587dfa12c1698abada5e300) ) // Voices Rom + + ROM_END + + + +} // anonymous namespace + + +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) From 9a796fad38df6f34fe8eebd083f05de23f7059fb Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 01:35:38 -0500 Subject: [PATCH 02/22] update notes fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index dfb146f0be4d2..5b74aa4db04f5 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -58,15 +58,15 @@ X2 M82C55A-2 new8279 Todo: - Led Controller Layout. Still Looping F1 During reset -if press to insert coin will cause bell ding and error 02 or error 30 +if press to insert coin will to error 02 or error 30 + debug: -pc = 424 - boot -pc = 231 +pc = 424 - bypass error 02 error. + */ #include "emu.h" @@ -314,7 +314,7 @@ void fruitctk_state::fruitctk(machine_config &config) } -ROM_START( fruitctk ) // cpu type unknown +ROM_START( fruitctk ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "w27c512.bin", 0x0000, 0x10000, CRC(2A1B63C1) SHA1(631a95c684db961283f45b4bfe67fa58d79b2191) ) @@ -331,3 +331,4 @@ ROM_START( fruitctk ) // cpu type unknown // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From c7dba74f4f1d94e44fd440f0a58835d2644f3516 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 01:47:33 -0500 Subject: [PATCH 03/22] spaced at 329 fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 5b74aa4db04f5..7b5dc26b5cdc7 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -325,10 +325,6 @@ ROM_START( fruitctk ) ROM_END - } // anonymous namespace - - -// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS -GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) - +// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS +GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) From ab7b34e87f9b5682eee6c997823c492ab5e122f6 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 19:08:43 -0500 Subject: [PATCH 04/22] Update mame.lst --- src/mame/mame.lst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 0b495ffbb652f..4c1c768011cdb 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -30891,6 +30891,9 @@ freewaya @source:misc/fresh.cpp fresh +@source:misc/fruitctk.cpp +fruitctk + @source:misc/funeball.cpp funeball From c40a44bb2587a8d5a91b0632fb79432763da051a Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 20:29:00 -0500 Subject: [PATCH 05/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 7b5dc26b5cdc7..c5b412e070514 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -33,8 +33,6 @@ counters in-out must be NC (0, LOW) coin acceptor NC 0 LOW hopper sensor NC 0 LOW - - Hardware info: (Wip) Board: @@ -61,7 +59,6 @@ new8279 Led Controller Layout. -Still Looping F1 During reset if press to insert coin will to error 02 or error 30 debug: @@ -171,10 +168,9 @@ static INPUT_PORTS_START( fruitctk ) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(hopper_device::line_r)) // will cause error 02 During reset - - PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("P1.6") - PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("P1.7") + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(hopper_device::line_r)) // is from hopper? will cause error 02 During reset nvram + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -206,17 +202,8 @@ INPUT_PORTS_END void fruitctk_state::p1_w(uint8_t data) { - m_hopper->motor_w(BIT(data, 3)); // ?? from guessed - machine().bookkeeping().coin_counter_w(7, data & 0x80); - machine().bookkeeping().coin_counter_w(6, data & 0x40); - machine().bookkeeping().coin_counter_w(5, data & 0x20); - machine().bookkeeping().coin_counter_w(4, data & 0x10); - machine().bookkeeping().coin_counter_w(3, data & 0x08); - machine().bookkeeping().coin_counter_w(2, data & 0x04); // unused? - machine().bookkeeping().coin_counter_w(1, data & 0x02); // unused? - machine().bookkeeping().coin_counter_w(0, data & 0x01); // unused? - - logerror("P1.0 Write to %02x\n", data); + m_hopper->motor_w(BIT(data, 3)); // ?? from guessed. Wrong + logerror("P1.0 Write to %02x\n", data); } @@ -244,7 +231,7 @@ uint8_t fruitctk_state::keyboard_r() void fruitctk_state::display_7seg_data_w(uint8_t data) { - static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // HEF4511BP (7 seg display driver) // Code was from marywu + static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // Code was from marywu to decode 7 segment display. m_digits[2 * m_selected_7seg_module + 0] = patterns[data & 0x0f]; m_digits[2 * m_selected_7seg_module + 1] = patterns[data >> 4]; @@ -264,7 +251,7 @@ map(0xb000, 0xb001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::wri map(0xb004, 0xb004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xb008, 0xb00a).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xb00b, 0xb00b).nopw(); // ?? -map(0xb00c, 0xb00c).nopw(); // Led Board +map(0xb00c, 0xb00c).nopw(); // Led map(0xb00d, 0xb00f).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? } @@ -328,3 +315,4 @@ ROM_START( fruitctk ) } // anonymous namespace // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From d3f76926bb600d986092f27ffb3091c5f47d87f6 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 23:57:28 -0500 Subject: [PATCH 06/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index c5b412e070514..bb4eb6a1f4fb9 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -249,8 +249,8 @@ map(0xc000, 0xc001).w("opll", FUNC(ym2413_device::write)); map(0x9002, 0x9003).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); map(0xb000, 0xb001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); map(0xb004, 0xb004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); -map(0xb008, 0xb00a).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); -map(0xb00b, 0xb00b).nopw(); // ?? +map(0xb008, 0xb00a).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? +map(0xb00b, 0xb00b).nopw(); // ?? Write = 80 map(0xb00c, 0xb00c).nopw(); // Led map(0xb00d, 0xb00f).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? } @@ -316,3 +316,4 @@ ROM_START( fruitctk ) // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From dfe167a548325b79aa42b8b640d76b801e5d0523 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 23:58:21 -0500 Subject: [PATCH 07/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index bb4eb6a1f4fb9..d21affd830219 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -250,8 +250,8 @@ map(0x9002, 0x9003).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::a map(0xb000, 0xb001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); map(0xb004, 0xb004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); map(0xb008, 0xb00a).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? -map(0xb00b, 0xb00b).nopw(); // ?? Write = 80 -map(0xb00c, 0xb00c).nopw(); // Led +// map(0xb00b, 0xb00b).nopw(); // ?? Write = 80 +// map(0xb00c, 0xb00c).nopw(); // Led map(0xb00d, 0xb00f).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? } @@ -317,3 +317,4 @@ ROM_START( fruitctk ) GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From 63de3d399bdb7335580f95e45a941eff41e4f130 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Thu, 2 Oct 2025 23:59:13 -0500 Subject: [PATCH 08/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index d21affd830219..c8912d46ce276 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -308,13 +308,9 @@ ROM_START( fruitctk ) ROM_REGION( 0x40000, "oki", 0 ) ROM_LOAD( "w27c02.bin", 0x00000, 0x40000, CRC(A8217121) SHA1(a35004f00632b552b587dfa12c1698abada5e300) ) // Voices Rom - ROM_END } // anonymous namespace // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) - - - From 5924979b54ff32b40022a2464887b5d30cd59a49 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:00:21 -0500 Subject: [PATCH 09/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index c8912d46ce276..4c70d5fa3fe13 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -278,7 +278,7 @@ void fruitctk_state::fruitctk(machine_config &config) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* Keyboard & display interface */ - i8279_device &kbdc(I8279(config, "i8279", XTAL(12'000'000) / 6)); + i8279_device &kbdc(I8279(config, "i8279", XTAL(12'000'000) / 6)); // divisor not verified kbdc.out_sl_callback().set(FUNC(fruitctk_state::multiplex_7seg_w)); // select block of 7seg modules by multiplexing the SL scan lines kbdc.in_rl_callback().set(FUNC(fruitctk_state::keyboard_r)); // keyboard Return Lines kbdc.out_disp_callback().set(FUNC(fruitctk_state::display_7seg_data_w)); @@ -289,7 +289,7 @@ void fruitctk_state::fruitctk(machine_config &config) /* sound hardware */ SPEAKER(config, "mono").front_center(); - ay8910_device &ay1(AY8910(config, "ay1", XTAL(12'000'000) / 6)); + ay8910_device &ay1(AY8910(config, "ay1", XTAL(12'000'000) / 6)); // divisor not verified ay1.add_route(ALL_OUTPUTS, "mono", 1.0); ay1.port_a_read_callback().set_ioport("DSW1"); ay1.port_b_read_callback().set_ioport("DSW2"); @@ -314,3 +314,4 @@ ROM_START( fruitctk ) } // anonymous namespace // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From a90279b3d37813246ad2b0c5658cfc883d65145e Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:01:27 -0500 Subject: [PATCH 10/22] despaced fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 4c70d5fa3fe13..ab98bfb90c48d 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -314,4 +314,3 @@ ROM_START( fruitctk ) } // anonymous namespace // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) - From b517585f5f6a896f2017a0dc8dab62cd715579b7 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:02:14 -0500 Subject: [PATCH 11/22] spaced to 317 fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index ab98bfb90c48d..3888fdf5d5e96 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -312,5 +312,8 @@ ROM_START( fruitctk ) } // anonymous namespace + + // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From ed97d79d902c05cdea0db55e248e869b073278f4 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:02:39 -0500 Subject: [PATCH 12/22] despaced to 318 fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 3888fdf5d5e96..519db0ba81133 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -316,4 +316,3 @@ ROM_START( fruitctk ) // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) - From f0626ad2d84be8dcc293748f8f868a768e36f1e4 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:03:08 -0500 Subject: [PATCH 13/22] Update fruitctk.cpp From 990e7cd30ddfcb53c738ec53584fa2aae2213a23 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:05:19 -0500 Subject: [PATCH 14/22] only has 4 dip switch at dsw2 fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 519db0ba81133..775f51d0907f3 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -190,10 +190,6 @@ PORT_START("DSW2") PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2") PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3") PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4") - PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5") - PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6") - PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7") - PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8") INPUT_PORTS_END From d0cc18fa9f96be243593ef32c9e2c9c576a7baaa Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 00:31:00 -0500 Subject: [PATCH 15/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 775f51d0907f3..31499671a7535 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -56,6 +56,7 @@ X2 M82C55A-2 new8279 Todo: +Dip switch Led Controller Layout. @@ -312,3 +313,4 @@ ROM_START( fruitctk ) // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From a36f64230d7bd793b147a58706743f427c115768 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 08:42:01 -0500 Subject: [PATCH 16/22] Update notes and some fruitctk.cpp originally some code are pasted from orientp where contains adpcm. --- src/mame/misc/fruitctk.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 31499671a7535..7e9d3e8d114cb 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -260,18 +260,15 @@ void fruitctk_state::machine_start() void fruitctk_state::fruitctk(machine_config &config) { - /* Video */ - config.set_default_layout(layout_marywu); - + /* basic machine hardware */ i8051_device &maincpu(I8051(config, "maincpu", XTAL(12'000'000))); maincpu.set_addrmap(AS_PROGRAM, &fruitctk_state::program_map); maincpu.set_addrmap(AS_IO, &fruitctk_state::io_map); maincpu.port_in_cb<1>().set_ioport("P1"); maincpu.port_out_cb<1>().set(FUNC(fruitctk_state::p1_w)); - + HOPPER(config, m_hopper, attotime::from_msec(10)); - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* Keyboard & display interface */ @@ -281,10 +278,13 @@ void fruitctk_state::fruitctk(machine_config &config) kbdc.out_disp_callback().set(FUNC(fruitctk_state::display_7seg_data_w)); I8255A(config, "ppi1"); - I8255A(config, "ppi2"); + + I8255A(config, "ppi2"); - - /* sound hardware */ + /* Video */ + config.set_default_layout(layout_marywu); + + /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay1(AY8910(config, "ay1", XTAL(12'000'000) / 6)); // divisor not verified ay1.add_route(ALL_OUTPUTS, "mono", 1.0); @@ -302,10 +302,9 @@ ROM_START( fruitctk ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "w27c512.bin", 0x0000, 0x10000, CRC(2A1B63C1) SHA1(631a95c684db961283f45b4bfe67fa58d79b2191) ) - ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "w27c02.bin", 0x00000, 0x40000, CRC(A8217121) SHA1(a35004f00632b552b587dfa12c1698abada5e300) ) // Voices Rom - ROM_END + ROM_LOAD( "w27c02.bin", 0x00000, 0x40000, CRC(A8217121) SHA1(a35004f00632b552b587dfa12c1698abada5e300) ) // only contains music +ROM_END } // anonymous namespace @@ -314,3 +313,4 @@ ROM_START( fruitctk ) // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From fd38c3132a30727934a5013b229246147d37af7b Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 08:58:07 -0500 Subject: [PATCH 17/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 52 +++++++++++++++----------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 7e9d3e8d114cb..2954750945ccb 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:flama12333 /************************************************************************* -Driver For fruit cocktail - Roulette gambling board +Driver For fruit cocktail - Roulette gambling board MC51 Based Notes: (Wip) K0+K1 = RESET @@ -78,8 +78,8 @@ pc = 424 - bypass error 02 error. #include "sound/okim6295.h" #include "sound/ymopl.h" #include "speaker.h" -#include "marywu.lh" +#include "marywu.lh" namespace { @@ -90,7 +90,7 @@ class fruitctk_state : public driver_device : driver_device(mconfig, type, tag) , m_digits(*this, "digit%u", 0U) , m_leds(*this, "led%u", 0U) - , m_inputs(*this, { "Inputs1", "Inputs2", "Inputs3", "Inputs4" }) + , m_inputs(*this, { "INPUTS1", "INPUTS2", "INPUTS3", "INPUTS4" }) , m_hopper(*this, "hopper") , m_oki(*this, "oki") @@ -107,9 +107,7 @@ class fruitctk_state : public driver_device void multiplex_7seg_w(uint8_t data); void io_map(address_map &map); void program_map(address_map &map); - - - uint8_t keyboard_r(); + uint8_t keyboard_r(); uint8_t m_selected_7seg_module = 0; output_finder<32> m_digits; output_finder<30> m_leds; @@ -119,10 +117,9 @@ class fruitctk_state : public driver_device }; - static INPUT_PORTS_START( fruitctk ) - PORT_START("Inputs1") + PORT_START("INPUTS1") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_Q) PORT_NAME("Bet 8") PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_W) PORT_NAME("Bet 7") PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_E) PORT_NAME("Bet 6") @@ -133,7 +130,7 @@ static INPUT_PORTS_START( fruitctk ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_I) PORT_NAME("Bet 1") - PORT_START("Inputs2") + PORT_START("INPUTS2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_CODE(KEYCODE_O) PORT_NAME("Start") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_CODE(KEYCODE_P) // D-UP Low? PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_CODE(KEYCODE_A) // D-UP High? @@ -143,7 +140,7 @@ static INPUT_PORTS_START( fruitctk ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_G) // Payout? PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CODE(KEYCODE_H)// Coin. will cause error 30 - PORT_START("Inputs3") + PORT_START("INPUTS3") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_J) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_K) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_L) @@ -153,7 +150,7 @@ static INPUT_PORTS_START( fruitctk ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_V) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CODE(KEYCODE_B) - PORT_START("Inputs4") + PORT_START("INPUTS4") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -173,9 +170,7 @@ static INPUT_PORTS_START( fruitctk ) PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - -PORT_START("DSW1") + PORT_START("DSW1") PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1") PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2") PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3") @@ -185,16 +180,13 @@ PORT_START("DSW1") PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7") PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8") - -PORT_START("DSW2") + PORT_START("DSW2") PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1") PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2") PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3") PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4") -INPUT_PORTS_END - - +INPUT_PORTS_END void fruitctk_state::p1_w(uint8_t data) { @@ -205,8 +197,6 @@ void fruitctk_state::p1_w(uint8_t data) } - - void fruitctk_state::multiplex_7seg_w(uint8_t data) { m_selected_7seg_module = data; @@ -241,15 +231,15 @@ void fruitctk_state::program_map(address_map &map) void fruitctk_state::io_map(address_map &map) { -map(0x8000, 0x87ff).ram().share("nvram"); -map(0xc000, 0xc001).w("opll", FUNC(ym2413_device::write)); -map(0x9002, 0x9003).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); -map(0xb000, 0xb001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); -map(0xb004, 0xb004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); -map(0xb008, 0xb00a).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? -// map(0xb00b, 0xb00b).nopw(); // ?? Write = 80 -// map(0xb00c, 0xb00c).nopw(); // Led -map(0xb00d, 0xb00f).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? + map(0x8000, 0x87ff).ram().share("nvram"); + map(0xc000, 0xc001).w("opll", FUNC(ym2413_device::write)); + map(0x9002, 0x9003).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::address_data_w)); + map(0xb000, 0xb001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); + map(0xb004, 0xb004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xb008, 0xb00a).rw("ppi1", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? + map(0xb00b, 0xb00b).unmapw(); // ?? Write = 80 + map(0xb00c, 0xb00c).unmapw(); // Led + map(0xb00d, 0xb00f).rw("ppi2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // ??? } void fruitctk_state::machine_start() @@ -312,5 +302,3 @@ ROM_END // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) - - From 7deface169ffc4232ab8c1d905fb9b17139532de Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:00:34 -0500 Subject: [PATCH 18/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 2954750945ccb..c2f773eecab83 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -129,7 +129,6 @@ static INPUT_PORTS_START( fruitctk ) PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_U) PORT_NAME("Bet 2") PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_CODE(KEYCODE_I) PORT_NAME("Bet 1") - PORT_START("INPUTS2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_CODE(KEYCODE_O) PORT_NAME("Start") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_CODE(KEYCODE_P) // D-UP Low? @@ -296,7 +295,6 @@ ROM_START( fruitctk ) ROM_LOAD( "w27c02.bin", 0x00000, 0x40000, CRC(A8217121) SHA1(a35004f00632b552b587dfa12c1698abada5e300) ) // only contains music ROM_END - } // anonymous namespace From 7aefb291aeb2e17248b919ff13c5507aa93d98a8 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:04:19 -0500 Subject: [PATCH 19/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index c2f773eecab83..6cc803f7ad73a 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -93,7 +93,6 @@ class fruitctk_state : public driver_device , m_inputs(*this, { "INPUTS1", "INPUTS2", "INPUTS3", "INPUTS4" }) , m_hopper(*this, "hopper") , m_oki(*this, "oki") - { } void fruitctk(machine_config &config); From 45ae9c5687c76fd6558d1513ae7da7e1b26d88b2 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:08:19 -0500 Subject: [PATCH 20/22] disable layout fruitctk.cpp was from marywu. --- src/mame/misc/fruitctk.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index 6cc803f7ad73a..a2c6c42007898 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -79,7 +79,7 @@ pc = 424 - bypass error 02 error. #include "sound/ymopl.h" #include "speaker.h" -#include "marywu.lh" +// #include "marywu.lh" namespace { @@ -270,7 +270,7 @@ void fruitctk_state::fruitctk(machine_config &config) I8255A(config, "ppi2"); /* Video */ - config.set_default_layout(layout_marywu); +// config.set_default_layout(layout_marywu); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -299,3 +299,4 @@ ROM_END // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From 044d624f921e866b99dbf9d36b2346b2052ebbc3 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Tue, 7 Oct 2025 18:26:33 -0500 Subject: [PATCH 21/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index a2c6c42007898..e60b390b9ae60 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -264,11 +264,11 @@ void fruitctk_state::fruitctk(machine_config &config) kbdc.out_sl_callback().set(FUNC(fruitctk_state::multiplex_7seg_w)); // select block of 7seg modules by multiplexing the SL scan lines kbdc.in_rl_callback().set(FUNC(fruitctk_state::keyboard_r)); // keyboard Return Lines kbdc.out_disp_callback().set(FUNC(fruitctk_state::display_7seg_data_w)); - + + /* Programmable Peripheral Interface */ I8255A(config, "ppi1"); - - I8255A(config, "ppi2"); - + I8255A(config, "ppi2"); + /* Video */ // config.set_default_layout(layout_marywu); @@ -300,3 +300,4 @@ ROM_END // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) + From 183a049178b79e6227d00003ca4ea7e1ffc9ecc3 Mon Sep 17 00:00:00 2001 From: flama12333 <143599905+flama12333@users.noreply.github.com> Date: Tue, 7 Oct 2025 18:29:48 -0500 Subject: [PATCH 22/22] Update fruitctk.cpp --- src/mame/misc/fruitctk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/misc/fruitctk.cpp b/src/mame/misc/fruitctk.cpp index e60b390b9ae60..eb89be40e2505 100644 --- a/src/mame/misc/fruitctk.cpp +++ b/src/mame/misc/fruitctk.cpp @@ -158,7 +158,6 @@ static INPUT_PORTS_START( fruitctk ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_NAME("K0") // K3 PORT_START("P1") - PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -301,3 +300,4 @@ ROM_END GAME( 2002?, fruitctk, 0, fruitctk, fruitctk, fruitctk_state, empty_init, ROT0, "", "Fruit Cocktail", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) +