diff options
29 files changed, 4376 insertions, 146 deletions
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua index 59dfd6dbdea..3dd4eef38ab 100644 --- a/scripts/src/machine.lua +++ b/scripts/src/machine.lua @@ -4282,6 +4282,18 @@ end --------------------------------------------------- -- +--@src/devices/machine/em_reel.h,MACHINES["EM_REEL"] = true +--------------------------------------------------- + +if (MACHINES["EM_REEL"]~=null) then + files { + MAME_DIR .. "src/devices/machine/em_reel.cpp", + MAME_DIR .. "src/devices/machine/em_reel.h", + } +end + +--------------------------------------------------- +-- --@src/devices/machine/corvushd.h,MACHINES["CORVUSHD"] = true --------------------------------------------------- if (MACHINES["CORVUSHD"]~=null) then diff --git a/src/devices/machine/em_reel.cpp b/src/devices/machine/em_reel.cpp new file mode 100644 index 00000000000..392c9331818 --- /dev/null +++ b/src/devices/machine/em_reel.cpp @@ -0,0 +1,125 @@ +// license:BSD-3-Clause +// copyright-holders:SomeRandomGuyIdk +/********************************************************************** + + Electromechanical reels for slot machines + +**********************************************************************/ + +#include "emu.h" +#include "em_reel.h" + +#include <algorithm> + + +ALLOW_SAVE_TYPE(em_reel_device::dir); +ALLOW_SAVE_TYPE(em_reel_device::reel_state); + +DEFINE_DEVICE_TYPE(EM_REEL, em_reel_device, "em_reel", "Electromechanical Reel") + +em_reel_device::em_reel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, EM_REEL, tag, owner, clock), + m_reel_out(*this, tag), + m_state_cb(*this) +{ +} + +void em_reel_device::set_state(uint8_t state) +{ + if(m_state == reel_state::STOPPED) + { + if(state) + { + m_state = reel_state::SPINNING; + m_move_timer->adjust(m_step_period); + m_state_cb(1); + } + } + else if(m_state == reel_state::SPINNING) + { + if(!state) + { + if(is_at_detent()) // If reel is already on a detent, then stop it immediately + { + m_move_timer->adjust(attotime::never); + m_state = reel_state::STOPPED; + m_state_cb(0); + } + else + { + m_state = reel_state::STOPPING; + } + } + } + else if(m_state == reel_state::STOPPING) + { + if(state) + m_state = reel_state::SPINNING; + } +} + +inline bool em_reel_device::is_at_detent() const +{ + auto const found = std::lower_bound(m_detents.begin(), m_detents.end(), m_pos); + return (m_detents.end() != found) && (*found == m_pos); +} + +TIMER_CALLBACK_MEMBER( em_reel_device::move ) +{ + if(m_direction == dir::REVERSE) + { + if(m_pos == 0) + m_pos = m_max_pos; + else + m_pos--; + } + else + { + if(m_pos == m_max_pos) + m_pos = 0; + else + m_pos++; + } + + if(m_state == reel_state::STOPPING && is_at_detent()) // Stop once a detent is reached + { + m_state = reel_state::STOPPED; + m_state_cb(0); + } + else + { + m_move_timer->adjust(m_step_period); + } + + m_reel_out = m_pos; +} + +void em_reel_device::device_start() +{ + m_reel_out.resolve(); + + save_item(NAME(m_state)); + save_item(NAME(m_pos)); + save_item(NAME(m_direction)); + + m_move_timer = timer_alloc(FUNC(em_reel_device::move), this); + + m_state = reel_state::STOPPED; + m_pos = 0; +} + +void em_reel_device::device_validity_check(validity_checker &valid) const +{ + auto detent = m_detents.begin(); + while(m_detents.end() != detent) + { + if(*detent > m_max_pos) + fatalerror("Detent on step %u is out of range, maximum is %u\n", *detent, m_max_pos); + + auto const next = std::next(detent); + if((m_detents.end() != next) && (*next <= *detent)) + fatalerror("Detents %u and %u are not in ascending order\n", *detent, *next); + + detent = next; + } +} diff --git a/src/devices/machine/em_reel.h b/src/devices/machine/em_reel.h new file mode 100644 index 00000000000..1a50fffcff1 --- /dev/null +++ b/src/devices/machine/em_reel.h @@ -0,0 +1,89 @@ +// license:BSD-3-Clause +// copyright-holders:SomeRandomGuyIdk +/********************************************************************** + + Electromechanical reels for slot machines + +**********************************************************************/ + +#ifndef MAME_MACHINE_EM_REEL_H +#define MAME_MACHINE_EM_REEL_H + +#pragma once + +#include <iterator> +#include <utility> +#include <vector> + + +class em_reel_device : public device_t +{ +public: + enum class dir : uint8_t + { + FORWARD = 0, // Steps count up + REVERSE // Steps count down + }; + + em_reel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); + + template <typename T> + em_reel_device( + const machine_config &mconfig, const char *tag, device_t *owner, + uint16_t steps, T &&detents, attotime period, dir direction = dir::REVERSE) : + em_reel_device(mconfig, tag, owner, 0) + { + set_max_pos(steps); + set_detents(std::forward<T>(detents)); + set_rotation_period(period); + set_direction(direction); + } + + // Movement state callback, used for playing samples + auto state_changed_callback() { return m_state_cb.bind(); } + + // Set period for one full rotation + void set_rotation_period(attotime period) { m_step_period = period / (m_max_pos + 1); } + + // Get the reel's current step position + uint16_t get_pos() const { return m_pos; } + // Start and stop the reel + void set_state(uint8_t state); + // Set the direction the reel moves in + void set_direction(dir direction) { m_direction = direction; } + +protected: + virtual void device_start() override; + virtual void device_validity_check(validity_checker &valid) const override; + +private: + enum class reel_state : uint8_t + { + STOPPED = 0, + SPINNING, + STOPPING + }; + + TIMER_CALLBACK_MEMBER(move); + + void set_max_pos(uint16_t steps) { m_max_pos = steps - 1; } + template <typename T> void set_detents(T &&detents) { m_detents.assign(std::begin(detents), std::end(detents)); } + + bool is_at_detent() const; + + std::vector<uint16_t> m_detents; + uint16_t m_max_pos; + attotime m_step_period; + + output_finder<> m_reel_out; + devcb_write_line m_state_cb; + + reel_state m_state; + uint16_t m_pos; + dir m_direction; + emu_timer *m_move_timer; +}; + +DECLARE_DEVICE_TYPE(EM_REEL, em_reel_device) + +#endif // MAME_MACHINE_EM_REEL_H diff --git a/src/mame/barcrest/mpu1.cpp b/src/mame/barcrest/mpu1.cpp index 30b6d021fa3..bdd098d72c3 100644 --- a/src/mame/barcrest/mpu1.cpp +++ b/src/mame/barcrest/mpu1.cpp @@ -26,6 +26,7 @@ #include "cpu/m6800/m6800.h" #include "machine/6821pia.h" +#include "machine/em_reel.h" #include "machine/timer.h" #include "sound/dac.h" @@ -47,11 +48,11 @@ public: mpu1_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_nmi_timer(*this, "nmi"), m_pia1(*this, "pia1"), m_pia2(*this, "pia2"), m_lamps(*this, "lamp%u", 0U), - m_reel_out(*this, "reel%u", 1U), - m_sreel_out(*this, "sreel%u", 1U), + m_reels(*this, "emreel%u", 1U), m_dac(*this, "dac"), m_samples(*this, "samples") { } @@ -66,49 +67,39 @@ protected: virtual void machine_reset() override; private: + enum { STEPS_PER_SYMBOL = 20 }; + template <unsigned Lamp> void pia_lamp_w(int state) { m_lamps[Lamp] = state; } + template <unsigned Reel> void reel_sample_cb(uint8_t state); + + TIMER_DEVICE_CALLBACK_MEMBER(nmi); + TIMER_CALLBACK_MEMBER(change_pia2a_bit7); void pia1_portb_w(uint8_t data); void pia1_portb_lg_w(uint8_t data); uint8_t pia2_porta_r(); void pia2_porta_w(uint8_t data); void pia2_portb_w(uint8_t data); + uint8_t reel_pos_r(uint8_t reel); void payout_cash_w(bool state); void payout_token_w(bool state); void meter_w(int meter, bool state); void coin_lockout_w(bool state); - void reel_w(int reel, bool state); void mpu1_map(address_map &map); uint8_t m_reel_select; bool m_pia2a_select; bool m_prev_payout[2]; - uint8_t m_reel_state[4]; - uint16_t m_reel_pos[4]; - emu_timer *m_reel_timer[4]; - attotime m_reel_speed; uint8_t m_pia2a_bit7_value; emu_timer *m_change_pia2a_bit7_timer; - TIMER_DEVICE_CALLBACK_MEMBER(nmi); - template <unsigned Reel> TIMER_CALLBACK_MEMBER(reel_move); - TIMER_CALLBACK_MEMBER(change_pia2a_bit7); - - enum - { - REEL_STOPPED = 0, - REEL_SPINNING, - REEL_STOPPING - }; - - // devices required_device<cpu_device> m_maincpu; + required_device<timer_device> m_nmi_timer; required_device<pia6821_device> m_pia1; required_device<pia6821_device> m_pia2; output_finder<13> m_lamps; - output_finder<4> m_reel_out; - output_finder<4> m_sreel_out; + required_device_array<em_reel_device, 4> m_reels; required_device<dac_1bit_device> m_dac; required_device<fruit_samples_device> m_samples; }; @@ -127,10 +118,10 @@ void mpu1_state::pia1_portb_w(uint8_t data) { if(BIT(data, 7) == 0) { - reel_w(0, BIT(data, 0)); - reel_w(1, BIT(data, 1)); - reel_w(2, BIT(data, 2)); - reel_w(3, BIT(data, 3)); + m_reels[0]->set_state(BIT(data, 0)); + m_reels[1]->set_state(BIT(data, 1)); + m_reels[2]->set_state(BIT(data, 2)); + m_reels[3]->set_state(BIT(data, 3)); coin_lockout_w(BIT(data, 4)); m_lamps[11] = BIT(data, 5); meter_w(0, BIT(data, 6)); @@ -158,10 +149,10 @@ void mpu1_state::pia1_portb_lg_w(uint8_t data) if(BIT(data, 7) == 0) { - reel_w(0, BIT(data, 0)); - reel_w(1, BIT(data, 1)); - reel_w(2, BIT(data, 2)); - reel_w(3, BIT(data, 3)); + m_reels[0]->set_state(BIT(data, 0)); + m_reels[1]->set_state(BIT(data, 1)); + m_reels[2]->set_state(BIT(data, 2)); + m_reels[3]->set_state(BIT(data, 3)); coin_lockout_w(BIT(data, 4)); // Manual says bit 5 might be "Reel Motor", reels work fine without this m_lamps[11] = BIT(data, 6); @@ -182,11 +173,7 @@ uint8_t mpu1_state::pia2_porta_r() { if(m_pia2a_select == 0) { - uint16_t pos = m_reel_pos[m_reel_select]; - if(pos % 20 == 0) - return (pos / 20) + 1; - else - return 0; + return reel_pos_r(m_reel_select); } else { @@ -206,6 +193,16 @@ void mpu1_state::pia2_portb_w(uint8_t data) for(int i = 0; i < 8; i++) m_lamps[i] = BIT(data, i); } +uint8_t mpu1_state::reel_pos_r(uint8_t reel) +{ + uint16_t pos = m_reels[reel]->get_pos(); + + if(pos % STEPS_PER_SYMBOL == 0) + return (pos / STEPS_PER_SYMBOL) + 1; + else + return 0; +} + void mpu1_state::payout_cash_w(bool state) { if(!m_prev_payout[0] && state) m_samples->play(fruit_samples_device::SAMPLE_PAYOUT); @@ -253,58 +250,13 @@ TIMER_CALLBACK_MEMBER( mpu1_state::change_pia2a_bit7 ) m_pia2a_bit7_value = 0; } -/* MPU1 does not have stepper reels, it instead uses an electromechanical reel system. - Each reel has a single output - setting the output high causes the reel to start moving, - and once it's set back low, the reel will stop at whichever symbol it's heading towards. - Position tracking is done via contacts on index plates below each symbol, which the CPU - will read once all reels are stopped. - - I've modeled the reels as having 400 virtual "steps". Every reel has 20 symbols, which - gives 20 "steps" between each symbol. */ -void mpu1_state::reel_w(int reel, bool state) -{ - if(m_reel_state[reel] == REEL_STOPPED) - { - if(state) - { - m_reel_state[reel] = REEL_SPINNING; - m_reel_timer[reel]->adjust(m_reel_speed); - m_samples->play(fruit_samples_device::SAMPLE_EM_REEL_1_START + reel); - } - } - else if(m_reel_state[reel] == REEL_SPINNING) - { - if(!state) - { - if(m_reel_pos[reel] % 20 == 0) // If reel is already on a symbol, then stop it immediately - { - m_reel_timer[reel]->adjust(attotime::never); - m_reel_state[reel] = REEL_STOPPED; - m_samples->play(fruit_samples_device::SAMPLE_EM_REEL_1_STOP + reel); - } - else m_reel_state[reel] = REEL_STOPPING; - } - } -} - template <unsigned Reel> -TIMER_CALLBACK_MEMBER( mpu1_state::reel_move ) +void mpu1_state::reel_sample_cb(uint8_t state) { - if(m_reel_pos[Reel] == 0) - m_reel_pos[Reel] = 400 - 1; - else - m_reel_pos[Reel]--; - - if(m_reel_state[Reel] == REEL_STOPPING && m_reel_pos[Reel] % 20 == 0) // Stop once a symbol is reached - { - m_reel_timer[Reel]->adjust(attotime::never); - m_reel_state[Reel] = REEL_STOPPED; + if(state == 0) m_samples->play(fruit_samples_device::SAMPLE_EM_REEL_1_STOP + Reel); - } - else m_reel_timer[Reel]->adjust(m_reel_speed); - - m_reel_out[Reel] = m_reel_pos[Reel]; - m_sreel_out[Reel] = (m_reel_pos[Reel] * 0x10000) / 400; + else if(state == 1) + m_samples->play(fruit_samples_device::SAMPLE_EM_REEL_1_START + Reel); } static INPUT_PORTS_START( mpu1_inputs ) @@ -377,24 +329,8 @@ INPUT_PORTS_END void mpu1_state::machine_start() { m_lamps.resolve(); - m_reel_out.resolve(); - m_sreel_out.resolve(); - - save_item(NAME(m_reel_state)); - save_item(NAME(m_reel_pos)); - save_item(NAME(m_reel_speed)); - m_reel_timer[0] = timer_alloc(FUNC(mpu1_state::reel_move<0>), this); - m_reel_timer[1] = timer_alloc(FUNC(mpu1_state::reel_move<1>), this); - m_reel_timer[2] = timer_alloc(FUNC(mpu1_state::reel_move<2>), this); - m_reel_timer[3] = timer_alloc(FUNC(mpu1_state::reel_move<3>), this); m_change_pia2a_bit7_timer = timer_alloc(FUNC(mpu1_state::change_pia2a_bit7), this); - - for(int i = 0; i < 4; i++) - { - m_reel_state[i] = REEL_STOPPED; - m_reel_pos[i] = 0; - } } void mpu1_state::machine_reset() @@ -411,7 +347,8 @@ void mpu1_state::mpu1(machine_config &config) I've set a stable 1 MHz clock here, which is also the case on MPU2. */ m_maincpu->set_addrmap(AS_PROGRAM, &mpu1_state::mpu1_map); - TIMER(config, "nmi").configure_periodic(FUNC(mpu1_state::nmi), attotime::from_hz(100)); // From AC zero crossing detector + TIMER(config, m_nmi_timer).configure_periodic(FUNC(mpu1_state::nmi), attotime::from_hz(100)); // From AC zero crossing detector + m_nmi_timer->set_start_delay(attotime::from_msec(1)); // Don't go to NMI at reset time PIA6821(config, m_pia1, 0); m_pia1->readpa_handler().set_ioport("IN"); @@ -435,12 +372,23 @@ void mpu1_state::mpu1(machine_config &config) m_pia2->cb1_w(0); m_pia2->cb2_handler().set(FUNC(mpu1_state::pia_lamp_w<10>)); - m_reel_speed = attotime::from_usec(2000); // Seems close enough to footage of a real machine + for(int i = 0; i < 4; i++) + { + std::set<uint16_t> detents; + for(int i = 0; i < 20; i++) + detents.insert(i * STEPS_PER_SYMBOL); + + EM_REEL(config, m_reels[i], 20 * STEPS_PER_SYMBOL, detents, attotime::from_double(0.8)); + } SPEAKER(config, "mono").front_center(); DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "mono", 0.25); FRUIT_SAMPLES(config, m_samples); + m_reels[0]->state_changed_callback().set(FUNC(mpu1_state::reel_sample_cb<0>)); + m_reels[1]->state_changed_callback().set(FUNC(mpu1_state::reel_sample_cb<1>)); + m_reels[2]->state_changed_callback().set(FUNC(mpu1_state::reel_sample_cb<2>)); + m_reels[3]->state_changed_callback().set(FUNC(mpu1_state::reel_sample_cb<3>)); } void mpu1_state::mpu1_lg(machine_config &config) @@ -449,7 +397,8 @@ void mpu1_state::mpu1_lg(machine_config &config) m_pia1->writepb_handler().set(FUNC(mpu1_state::pia1_portb_lg_w)); - m_reel_speed = attotime::from_usec(2600); // Slower reels + for(int i = 0; i < 4; i++) + m_reels[i]->set_rotation_period(attotime::from_double(1.04)); // Slower reels } // Common mask ROM on most cartridges, also used by MPU2 diff --git a/src/mame/bfm/bfm_blackbox.cpp b/src/mame/bfm/bfm_blackbox.cpp new file mode 100644 index 00000000000..5e59d9cfcfa --- /dev/null +++ b/src/mame/bfm/bfm_blackbox.cpp @@ -0,0 +1,1917 @@ +// license:BSD-3-Clause +// copyright-holders:SomeRandomGuyIdk +/********************************************************************** + + Bellfruit Black Box (1979) + + Bellfruit's first CPU-based fruit machine platform. The CPU + is a MC6802, with a PIA and extension bus for I/O. Games are + stored on ROM cards up to 8K in size, the CPU board also has a + socket for a 64 nibble NVRAM board. The base system consists + of the CPU board and output board, extension boards provide + more functionality such as reel drive, sound and displays. + The exact set of boards used differs for each game. There were + 3 distinct types of reel systems used. Early games had plain + electromechanical reels, which were quickly upgraded to a EM + reel system using opto sensors for positioning, presumably + to prevent cheating. The first games with stepper reels were + introduced in late 1981. Later versions of the CPU board have + an ACIA used for communicating with the LPE DRS 35 datalogger + system, which was introduced in 1982. + + TODO: + - Add stepper games + - ACIA datalogger, currently no games use it + - Layouts + - Sound could be more accurate with more circuit information + +**********************************************************************/ + +#include "emu.h" + +#include "fruitsamples.h" + +#include "cpu/m6800/m6800.h" +#include "cpu/tms1000/tms1000.h" + +#include "machine/6821pia.h" +#include "machine/6850acia.h" +#include "machine/em_reel.h" +#include "machine/nvram.h" +#include "machine/timer.h" +#include "sound/beep.h" +#include "sound/spkrdev.h" + +#include "speaker.h" + +namespace { + +#include "bfm_blackbox.lh" +#include "bb_21up.lh" +#include "bb_bellt.lh" +#include "bb_cjack.lh" +#include "bb_dblit.lh" +#include "bb_fiest.lh" +#include "bb_firec.lh" +#include "bb_gspin.lh" +#include "bb_nudcl.lh" +#include "bb_nudgm.lh" +#include "bb_oal.lh" +#include "bb_spinu.lh" +#include "bb_upndn.lh" + +class blackbox_base_state : public driver_device +{ +public: + int in_perc_r(); + int chute_r() { return m_50p_chute; } + DECLARE_INPUT_CHANGED_MEMBER(chute_inserted); + +protected: + blackbox_base_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_nmi_timer(*this, "nmi"), + m_irq_timer(*this, "irq"), + m_chute_timer(*this, "chute_timer"), + m_pia(*this, "pia"), + m_acia(*this, "acia"), + m_in_1800(*this, "IN1800"), + m_in_1800_en(*this, "IN1800_%u", 1U), + m_in_2000(*this, "IN2000"), + m_in_perc(*this, "PERCENTAGE"), + m_lamps(*this, "lamp%u", 0U), + m_digits(*this, "digit%u", 0U), + m_test_led(*this, "test%u", 1U), + m_samples(*this, "samples"), + m_nvram(*this, "nvram", 0x40, ENDIANNESS_BIG) + { } + + void blackbox_base(machine_config &config); + + virtual void machine_start() override; + + TIMER_DEVICE_CALLBACK_MEMBER(nmi) { m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); } + TIMER_DEVICE_CALLBACK_MEMBER(irq) { m_maincpu->pulse_input_line(M6800_IRQ_LINE, attotime::from_usec(2500)); } + TIMER_DEVICE_CALLBACK_MEMBER(toggle_50p_chute); + + void pia_porta_w(uint8_t data); + uint8_t pia_portb_r(); + void pia_portb_w(uint8_t data); + uint8_t in_1800_r(offs_t offset); + uint8_t in_2000_r(offs_t offset); + void out_triacs1_w(address_space &space, uint8_t data); + void out_meters_w(address_space &space, uint8_t data); + template <unsigned Offset> void out_lamps_w(address_space &space, uint8_t data); + void out_misc_w(address_space &space, uint8_t data); + template <unsigned Digit> void out_disp_w(address_space &space, uint8_t data); + uint8_t out_triacs1_r(address_space &space); + uint8_t out_meters_r(address_space &space); + template <unsigned Offset> uint8_t out_lamps_r(address_space &space); + uint8_t out_misc_r(address_space &space); + template <unsigned Digit> uint8_t out_disp_r(address_space &space); + void payout_w(uint8_t payout, uint8_t enable, bool state); + + void blackbox_base_map(address_map &map); + + uint8_t m_out_data; + uint8_t m_input_en[6]; + bool m_payouts[2][2]; + bool m_payout_state[2]; + bool m_50p_chute; + uint8_t m_nvram_data; + + required_device<cpu_device> m_maincpu; + required_device<timer_device> m_nmi_timer; + required_device<timer_device> m_irq_timer; + required_device<timer_device> m_chute_timer; + required_device<pia6821_device> m_pia; + required_device<acia6850_device> m_acia; + required_ioport m_in_1800; + required_ioport_array<6> m_in_1800_en; + required_ioport m_in_2000; + required_ioport m_in_perc; + output_finder<52> m_lamps; + output_finder<4> m_digits; + output_finder<2> m_test_led; + required_device<fruit_samples_device> m_samples; + + memory_share_creator<uint8_t> m_nvram; +}; + +class blackbox_em_base_state : public blackbox_base_state +{ +protected: + blackbox_em_base_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_base_state(mconfig, type, tag), + m_reels(*this, "emreel%u", 1U) + { } + + enum { STEPS_PER_SYMBOL = 20 }; + + void add_em_reels(machine_config &config, int symbols, attotime period); + template <unsigned Reel> void reel_sample_cb(int state); + + void out_triacs2_w(address_space &space, uint8_t data); + uint8_t out_triacs2_r(address_space &space); + + required_device_array<em_reel_device, 4> m_reels; +}; + +class blackbox_em_state : public blackbox_em_base_state +{ +public: + blackbox_em_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_base_state(mconfig, type, tag), + m_in_extra(*this, "EXTRA") + { } + + void blackbox_em(machine_config &config); + void blackbox_em_bellt(machine_config &config); + + int in_extra_r(); + +protected: + uint8_t in_2000_r(offs_t offset); + uint8_t reel_pos_r(uint8_t reel); + void out_lamps2_buzzer_w(address_space &space, uint8_t data); + void out_bellt_in_select_w(address_space &space, uint8_t data); + uint8_t out_lamps2_buzzer_r(address_space &space); + uint8_t out_bellt_in_select_r(address_space &space); + + void blackbox_em_map(address_map &map); + void blackbox_em_bellt_map(address_map &map); + + bool m_buzzer_on; + bool m_in_extra_select[8]; + + optional_ioport m_in_extra; +}; + +class blackbox_em_21up_state : public blackbox_em_state +{ +public: + blackbox_em_21up_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_state(mconfig, type, tag), + m_beep_sample(*this, "beep_sample") + { } + + void blackbox_em_21up(machine_config &config); + + void init_21up(); + +private: + void out_lamps1_beeper_w(address_space &space, uint8_t data); + uint8_t out_lamps1_beeper_r(address_space &space); + + void blackbox_em_21up_map(address_map &map); + + bool m_beeper_on; + int16_t m_beep_sample_data[477]; + + required_device<samples_device> m_beep_sample; +}; + +class blackbox_em_admc_state : public blackbox_em_state +{ +public: + blackbox_em_admc_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_state(mconfig, type, tag) + { } + + void blackbox_em_admc(machine_config &config); + +private: + void out_triacs2_w(address_space &space, uint8_t data); + void out_lamps_480_w(address_space &space, uint8_t data); + void out_sound_l_w(address_space &space, uint8_t data); + void out_sound_h_w(address_space &space, uint8_t data); + void out_prot_clock_w(address_space &space, uint8_t data) { m_prot_index++; } + uint8_t out_triacs2_r(address_space &space); + uint8_t out_lamps_480_r(address_space &space); + uint8_t out_sound_l_r(address_space &space); + uint8_t out_sound_h_r(address_space &space); + uint8_t out_prot_clock_r(address_space &space); + uint8_t prot_r(); + void prot_reset_w(uint8_t data) { m_prot_index = 0; } + + void blackbox_em_admc_map(address_map &map); + + uint8_t m_prot_index; + uint8_t m_sound_value; +}; + +class blackbox_em_opto_state : public blackbox_em_base_state +{ +public: + blackbox_em_opto_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_base_state(mconfig, type, tag) + { } + + template <unsigned Reel> int symbol_opto_r(); + template <unsigned Reel> int reel_opto_r(); + +protected: + void out_meters_w(address_space &space, uint8_t data); + uint8_t out_meters_r(address_space &space); + + void blackbox_em_opto_map(address_map &map); +}; + +class blackbox_em_opto_sndgen_state : public blackbox_em_opto_state +{ +public: + blackbox_em_opto_sndgen_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_opto_state(mconfig, type, tag), + m_beep(*this, "beep") + { } + + void blackbox_em_opto_sndgen(machine_config &config); + +private: + void out_tone_w(address_space &space, uint8_t data); + void out_mute_w(address_space &space, uint8_t data); + uint8_t out_tone_r(address_space &space); + uint8_t out_mute_r(address_space &space); + + void blackbox_em_opto_sndgen_map(address_map &map); + + required_device<beep_device> m_beep; +}; + +class blackbox_em_opto_aux_state : public blackbox_em_opto_state +{ +public: + blackbox_em_opto_aux_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_opto_state(mconfig, type, tag), + m_beep(*this, "beep") + { } + + void blackbox_em_opto_aux_base(machine_config &config); + void blackbox_em_opto_aux(machine_config &config); + +protected: + void out_tone_w(address_space &space, uint8_t data); + uint8_t out_tone_r(address_space &space); + + void blackbox_em_opto_aux_map(address_map &map); + + required_device<beep_device> m_beep; +}; + +class blackbox_em_opto_music_state : public blackbox_em_opto_state +{ +public: + blackbox_em_opto_music_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_opto_state(mconfig, type, tag), + m_tms1000(*this, "tms1000"), + m_tempo_timer(*this, "tempo"), + m_speaker(*this, "speaker") + { } + + void blackbox_em_opto_music(machine_config &config); + +private: + void out_music_480_w(address_space &space, uint8_t data); + void out_music_500_w(address_space &space, uint8_t data); + uint8_t out_music_480_r(address_space &space); + uint8_t out_music_500_r(address_space &space); + uint8_t tms1000_k_r(); + void tms1000_r_w(uint32_t data); + void tms1000_o_w(uint16_t data); + + void blackbox_em_opto_music_map(address_map &map); + + uint8_t m_k_cols; + uint8_t m_r_bits; + uint8_t m_r_select; + uint8_t m_tempo; + uint32_t m_prev_r; + + required_device<tms1k_base_device> m_tms1000; + required_device<timer_device> m_tempo_timer; + required_device<speaker_sound_device> m_speaker; +}; + +class blackbox_em_opto_club_state : public blackbox_em_opto_aux_state +{ +public: + blackbox_em_opto_club_state(const machine_config &mconfig, device_type type, const char *tag) : + blackbox_em_opto_aux_state(mconfig, type, tag) + { } + + void blackbox_em_opto_club(machine_config &config); + +private: + virtual void machine_start() override; + + void out_triacs1_w(address_space &space, uint8_t data); + void out_triacs2_w(address_space &space, uint8_t data); + void out_meters_w(address_space &space, uint8_t data); + uint8_t out_triacs1_r(address_space &space); + uint8_t out_triacs2_r(address_space &space); + uint8_t out_meters_r(address_space &space); + void update_payout(uint8_t payout); + + void blackbox_em_opto_club_map(address_map &map); + + bool m_payout_en[2]; +}; + +void blackbox_base_state::blackbox_base_map(address_map &map) +{ + map.global_mask(0x7fff); + map(0x0800, 0x0801).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)); + map(0x1000, 0x1003).rw(m_pia, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x1800, 0x1807).r(FUNC(blackbox_base_state::in_1800_r)).nopw(); + map(0x2000, 0x2007).r(FUNC(blackbox_base_state::in_2000_r)).nopw(); + map(0x2800, 0x2fff).rw(FUNC(blackbox_base_state::out_triacs1_r), FUNC(blackbox_base_state::out_triacs1_w)); + map(0x3800, 0x3fff).rw(FUNC(blackbox_base_state::out_meters_r), FUNC(blackbox_base_state::out_meters_w)); + map(0x4000, 0x47ff).rw(FUNC(blackbox_base_state::out_lamps_r<0>), FUNC(blackbox_base_state::out_lamps_w<0>)); + map(0x4800, 0x50ff).rw(FUNC(blackbox_base_state::out_lamps_r<8>), FUNC(blackbox_base_state::out_lamps_w<8>)); + map(0x5000, 0x57ff).rw(FUNC(blackbox_base_state::out_misc_r), FUNC(blackbox_base_state::out_misc_w)); + map(0x6000, 0x7fff).rom(); +} + +void blackbox_em_state::blackbox_em_map(address_map &map) +{ + blackbox_base_map(map); + + map(0x2000, 0x2007).r(FUNC(blackbox_em_state::in_2000_r)); + map(0x3000, 0x37ff).rw(FUNC(blackbox_em_state::out_triacs2_r), FUNC(blackbox_em_state::out_triacs2_w)); + map(0x4800, 0x4fff).rw(FUNC(blackbox_em_state::out_lamps2_buzzer_r), FUNC(blackbox_em_state::out_lamps2_buzzer_w)); +} + +void blackbox_em_state::blackbox_em_bellt_map(address_map &map) +{ + blackbox_em_map(map); + + map(0x0480, 0x04ff).rw(FUNC(blackbox_em_state::out_bellt_in_select_r), FUNC(blackbox_em_state::out_bellt_in_select_w)); + map(0x0500, 0x057f).rw(FUNC(blackbox_em_state::out_lamps_r<34>), FUNC(blackbox_em_state::out_lamps_w<34>)); + map(0x0580, 0x05ff).rw(FUNC(blackbox_em_state::out_lamps_r<26>), FUNC(blackbox_em_state::out_lamps_w<26>)); + map(0x0600, 0x067f).rw(FUNC(blackbox_em_state::out_lamps_r<18>), FUNC(blackbox_em_state::out_lamps_w<18>)); +} + +void blackbox_em_21up_state::blackbox_em_21up_map(address_map &map) +{ + blackbox_em_map(map); + + map(0x0580, 0x05ff).rw(FUNC(blackbox_em_21up_state::out_disp_r<0>), FUNC(blackbox_em_21up_state::out_disp_w<0>)); + map(0x0600, 0x067f).rw(FUNC(blackbox_em_21up_state::out_disp_r<1>), FUNC(blackbox_em_21up_state::out_disp_w<1>)); + map(0x4000, 0x47ff).rw(FUNC(blackbox_em_21up_state::out_lamps1_beeper_r), FUNC(blackbox_em_21up_state::out_lamps1_beeper_w)); +} + +void blackbox_em_admc_state::blackbox_em_admc_map(address_map &map) +{ + blackbox_em_map(map); + + map(0x0200, 0x027f).rw(FUNC(blackbox_em_admc_state::out_prot_clock_r), FUNC(blackbox_em_admc_state::out_prot_clock_w)); + map(0x0380, 0x03ff).rw(FUNC(blackbox_em_admc_state::out_sound_l_r), FUNC(blackbox_em_admc_state::out_sound_l_w)); + map(0x0400, 0x047f).rw(FUNC(blackbox_em_admc_state::out_sound_h_r), FUNC(blackbox_em_admc_state::out_sound_h_w)); + map(0x0480, 0x04ff).rw(FUNC(blackbox_em_admc_state::out_lamps_480_r), FUNC(blackbox_em_admc_state::out_lamps_480_w)); + map(0x0500, 0x057f).rw(FUNC(blackbox_em_admc_state::out_lamps_r<34>), FUNC(blackbox_em_admc_state::out_lamps_w<34>)); + map(0x0580, 0x05ff).rw(FUNC(blackbox_em_admc_state::out_lamps_r<26>), FUNC(blackbox_em_admc_state::out_lamps_w<26>)); + map(0x0600, 0x067f).rw(FUNC(blackbox_em_admc_state::out_lamps_r<18>), FUNC(blackbox_em_admc_state::out_lamps_w<18>)); + map(0x3000, 0x37ff).rw(FUNC(blackbox_em_admc_state::out_triacs2_r), FUNC(blackbox_em_admc_state::out_triacs2_w)); + map(0x6400, 0x6400).r(FUNC(blackbox_em_admc_state::prot_r)); + map(0x6800, 0x6800).w(FUNC(blackbox_em_admc_state::prot_reset_w)); +} + +void blackbox_em_opto_state::blackbox_em_opto_map(address_map &map) +{ + blackbox_base_map(map); + + map(0x0580, 0x05ff).rw(FUNC(blackbox_em_opto_state::out_disp_r<0>), FUNC(blackbox_em_opto_state::out_disp_w<0>)); + map(0x0600, 0x067f).rw(FUNC(blackbox_em_opto_state::out_disp_r<1>), FUNC(blackbox_em_opto_state::out_disp_w<1>)); + map(0x3000, 0x37ff).rw(FUNC(blackbox_em_opto_state::out_triacs2_r), FUNC(blackbox_em_opto_state::out_triacs2_w)); + map(0x3800, 0x3fff).rw(FUNC(blackbox_em_opto_state::out_meters_r), FUNC(blackbox_em_opto_state::out_meters_w)); +} + +void blackbox_em_opto_sndgen_state::blackbox_em_opto_sndgen_map(address_map &map) +{ + blackbox_em_opto_map(map); + + map(0x0480, 0x04ff).rw(FUNC(blackbox_em_opto_sndgen_state::out_tone_r), FUNC(blackbox_em_opto_sndgen_state::out_tone_w)); + map(0x0500, 0x057f).rw(FUNC(blackbox_em_opto_sndgen_state::out_mute_r), FUNC(blackbox_em_opto_sndgen_state::out_mute_w)); +} + +void blackbox_em_opto_aux_state::blackbox_em_opto_aux_map(address_map &map) +{ + blackbox_em_opto_map(map); + + map(0x0400, 0x047f).rw(FUNC(blackbox_em_opto_aux_state::out_lamps_r<26>), FUNC(blackbox_em_opto_aux_state::out_lamps_w<26>)); // MFME lamps 40-47 + map(0x0480, 0x04ff).rw(FUNC(blackbox_em_opto_aux_state::out_lamps_r<18>), FUNC(blackbox_em_opto_aux_state::out_lamps_w<18>)); // MFME lamps 32-39 + map(0x0500, 0x057f).rw(FUNC(blackbox_em_opto_aux_state::out_tone_r), FUNC(blackbox_em_opto_aux_state::out_tone_w)); +} + +void blackbox_em_opto_music_state::blackbox_em_opto_music_map(address_map &map) +{ + blackbox_em_opto_map(map); + + map(0x0400, 0x047f).rw(FUNC(blackbox_em_opto_music_state::out_lamps_r<18>), FUNC(blackbox_em_opto_music_state::out_lamps_w<18>)); + map(0x0480, 0x04ff).rw(FUNC(blackbox_em_opto_music_state::out_music_480_r), FUNC(blackbox_em_opto_music_state::out_music_480_w)); + map(0x0500, 0x057f).rw(FUNC(blackbox_em_opto_music_state::out_music_500_r), FUNC(blackbox_em_opto_music_state::out_music_500_w)); +} + +void blackbox_em_opto_club_state::blackbox_em_opto_club_map(address_map &map) +{ + blackbox_em_opto_map(map); + + map(0x0200, 0x027f).rw(FUNC(blackbox_em_opto_club_state::out_lamps_r<42>), FUNC(blackbox_em_opto_club_state::out_lamps_w<42>)); + map(0x0280, 0x03ff).rw(FUNC(blackbox_em_opto_club_state::out_lamps_r<26>), FUNC(blackbox_em_opto_club_state::out_lamps_w<26>)); + map(0x0300, 0x037f).rw(FUNC(blackbox_em_opto_club_state::out_lamps_r<18>), FUNC(blackbox_em_opto_club_state::out_lamps_w<18>)); + map(0x0380, 0x03ff).rw(FUNC(blackbox_em_opto_club_state::out_tone_r), FUNC(blackbox_em_opto_club_state::out_tone_w)); + map(0x0400, 0x047f).rw(FUNC(blackbox_em_opto_club_state::out_lamps_r<34>), FUNC(blackbox_em_opto_club_state::out_lamps_w<34>)); + map(0x0480, 0x04ff).rw(FUNC(blackbox_em_opto_club_state::out_disp_r<0>), FUNC(blackbox_em_opto_club_state::out_disp_w<0>)); + map(0x0500, 0x057f).rw(FUNC(blackbox_em_opto_club_state::out_disp_r<1>), FUNC(blackbox_em_opto_club_state::out_disp_w<1>)); + map(0x0580, 0x05ff).rw(FUNC(blackbox_em_opto_club_state::out_disp_r<2>), FUNC(blackbox_em_opto_club_state::out_disp_w<2>)); + map(0x0600, 0x067f).rw(FUNC(blackbox_em_opto_club_state::out_disp_r<3>), FUNC(blackbox_em_opto_club_state::out_disp_w<3>)); + map(0x2800, 0x2fff).rw(FUNC(blackbox_em_opto_club_state::out_triacs1_r), FUNC(blackbox_em_opto_club_state::out_triacs1_w)); + map(0x3000, 0x37ff).rw(FUNC(blackbox_em_opto_club_state::out_triacs2_r), FUNC(blackbox_em_opto_club_state::out_triacs2_w)); + map(0x3800, 0x3fff).rw(FUNC(blackbox_em_opto_club_state::out_meters_r), FUNC(blackbox_em_opto_club_state::out_meters_w)); +} + +void blackbox_base_state::pia_porta_w(uint8_t data) +{ + uint8_t nvram_addr = data & 0x1f; + if(data & 0x40) + { + if(data & 0x80) + m_nvram_data = m_nvram[nvram_addr]; + else + m_nvram[nvram_addr] = m_nvram_data; + } +} + +uint8_t blackbox_base_state::pia_portb_r() +{ + return m_nvram_data; +} + +void blackbox_base_state::pia_portb_w(uint8_t data) +{ + m_out_data = (data & 0xf0) >> 4; + m_nvram_data = data & 0xf; +} + +uint8_t blackbox_base_state::in_1800_r(offs_t offset) +{ + if(BIT(m_in_1800->read(), offset)) return 0x80; + + for(int i = 0; i < 6; i++) + if(m_input_en[i] && BIT(m_in_1800_en[i]->read(), offset)) return 0x80; + + return 0; +} + +uint8_t blackbox_base_state::in_2000_r(offs_t offset) +{ + return BIT(m_in_2000->read(), offset) ? 0x80 : 0; +} + +uint8_t blackbox_em_state::in_2000_r(offs_t offset) +{ + if(offset < 5) // First 5 bits return reel position bits if any of them are enabled + { + for(int i = 0; i < 4; i++) + if(m_input_en[i] && BIT(reel_pos_r(i), offset)) return 0x80; + } + + return BIT(m_in_2000->read(), offset) ? 0x80 : 0; +} + +int blackbox_base_state::in_perc_r() +{ + /* 0x2007 is used for the percentage adjustment switch and it's + a bit weird. On older games it's a simple on-off switch, + but some later games have 3 possible positions, and use two + of the input select bits to read it. */ + uint8_t perc_sw = m_in_perc->read(); + if(perc_sw == 0 && m_input_en[3]) return 1; // Low + if(perc_sw == 1 && m_input_en[5]) return 1; // High + // Medium is implied when the others are off + + // Check if switch is set high on 2-position games + if(perc_sw == 1 && !m_input_en[3] && !m_input_en[5]) return 1; + + return 0; +} + +int blackbox_em_state::in_extra_r() +{ + for(int i = 0; i < 8; i++) + if(m_in_extra_select[i] && BIT(m_in_extra->read(), i)) return 1; + + return 0; +} + +uint8_t blackbox_em_state::reel_pos_r(uint8_t reel) +{ + uint16_t pos = m_reels[reel]->get_pos(); + + if(pos % STEPS_PER_SYMBOL == 0) + return (pos / STEPS_PER_SYMBOL) + 1; + else + return 0; +} + +template <unsigned Reel> +int blackbox_em_opto_state::symbol_opto_r() +{ + uint8_t const sym_pos = m_reels[Reel]->get_pos() % STEPS_PER_SYMBOL; + + return (sym_pos >= 12 && sym_pos <= 15); // Symbol tab is on every symbol +} + +template <unsigned Reel> +int blackbox_em_opto_state::reel_opto_r() +{ + uint16_t const pos = m_reels[Reel]->get_pos(); + + return (pos >= 10 && pos <= 13); // Reel tab is only on the first symbol +} + +INPUT_CHANGED_MEMBER( blackbox_base_state::chute_inserted ) +{ + if(newval) m_chute_timer->adjust(attotime::from_msec(100)); +} + +TIMER_DEVICE_CALLBACK_MEMBER( blackbox_base_state::toggle_50p_chute ) +{ + m_50p_chute = !m_50p_chute; + if(m_50p_chute) m_chute_timer->adjust(attotime::from_msec(50)); // Keep switch high for this long +} + +void blackbox_base_state::payout_w(uint8_t payout, uint8_t enable, bool state) +{ + /* Each payout has 2 enable lines, once both are on the payout fires + Payouts: 0=10p cash, 1=2x10p token (might be different on some rebuilds) */ + m_payouts[payout][enable] = state; + + if(m_payouts[payout][0] && m_payouts[payout][1] && !m_payout_state[payout]) + { + m_payout_state[payout] = true; + m_samples->play(fruit_samples_device::SAMPLE_PAYOUT); + } + else + { + m_payout_state[payout] = false; + } +} + +void blackbox_em_opto_club_state::update_payout(uint8_t payout) +{ + /* Payouts: 0=10p cash, 1=£2.50 token */ + if(m_payout_en[payout] && (m_payouts[payout][0] || m_payouts[payout][1]) && !m_payout_state[payout]) + { + m_payout_state[payout] = true; + m_samples->play(fruit_samples_device::SAMPLE_PAYOUT); + } + else + { + m_payout_state[payout] = false; + } +} + +void blackbox_base_state::out_triacs1_w(address_space &space, uint8_t data) +{ + uint8_t bit = (m_out_data & 0xe) >> 1; + bool state = m_out_data & 0x1; + + switch(bit) + { + case 0: + payout_w(0, 0, state); + break; + case 1: + payout_w(1, 0, state); + break; + case 4: + machine().bookkeeping().coin_lockout_w(0, !state); + machine().bookkeeping().coin_lockout_w(1, !state); + machine().bookkeeping().coin_lockout_w(2, !state); + break; + case 5: + machine().bookkeeping().coin_lockout_w(3, !state); // 50p lockout + break; + case 6: + payout_w(0, 1, state); + break; + case 7: + payout_w(1, 1, state); + break; + } +} + +uint8_t blackbox_base_state::out_triacs1_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_triacs1_w(space, 0); + return space.unmap(); +} + +void blackbox_em_opto_club_state::out_triacs1_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + switch(bit) + { + /* Club machines have a different payout arrangement using 10p coins and + £2.50 tokens, each of them having two payouts gated by a common enable line */ + case 0: m_payouts[0][0] = state; update_payout(0); break; + case 1: m_payouts[1][0] = state; update_payout(1); break; + case 2: m_payouts[0][1] = state; update_payout(0); break; + case 3: m_payouts[1][1] = state; update_payout(1); break; + case 4: m_payout_en[0] = state; update_payout(0); break; // 10p + case 5: m_payout_en[1] = state; update_payout(1); break; // £2.50 token + case 6: machine().bookkeeping().coin_lockout_w(0, !state); break; // 10p lockout + case 7: machine().bookkeeping().coin_lockout_w(3, !state); break; // 50p lockout + } +} + +uint8_t blackbox_em_opto_club_state::out_triacs1_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_triacs1_w(space, 0); + return space.unmap(); +} + +void blackbox_em_base_state::out_triacs2_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + switch(bit) + { + case 0: + case 1: + case 2: + case 3: + m_reels[bit]->set_state(state); + break; + case 6: + case 7: + m_lamps[16 + (bit - 6)] = state; // MFME lamps 30-31 + break; + } +} + +uint8_t blackbox_em_base_state::out_triacs2_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_triacs2_w(space, 0); + return space.unmap(); +} + +void blackbox_em_admc_state::out_triacs2_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + switch(bit) + { + case 0: + case 1: + case 2: + case 3: + m_reels[bit]->set_state(state); + break; + case 4: + if(state) + { + for(int i = 0; i < 4; i++) + m_reels[i]->set_direction(em_reel_device::dir::REVERSE); + } + break; + case 5: + if(state) + { + for(int i = 0; i < 4; i++) + m_reels[i]->set_direction(em_reel_device::dir::FORWARD); + } + break; + case 6: + case 7: + m_lamps[16 + (bit - 6)] = state; // MFME lamps 30-31 + break; + } +} + +uint8_t blackbox_em_admc_state::out_triacs2_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_triacs2_w(space, 0); + return space.unmap(); +} + +void blackbox_em_opto_club_state::out_triacs2_w(address_space &space, uint8_t data) +{ + uint8_t bit = (m_out_data & 0xe) >> 1; + bool state = m_out_data & 0x1; + + switch(bit) + { + case 0: + case 1: + case 2: + case 3: + m_reels[bit]->set_state(state); + break; + case 4: + machine().bookkeeping().coin_lockout_w(1, !state); // 20p lockout + break; + case 6: + case 7: + m_lamps[50 + (bit - 6)] = state; + break; + } +} + +uint8_t blackbox_em_opto_club_state::out_triacs2_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_triacs2_w(space, 0); + return space.unmap(); +} + +void blackbox_base_state::out_meters_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + if(bit < 7) machine().bookkeeping().coin_counter_w(bit, state); + // Black Box doesn't have audible meters +} + +uint8_t blackbox_base_state::out_meters_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_meters_w(space, 0); + return space.unmap(); +} + +void blackbox_em_opto_state::out_meters_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + if(bit < 7) + { + machine().bookkeeping().coin_counter_w(bit, state); + } + else + { + for(int i = 0; i < 4; i++) + m_reels[i]->set_direction(state ? em_reel_device::dir::FORWARD : em_reel_device::dir::REVERSE); + } +} + +uint8_t blackbox_em_opto_state::out_meters_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_meters_w(space, 0); + return space.unmap(); +} + +void blackbox_em_opto_club_state::out_meters_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + if(bit < 6) + machine().bookkeeping().coin_counter_w(bit, state); + else + m_lamps[16 + (bit - 6)] = state; +} + +uint8_t blackbox_em_opto_club_state::out_meters_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_meters_w(space, 0); + return space.unmap(); +} + +template<unsigned Offset> +void blackbox_base_state::out_lamps_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + m_lamps[Offset + bit] = m_out_data & 0x1; +} + +template<unsigned Offset> +uint8_t blackbox_base_state::out_lamps_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_lamps_w<Offset>(space, 0); + return space.unmap(); +} + +void blackbox_em_21up_state::out_lamps1_beeper_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + /* Bit 6 controls a beeper, which generates a 3500 Hz sine wave amplitude + modulated at 50 Hz. The beeper circuit is unknown, so I'm using a sample + to generate the beep for now. */ + if(bit == 6) + { + if(state && !m_beeper_on) + m_beep_sample->start_raw(0, m_beep_sample_data, 477, 48000, true); + else if(!state) + m_beep_sample->stop(0); + + m_beeper_on = state; + } + else + { + m_lamps[bit] = state; + } +} + +uint8_t blackbox_em_21up_state::out_lamps1_beeper_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_lamps1_beeper_w(space, 0); + return space.unmap(); +} + +void blackbox_em_state::out_lamps2_buzzer_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + if(bit == 5) + { + if(state && !m_buzzer_on) + m_samples->play(fruit_samples_device::SAMPLE_BUZZER); + + m_buzzer_on = state; + } + else + { + m_lamps[8 + bit] = state; + } +} + +uint8_t blackbox_em_state::out_lamps2_buzzer_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_lamps2_buzzer_w(space, 0); + return space.unmap(); +} + +void blackbox_em_admc_state::out_lamps_480_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + bool const state = m_out_data & 0x1; + + switch(bit) + { + case 0: + case 1: + m_in_extra_select[bit] = state; + break; + default: + m_lamps[42 + bit] = state; + break; + } +} + +uint8_t blackbox_em_admc_state::out_lamps_480_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_lamps_480_w(space, 0); + return space.unmap(); +} + +void blackbox_base_state::out_misc_w(address_space &space, uint8_t data) +{ + uint8_t bit = (m_out_data & 0xe) >> 1; + bool state = m_out_data & 0x1; + + switch(bit) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + m_input_en[bit] = state; + break; + case 6: + m_test_led[1] = state; + break; + case 7: + m_test_led[0] = state; + break; + } +} + +uint8_t blackbox_base_state::out_misc_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_misc_w(space, 0); + return space.unmap(); +} + +template<unsigned Digit> +void blackbox_base_state::out_disp_w(address_space &space, uint8_t data) +{ + static constexpr uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; + m_digits[Digit] = patterns[m_out_data]; +} + +template<unsigned Digit> +uint8_t blackbox_base_state::out_disp_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_disp_w<Digit>(space, 0); + return space.unmap(); +} + +void blackbox_em_state::out_bellt_in_select_w(address_space &space, uint8_t data) +{ + uint8_t const bit = (m_out_data & 0xe) >> 1; + m_in_extra_select[bit] = m_out_data & 0x1; +} + +uint8_t blackbox_em_state::out_bellt_in_select_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_bellt_in_select_w(space, 0); + return space.unmap(); +} + +/* The Sound Generator board uses a 555 timer-based circuit to generate + a tone with 8 selectable frequencies. The circuit is unknown, so it is + currently HLE'd. On later games the circuit was integrated onto the + Auxiliary Board with a slightly different interface. */ +void blackbox_em_opto_sndgen_state::out_tone_w(address_space &space, uint8_t data) +{ + // Ideal frequencies, a real board will be out of tune + constexpr uint32_t freqs[8] = { 523, 784, 932, 1245, 1568, 1976, 2794, 3729 }; + + m_beep->set_clock(freqs[m_out_data & 0x7]); +} + +uint8_t blackbox_em_opto_sndgen_state::out_tone_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_tone_w(space, 0); + return space.unmap(); +} + +void blackbox_em_opto_sndgen_state::out_mute_w(address_space &space, uint8_t data) +{ + m_beep->set_state(~m_out_data & 0x1); +} + +uint8_t blackbox_em_opto_sndgen_state::out_mute_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_mute_w(space, 0); + return space.unmap(); +} + +void blackbox_em_opto_aux_state::out_tone_w(address_space &space, uint8_t data) +{ + if(m_out_data & 0x8) + { + // Ideal frequencies, a real board will be out of tune + constexpr uint32_t freqs[8] = { 523, 784, 932, 1245, 1568, 1976, 2794, 3729 }; + m_beep->set_clock(freqs[m_out_data & 0x7]); + m_beep->set_state(1); + } + else + { + m_beep->set_state(0); + } +} + +uint8_t blackbox_em_opto_aux_state::out_tone_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_tone_w(space, 0); + return space.unmap(); +} + +/* Oranges And Lemons music board utiliizing a TMS1000 with the MP0027A + program, which is a doorbell chip (see cchime in hh_tms1k.cpp) */ +void blackbox_em_opto_music_state::out_music_480_w(address_space &space, uint8_t data) +{ + m_k_cols = m_out_data & 0x7; + m_tempo = BIT(m_out_data, 3); +} + +uint8_t blackbox_em_opto_music_state::out_music_480_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_music_480_w(space, 0); + return space.unmap(); +} + +void blackbox_em_opto_music_state::out_music_500_w(address_space &space, uint8_t data) +{ + m_r_select = 1 << (m_out_data & 0x7); +} + +uint8_t blackbox_em_opto_music_state::out_music_500_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_music_500_w(space, 0); + return space.unmap(); +} + +uint8_t blackbox_em_opto_music_state::tms1000_k_r() +{ + uint8_t result = 0; + + if(m_r_bits & m_r_select) result |= m_k_cols; + return result | (m_tempo_timer->enabled() ? 0x8 : 0); +} + +void blackbox_em_opto_music_state::tms1000_r_w(uint32_t data) +{ + m_r_bits = data & 0xff; // R0-7 + + if(~data & 0x200 & m_prev_r) // R9 + { + // Tempo could be adjustable, there is an unknown trim pot on the board + m_tempo_timer->adjust(m_tempo ? attotime::from_hz(920.32 / 32) : attotime::from_hz(920.32)); + } + + m_prev_r = data; +} + +void blackbox_em_opto_music_state::tms1000_o_w(uint16_t data) +{ + m_speaker->level_w(BIT(~data, 6) & BIT(~data, 7)); +} + +/* ADMC unknown sound board, interface for this is one 8-bit value + which presumably controls the frequency of a single tone. There are + no recordings or any other info for this sound board, so emulation + is currently not possible. */ +void blackbox_em_admc_state::out_sound_l_w(address_space &space, uint8_t data) +{ + m_sound_value = (m_sound_value & ~0xf) | m_out_data; + //if(m_sound_value != 0xff) logerror("ADMC sound write %x\n", m_sound_value); +} + +uint8_t blackbox_em_admc_state::out_sound_l_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_sound_l_w(space, 0); + return space.unmap(); +} + +void blackbox_em_admc_state::out_sound_h_w(address_space &space, uint8_t data) +{ + m_sound_value = (m_sound_value & ~0xf0) | (m_out_data << 4); +} + +uint8_t blackbox_em_admc_state::out_sound_h_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_sound_h_w(space, 0); + return space.unmap(); +} + +uint8_t blackbox_em_admc_state::out_prot_clock_r(address_space &space) +{ + if(!machine().side_effects_disabled()) + out_prot_clock_w(space, 0); + return space.unmap(); +} + +/* bb_nudgm & presumably other ADMC games have protection: a byte is read from the + protection device after every spin and compared against a fixed value (0x54 in this case). + The game ignores any wins if the protection check fails. Before doing the check the game + writes 0xC6 to 6800, whether it affects the returned value is not known. */ +uint8_t blackbox_em_admc_state::prot_r() +{ + uint8_t value = 0; + + constexpr uint8_t prot_values[8] = { 0, 0, 0x80, 0, 0x80, 0, 0x80, 0 }; // 0x54 in reverse + if(m_prot_index < 8) value = prot_values[m_prot_index]; + return value; +} + +template <unsigned Reel> +void blackbox_em_base_state::reel_sample_cb(int state) +{ + if(state == 0) + m_samples->play(fruit_samples_device::SAMPLE_EM_REEL_1_STOP + Reel); + else if(state == 1) + m_samples->play(fruit_samples_device::SAMPLE_EM_REEL_1_START + Reel); +} + +static INPUT_PORTS_START( blackbox_inputs ) + PORT_START("IN1800") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN1800_1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN1800_2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN1800_3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN1800_4") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN1800_5") + PORT_DIPNAME( 0x01, 0x00, "Test Switch 2" ) + PORT_DIPSETTING( 0x00, "Run" ) + PORT_DIPSETTING( 0x01, "Test" ) + PORT_DIPNAME( 0x02, 0x00, "Test Switch 1" ) + PORT_DIPSETTING( 0x00, "Run" ) + PORT_DIPSETTING( 0x02, "Test" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN1800_6") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_START("IN2000") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_base_state, in_perc_r) + + PORT_START("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x02, "Percentage adjustment" ) + PORT_DIPSETTING( 0x00, "Low" ) + PORT_DIPSETTING( 0x01, "High" ) + PORT_DIPSETTING( 0x02, "Medium" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( blackbox_inputs_em_opto ) + PORT_INCLUDE( blackbox_inputs ) + + PORT_MODIFY("IN1800_3") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<0>) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<0>) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<1>) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<1>) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<2>) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<2>) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<3>) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<3>) +INPUT_PORTS_END + +static INPUT_PORTS_START( blackbox_inputs_em_opto_alt ) + PORT_INCLUDE( blackbox_inputs ) + + PORT_MODIFY("IN1800") // Some games expect to see the opto inputs without setting any enable bits + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<0>) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<0>) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<1>) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<1>) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<2>) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<2>) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, reel_opto_r<3>) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_opto_state, symbol_opto_r<3>) +INPUT_PORTS_END + +static INPUT_PORTS_START( coin_5p_10p_10pt_50p ) + PORT_MODIFY("IN2000") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_NAME("50p") PORT_IMPULSE(1) + PORT_CHANGED_MEMBER(DEVICE_SELF, blackbox_base_state, chute_inserted, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("10p") PORT_IMPULSE(1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_NAME("10p Token") PORT_IMPULSE(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("5p") PORT_IMPULSE(1) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_base_state, chute_r) + PORT_CONFNAME( 0x20, 0x20, "Coin tube" ) + PORT_CONFSETTING( 0x00, "Empty" ) + PORT_CONFSETTING( 0x20, "Full" ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Refill Key") PORT_TOGGLE +INPUT_PORTS_END + +static INPUT_PORTS_START( coin_10p_10pt_50p ) + PORT_MODIFY("IN2000") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_NAME("50p") PORT_IMPULSE(1) + PORT_CHANGED_MEMBER(DEVICE_SELF, blackbox_base_state, chute_inserted, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("10p") PORT_IMPULSE(1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("10p Token") PORT_IMPULSE(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_base_state, chute_r) + PORT_CONFNAME( 0x20, 0x20, "Coin tube" ) + PORT_CONFSETTING( 0x00, "Empty" ) + PORT_CONFSETTING( 0x20, "Full" ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Refill Key") PORT_TOGGLE +INPUT_PORTS_END + +static INPUT_PORTS_START( coin_5p_10p_50p ) + PORT_MODIFY("IN2000") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_NAME("50p") PORT_IMPULSE(1) + PORT_CHANGED_MEMBER(DEVICE_SELF, blackbox_base_state, chute_inserted, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("10p") PORT_IMPULSE(1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("5p") PORT_IMPULSE(1) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_base_state, chute_r) + PORT_CONFNAME( 0x20, 0x20, "Coin tube" ) + PORT_CONFSETTING( 0x00, "Empty" ) + PORT_CONFSETTING( 0x20, "Full" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( coin_10p_2p_50p ) + PORT_MODIFY("IN2000") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_NAME("50p") PORT_IMPULSE(1) + PORT_CHANGED_MEMBER(DEVICE_SELF, blackbox_base_state, chute_inserted, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("10p") PORT_IMPULSE(1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("2p") PORT_IMPULSE(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_base_state, chute_r) + PORT_CONFNAME( 0x20, 0x20, "Coin tube" ) + PORT_CONFSETTING( 0x00, "Empty" ) + PORT_CONFSETTING( 0x20, "Full" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( coin_20p_10p_10pt_50p ) + PORT_MODIFY("IN2000") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_NAME("50p") PORT_IMPULSE(1) + PORT_CHANGED_MEMBER(DEVICE_SELF, blackbox_base_state, chute_inserted, 0) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("10p") PORT_IMPULSE(1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) PORT_NAME("10p Token") PORT_IMPULSE(1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("20p") PORT_IMPULSE(1) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_base_state, chute_r) + PORT_CONFNAME( 0x20, 0x20, "Coin tube" ) + PORT_CONFSETTING( 0x00, "Empty" ) + PORT_CONFSETTING( 0x20, "Full" ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Refill Key") PORT_TOGGLE +INPUT_PORTS_END + +static INPUT_PORTS_START( coin_10p_50p_20p_club ) + PORT_MODIFY("IN2000") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("10p") PORT_IMPULSE(1) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN4 ) PORT_NAME("50p") PORT_IMPULSE(1) + PORT_CHANGED_MEMBER(DEVICE_SELF, blackbox_base_state, chute_inserted, 0) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Refill Key") PORT_TOGGLE + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("20p") PORT_IMPULSE(1) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_nudcl ) + PORT_INCLUDE( blackbox_inputs ) + PORT_INCLUDE( coin_5p_10p_50p ) + + PORT_MODIFY("IN1800") + PORT_DIPNAME( 0x01, 0x00, "Test Switch 2" ) // Alternate test switches + PORT_DIPSETTING( 0x00, "Run" ) + PORT_DIPSETTING( 0x01, "Test" ) + PORT_DIPNAME( 0x02, 0x00, "Test Switch 1" ) + PORT_DIPSETTING( 0x00, "Run" ) + PORT_DIPSETTING( 0x02, "Test" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Respin") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + + PORT_MODIFY("IN1800_5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold chance" ) + PORT_DIPSETTING( 0x00, "Low (21.9%)" ) + PORT_DIPSETTING( 0x01, "High (25%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_21up ) + PORT_INCLUDE( blackbox_inputs ) + PORT_INCLUDE( coin_5p_10p_10pt_50p ) + + PORT_MODIFY("IN1800") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gamble") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Stick") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Twist") + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold chance" ) + PORT_DIPSETTING( 0x00, "Low (25%)" ) + PORT_DIPSETTING( 0x01, "High (31.25%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_21up2 ) + PORT_INCLUDE( bb_21up ) + PORT_INCLUDE( coin_10p_10pt_50p ) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold chance" ) + PORT_DIPSETTING( 0x00, "Low (31.25%)" ) + PORT_DIPSETTING( 0x01, "High (34.37%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_bellt ) + PORT_INCLUDE( blackbox_inputs ) + PORT_INCLUDE( coin_5p_10p_10pt_50p ) + + PORT_MODIFY("IN1800") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) + + PORT_MODIFY("IN1800_6") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_state, in_extra_r) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold chance" ) + PORT_DIPSETTING( 0x00, "Low (21.9%)" ) + PORT_DIPSETTING( 0x01, "High (28.1%)" ) + + PORT_START("EXTRA") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Nudge Up 1") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Nudge Up 2") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Nudge Up 3") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Nudge Up 4") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Nudge Down 1") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Nudge Down 2") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Nudge Down 3") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Nudge Down 4") +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_nudgm ) + PORT_INCLUDE( blackbox_inputs ) + PORT_INCLUDE( coin_20p_10p_10pt_50p ) + + PORT_MODIFY("IN1800") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_NAME("Start Up/Gamble") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start Down/Collect") + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(blackbox_em_state, in_extra_r) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Jackpot amount" ) + PORT_DIPSETTING( 0x00, u8"£1" ) + PORT_DIPSETTING( 0x01, u8"£2" ) + + PORT_START("EXTRA") + PORT_DIPNAME( 0x03, 0x00, "Percentage adjustment" ) + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x01, "2" ) + PORT_DIPSETTING( 0x02, "3" ) + PORT_DIPSETTING( 0x03, "4" ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_upndn ) + PORT_INCLUDE( blackbox_inputs_em_opto_alt ) + PORT_INCLUDE( coin_5p_10p_10pt_50p ) + + PORT_MODIFY("IN1800_1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Respin") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) + + PORT_MODIFY("IN1800_2") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Nudge Up 1") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Nudge Up 2") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Nudge Up 3") + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Nudge chance" ) + PORT_DIPSETTING( 0x00, "Low (4.69%)" ) + PORT_DIPSETTING( 0x01, "High (7.81%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_reelg ) + PORT_INCLUDE( bb_upndn ) + PORT_INCLUDE( coin_10p_10pt_50p ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_upndna ) + PORT_INCLUDE( bb_upndn ) + PORT_INCLUDE( coin_5p_10p_50p ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_dblit ) + PORT_INCLUDE( blackbox_inputs_em_opto_alt ) + PORT_INCLUDE( coin_10p_10pt_50p ) + + PORT_MODIFY("IN1800_1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gamble") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect") + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold/wild chance" ) + PORT_DIPSETTING( 0x00, "Low (34.37%/12.5%)" ) + PORT_DIPSETTING( 0x01, "High (37.5%/14.1%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_spinu ) + PORT_INCLUDE( bb_dblit ) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold/wild chance" ) + PORT_DIPSETTING( 0x00, "Low (31.25%/12.5%)" ) + PORT_DIPSETTING( 0x01, "High (37.5%/14.1%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_firec ) + PORT_INCLUDE( blackbox_inputs_em_opto ) + PORT_INCLUDE( coin_10p_10pt_50p ) + + PORT_MODIFY("IN1800_1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gamble") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect") + + PORT_MODIFY("IN1800_2") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Nudge Up") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Nudge Down") + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold/nudge chance" ) + PORT_DIPSETTING( 0x00, "Low (26.6%/6.25%)" ) + PORT_DIPSETTING( 0x01, "High (39.1%/10.9%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_cjack ) + PORT_INCLUDE( bb_firec ) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold/nudge chance" ) + PORT_DIPSETTING( 0x00, "Low (21.9%/6.25%)" ) + PORT_DIPSETTING( 0x01, "High (26.6%/6.25%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_fiest ) + PORT_INCLUDE( bb_firec ) + PORT_INCLUDE( coin_10p_2p_50p ) + + PORT_MODIFY("IN2000") + PORT_DIPNAME( 0x08, 0x08, "Jackpot amount" ) + PORT_DIPSETTING( 0x00, u8"£2" ) + PORT_DIPSETTING( 0x08, u8"£1" ) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Hold/nudge chance" ) + PORT_DIPSETTING( 0x00, "Low (21.9%/6.25%)" ) + PORT_DIPSETTING( 0x01, "High (26.6%/6.25%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_oal ) + PORT_INCLUDE( blackbox_inputs_em_opto ) + PORT_INCLUDE( coin_10p_10pt_50p ) + + PORT_MODIFY("IN1800_1") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gamble") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT ) PORT_NAME("Collect") + + PORT_MODIFY("IN1800_2") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Nudge Up 1") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Nudge Up 2") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Nudge Up 3") + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x02, "Hold/nudge chance" ) + PORT_DIPSETTING( 0x00, "Low (31.2%/6.25%)" ) + PORT_DIPSETTING( 0x01, "High (31.2%/7.8%)" ) + PORT_DIPSETTING( 0x02, "Medium (15.6%/7.8%)" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bb_gspin ) + PORT_INCLUDE( blackbox_inputs_em_opto ) + PORT_INCLUDE( coin_10p_50p_20p_club ) + + PORT_MODIFY("IN1800_2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Gamble") + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_TAKE ) PORT_NAME("Collect") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_GAMBLE_HALF ) PORT_NAME("Gamble Half") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 ) + + PORT_MODIFY("IN2000") + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_CANCEL ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_INTERLOCK ) PORT_NAME("Back Door") PORT_TOGGLE + + PORT_MODIFY("IN1800_4") + PORT_DIPNAME( 0x01, 0x00, "Test Switch 2" ) // Alternate test switches + PORT_DIPSETTING( 0x00, "Run" ) + PORT_DIPSETTING( 0x01, "Test" ) + PORT_DIPNAME( 0x02, 0x00, "Test Switch 1" ) + PORT_DIPSETTING( 0x00, "Run" ) + PORT_DIPSETTING( 0x02, "Test" ) + PORT_MODIFY("IN1800_5") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) + + PORT_MODIFY("PERCENTAGE") + PORT_DIPNAME( 0x03, 0x01, "Percentage" ) + PORT_DIPSETTING( 0x00, "75%" ) + PORT_DIPSETTING( 0x01, "80%" ) +INPUT_PORTS_END + +void blackbox_base_state::machine_start() +{ + m_lamps.resolve(); + m_digits.resolve(); + m_test_led.resolve(); + + save_item(NAME(m_input_en)); + + std::fill(std::begin(m_input_en), std::end(m_input_en), false); + m_50p_chute = false; + + // bb_upndn & bb_reelg won't properly read nudge down buttons on the first go if RAM starts out as 0's?? + for(int i = 0; i < 0x80; i++) + m_maincpu->space(AS_PROGRAM).write_byte(i, 0xff); +} + +void blackbox_em_opto_club_state::machine_start() +{ + blackbox_base_state::machine_start(); + + m_payout_en[0] = false; + m_payout_en[1] = false; +} + +void blackbox_base_state::blackbox_base(machine_config &config) +{ + M6802(config, m_maincpu, 4_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_base_state::blackbox_base_map); + + TIMER(config, m_nmi_timer).configure_periodic(FUNC(blackbox_base_state::nmi), attotime::from_hz(100)); // From AC zero crossing detector + TIMER(config, m_irq_timer).configure_periodic(FUNC(blackbox_base_state::irq), attotime::from_msec(80)); // 555 timer circuit + m_nmi_timer->set_start_delay(attotime::from_msec(1)); // Don't take interrupts at reset time + m_irq_timer->set_start_delay(attotime::from_msec(1)); + TIMER(config, m_chute_timer).configure_generic(FUNC(blackbox_base_state::toggle_50p_chute)); + + PIA6821(config, m_pia, 0); + m_pia->writepa_handler().set(FUNC(blackbox_base_state::pia_porta_w)); + m_pia->readpb_handler().set(FUNC(blackbox_base_state::pia_portb_r)); + m_pia->writepb_handler().set(FUNC(blackbox_base_state::pia_portb_w)); + m_pia->cb2_handler().set_nop(); // Not connected + + ACIA6850(config, m_acia, 0); + + FRUIT_SAMPLES(config, m_samples); +} + +void blackbox_em_base_state::add_em_reels(machine_config &config, int symbols, attotime period) +{ + for(int i = 0; i < 4; i++) + { + std::set<uint16_t> detents; + for(int i = 0; i < symbols; i++) + detents.insert(i * STEPS_PER_SYMBOL); + + EM_REEL(config, m_reels[i], symbols * STEPS_PER_SYMBOL, detents, period); + } + + m_reels[0]->state_changed_callback().set(FUNC(blackbox_em_base_state::reel_sample_cb<0>)); + m_reels[1]->state_changed_callback().set(FUNC(blackbox_em_base_state::reel_sample_cb<1>)); + m_reels[2]->state_changed_callback().set(FUNC(blackbox_em_base_state::reel_sample_cb<2>)); + m_reels[3]->state_changed_callback().set(FUNC(blackbox_em_base_state::reel_sample_cb<3>)); +} + +void blackbox_em_state::blackbox_em(machine_config &config) +{ + blackbox_base(config); + add_em_reels(config, 20, attotime::from_double(1.1)); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_state::blackbox_em_map); +} + +void blackbox_em_state::blackbox_em_bellt(machine_config &config) +{ + blackbox_em(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_state::blackbox_em_bellt_map); +} + +void blackbox_em_admc_state::blackbox_em_admc(machine_config &config) +{ + blackbox_em(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_admc_state::blackbox_em_admc_map); +} + +void blackbox_em_21up_state::blackbox_em_21up(machine_config &config) +{ + blackbox_em(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_21up_state::blackbox_em_21up_map); + + SPEAKER(config, "mono").front_center(); + + SAMPLES(config, m_beep_sample); + m_beep_sample->set_channels(1); + m_beep_sample->add_route(ALL_OUTPUTS, "mono", 0.5); +} + +void blackbox_em_opto_sndgen_state::blackbox_em_opto_sndgen(machine_config &config) +{ + blackbox_base(config); + add_em_reels(config, 20, attotime::from_double(1.1)); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_opto_sndgen_state::blackbox_em_opto_sndgen_map); + + SPEAKER(config, "mono").front_center(); + BEEP(config, m_beep, 1000).add_route(ALL_OUTPUTS, "mono", 0.2); +} + +void blackbox_em_opto_aux_state::blackbox_em_opto_aux_base(machine_config &config) +{ + blackbox_base(config); + + SPEAKER(config, "mono").front_center(); + BEEP(config, m_beep, 1000).add_route(ALL_OUTPUTS, "mono", 0.2); +} + +void blackbox_em_opto_aux_state::blackbox_em_opto_aux(machine_config &config) +{ + blackbox_em_opto_aux_base(config); + add_em_reels(config, 20, attotime::from_double(1.1)); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_opto_aux_state::blackbox_em_opto_aux_map); +} + +void blackbox_em_opto_music_state::blackbox_em_opto_music(machine_config &config) +{ + blackbox_base(config); + add_em_reels(config, 20, attotime::from_double(1.1)); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_opto_music_state::blackbox_em_opto_music_map); + TMS1000(config, m_tms1000, 452000); // R and C unknown, pitch matches a real machine + + m_tms1000->read_k().set(FUNC(blackbox_em_opto_music_state::tms1000_k_r)); + m_tms1000->write_r().set(FUNC(blackbox_em_opto_music_state::tms1000_r_w)); + m_tms1000->write_o().set(FUNC(blackbox_em_opto_music_state::tms1000_o_w)); + + TIMER(config, "tempo").configure_generic(nullptr); + + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 0.6); +} + +void blackbox_em_opto_club_state::blackbox_em_opto_club(machine_config &config) +{ + blackbox_em_opto_aux_base(config); + add_em_reels(config, 24, attotime::from_double(1.44)); + + m_maincpu->set_addrmap(AS_PROGRAM, &blackbox_em_opto_club_state::blackbox_em_opto_club_map); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); +} + +ROM_START( bb_nudcl ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "nudcl.ic1", 0x7000, 0x800, CRC(84a86dd1) SHA1(64f407f7354c53d847a75a31c6f8285ab7bba9ca) ) + ROM_LOAD( "nudcl.ic2", 0x7800, 0x800, CRC(5ec1d534) SHA1(6f27ef90e2cecf4f71968ca007b719e6af2443fa) ) +ROM_END + +ROM_START( bb_21up ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "95712020.ic2", 0x7800, 0x800, CRC(477d3eed) SHA1(ee381f1054520537c19d7d26ae592df258d4520d) ) +ROM_END + +ROM_START( bb_21upa ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "21up.ic2", 0x7800, 0x800, CRC(37a5b2f5) SHA1(a248e97071385261d2938f60f8ca6d36b582d107) ) +ROM_END + +ROM_START( bb_bellt ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "95712167.ic1", 0x7000, 0x800, CRC(5b859f98) SHA1(c7af2c15e3d7e027ab9a15011e6c1a2b5958dfc8) ) + ROM_LOAD( "95712168.ic2", 0x7800, 0x800, CRC(6b3a16c5) SHA1(679008c2f0af89cf2c146332107c1708efc2ec82) ) +ROM_END + +ROM_START( bb_nudgm ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "nudgm.ic1", 0x7000, 0x800, CRC(3c01c508) SHA1(2bcd12ff0eb87a0615e012c4c1d4bb258bbdf8c7) ) + ROM_LOAD( "nudgm.ic2", 0x7800, 0x800, CRC(8b158f80) SHA1(c6f864665fec3c05bdfb2669875ac7cdaa768390) ) +ROM_END + +ROM_START( bb_upndn ) + ROM_REGION( 0x10000, "maincpu", 0 ) // Original IC1 dump had bad bits + ROM_LOAD( "95712215.ic1", 0x7000, 0x800, CRC(6dca1ae2) BAD_DUMP SHA1(e02406070f46573da0f0bb9bd56b2e8100a9ad39) ) + ROM_LOAD( "95712216.ic2", 0x7800, 0x800, CRC(df17278f) SHA1(9e671645b5206ab8dc5b2c69675d28907fc18517) ) +ROM_END + +ROM_START( bb_reelg ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "95712410.ic1", 0x7000, 0x800, CRC(733a116b) SHA1(bc41e93ee77df0052e2f0350f166be8e0989773d) ) + ROM_LOAD( "95712411.ic2", 0x7800, 0x800, CRC(435870d1) SHA1(b3e24ca1e5d026be02a71a79c2a2df68ce2dd7e9) ) +ROM_END + +ROM_START( bb_upndna ) + ROM_REGION( 0x10000, "maincpu", 0 ) // Original IC2 dump had a stuck line + ROM_LOAD( "95712467.ic1", 0x7000, 0x800, CRC(798c6e56) SHA1(910139fe917215a147d205eff063d7d17a7d4a94) ) + ROM_LOAD( "95712468.ic2", 0x7800, 0x800, CRC(f3900b77) BAD_DUMP SHA1(2fed5c4c1bcb60b5d9ce36e4bf777b9a2eec2010) ) +ROM_END + +ROM_START( bb_dblit ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "dblit.ic1", 0x7000, 0x800, CRC(f898705e) SHA1(2451eab4da1ab370dc8c43d864ae731699dc67f3) ) + ROM_LOAD( "dblit.ic2", 0x7800, 0x800, CRC(a7bcbdbd) SHA1(d68453fab561ebcabc473e2461513200af7614c9) ) +ROM_END + +ROM_START( bb_spinu ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "spinu.ic1", 0x7000, 0x800, CRC(2a425a5f) SHA1(862d4d197ee8d179c82b0ac1b4503c60c43d86ff) ) + ROM_LOAD( "spinu.ic2", 0x7800, 0x800, CRC(1b195136) SHA1(c6d411599aa3ce661e67fecad411c676cdc60a05) ) +ROM_END + +ROM_START( bb_firec ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "95712394.ic1", 0x7000, 0x800, CRC(cd6bc605) SHA1(1ad6ccb6ca901c18b32d5f983e3d5b42fcb92000) ) + ROM_LOAD( "95712395.ic2", 0x7800, 0x800, CRC(d5df2317) SHA1(66f25a2a11657653f5eed3e8196d9b52119236c3) ) +ROM_END + +ROM_START( bb_cjack ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "95712484.ic1", 0x7000, 0x800, CRC(70b34b60) SHA1(fd636c991b971c1c86c52fcffe736ccf0e2117f0) ) + ROM_LOAD( "95712485.ic2", 0x7800, 0x800, CRC(13e9db40) SHA1(aab3d6b852edbd37b68d666673c0720c5b14ad20) ) +ROM_END + +ROM_START( bb_fiest ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "fiest.ic1", 0x7000, 0x800, CRC(3ff1981c) SHA1(f9dd4b4a90f5388867219a87ca7f1d44229524c1) ) + ROM_LOAD( "fiest.ic2", 0x7800, 0x800, CRC(5c879d62) SHA1(77a908a1bc923b42a09c385cb0c3ec2d80712e7c) ) +ROM_END + +ROM_START( bb_oal ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "95712463.ic1", 0x7000, 0x800, CRC(a89c4d4e) SHA1(e94c22532a46d0c0cc1832d9f57ca58193e66205) ) + ROM_LOAD( "95712464.ic2", 0x7800, 0x800, CRC(b4f1d005) SHA1(4b42fdea05e154d1a8686718bd95f499dd2794c0) ) + + // TMS1000 on music board + ROM_REGION( 0x400, "tms1000", 0 ) + ROM_LOAD( "mp0027a", 0x000, 0x400, CRC(8b5e2c4d) SHA1(5364d2836e9daefee2529a20c022e811bb3c7d89) ) + ROM_REGION( 867, "tms1000:mpla", 0 ) + ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) ) + ROM_REGION( 365, "tms1000:opla", 0 ) + ROM_LOAD( "tms1000_cchime_output.pla", 0, 365, CRC(75d68c56) SHA1(85abde0ca0bcc605720551bea360498db350a7af) ) +ROM_END + +// 'GOLDEN SPIN' MK1.5 (C) Copyright - David John Powell (Author) 5/4/84. +ROM_START( bb_gspin ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "gspin.ic1", 0x6800, 0x800, CRC(7506ddd0) SHA1(3a0e9d9fd5179e106f7b8c5bb4762883ea833677) ) + ROM_LOAD( "gspin.ic2", 0x7000, 0x800, CRC(47f6ec74) SHA1(27fb0cd64b454145bb04b8411a628d11f5e6cc71) ) + ROM_LOAD( "gspin.ic3", 0x7800, 0x800, CRC(503aa869) SHA1(9e4d9be27e014603d2d2206e17e2ec0adafb91c1) ) +ROM_END + +void blackbox_em_21up_state::init_21up() +{ + for(int s = 0; s < 477; s++) + { + double wave = sin((2 * M_PI * 3500.0 * (double)s) / 48000.0); + double mod = sin((2 * M_PI * 50.0 * (double)s) / 48000.0); + m_beep_sample_data[s] = 32767 * wave * mod; + } +} + +} // anonymous namespace + +#define GAME_FLAGS MACHINE_NOT_WORKING|MACHINE_MECHANICAL|MACHINE_REQUIRES_ARTWORK|MACHINE_SUPPORTS_SAVE +#define GAME_FLAGS_NOSOUND MACHINE_NOT_WORKING|MACHINE_MECHANICAL|MACHINE_REQUIRES_ARTWORK|MACHINE_SUPPORTS_SAVE|MACHINE_NO_SOUND + +// AWP +GAMEL(1981, bb_nudcl, 0, blackbox_em, bb_nudcl, blackbox_em_state, empty_init, ROT0, "BFM", u8"Nudge Climber (Bellfruit) (Black Box) (5p Stake, £1 Jackpot, all cash)", GAME_FLAGS, layout_bb_nudcl ) // Not the original release +GAMEL(1979, bb_21up, 0, blackbox_em_21up, bb_21up, blackbox_em_21up_state, init_21up, ROT0, "BFM", u8"21 Up (Bellfruit) (Black Box) (5p Stake, £1 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_21up ) +GAMEL(1981, bb_21upa, bb_21up, blackbox_em_21up, bb_21up2, blackbox_em_21up_state, init_21up, ROT0, "BFM", u8"21 Up (Bellfruit) (Black Box) (10p Stake, £2 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_21up ) +GAMEL(1979, bb_bellt, 0, blackbox_em_bellt, bb_bellt, blackbox_em_state, empty_init, ROT0, "BFM", u8"Bell Trail (Bellfruit) (Black Box) (5p Stake, £1 Jackpot)", GAME_FLAGS, layout_bb_bellt ) +GAMEL(1982, bb_nudgm, 0, blackbox_em_admc, bb_nudgm, blackbox_em_admc_state, empty_init, ROT0, "ADM ", u8"The Nudge Machine (ADMC) (Black Box) (5p Stake, £1/£2 Jackpot)", GAME_FLAGS_NOSOUND, layout_bb_nudgm ) +GAMEL(1980, bb_upndn, 0, blackbox_em_opto_sndgen, bb_upndn, blackbox_em_opto_sndgen_state, empty_init, ROT0, "BFM", u8"Upstairs 'N' Downstairs (Bellfruit) (Black Box) (5p Stake, £1 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_upndn ) +GAMEL(1981, bb_reelg, bb_upndn, blackbox_em_opto_sndgen, bb_reelg, blackbox_em_opto_sndgen_state, empty_init, ROT0, "BFM", u8"Reel Gambler (Bellfruit) (Black Box) (10p Stake, £2 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_upndn ) +GAMEL(1981, bb_upndna, bb_upndn, blackbox_em_opto_sndgen, bb_upndna, blackbox_em_opto_sndgen_state, empty_init, ROT0, "BFM", u8"Upstairs 'N' Downstairs (Bellfruit) (Black Box) (5p Stake, £1 Jackpot, all cash)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_upndn ) // Could have another name +GAMEL(1981, bb_dblit, 0, blackbox_em_opto_sndgen, bb_dblit, blackbox_em_opto_sndgen_state, empty_init, ROT0, "BFM", u8"Double It (Bellfruit) (Black Box) (10p Stake, £2 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_dblit ) +GAMEL(1981, bb_spinu, bb_dblit, blackbox_em_opto_sndgen, bb_spinu, blackbox_em_opto_sndgen_state, empty_init, ROT0, "CTL", u8"Spin Up (CTL) (Black Box) (10p Stake, £3 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_spinu ) // £3 jackpot rebuild of Double it +GAMEL(1981, bb_firec, 0, blackbox_em_opto_aux, bb_firec, blackbox_em_opto_aux_state, empty_init, ROT0, "BFM", u8"Fire Cracker (Bellfruit) (Black Box) (10p Stake, £2 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_firec ) +GAMEL(1981, bb_cjack, bb_firec, blackbox_em_opto_aux, bb_cjack, blackbox_em_opto_aux_state, empty_init, ROT0, "BFM", u8"Crackerjack (Bellfruit) (Black Box) (5p Stake, £2 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_cjack ) +GAMEL(1981?, bb_fiest, bb_firec, blackbox_em_opto_aux, bb_fiest, blackbox_em_opto_aux_state, empty_init, ROT0, "Associated Leisure", u8"Fiesta (Associated Leisure) (Black Box) (2p Stake, £1/£2 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_fiest ) // £1/2p rebuild of Fire Cracker +GAMEL(1981, bb_oal, 0, blackbox_em_opto_music, bb_oal, blackbox_em_opto_music_state, empty_init, ROT0, "BFM", u8"Oranges And Lemons (Bellfruit) (Black Box) (10p Stake, £2 Jackpot)", GAME_FLAGS, layout_bb_oal ) +// Club +GAMEL(1984, bb_gspin, 0, blackbox_em_opto_club, bb_gspin, blackbox_em_opto_club_state, empty_init, ROT0, "BWB", u8"Golden Spin (BWB) (Black Box) (MK1.5, 5p Stake, £50 Jackpot)", GAME_FLAGS|MACHINE_IMPERFECT_SOUND, layout_bb_gspin ) // Rebuild of Valentine diff --git a/src/mame/jpm/jpmsru.cpp b/src/mame/jpm/jpmsru.cpp index e3b2558c64a..498e0bb7056 100644 --- a/src/mame/jpm/jpmsru.cpp +++ b/src/mame/jpm/jpmsru.cpp @@ -118,6 +118,9 @@ protected: template <unsigned N> void opto_cb(int state) { m_opto[N] = state; } + TIMER_DEVICE_CALLBACK_MEMBER(int1); + TIMER_DEVICE_CALLBACK_MEMBER(int2); + uint8_t inputs_r(offs_t offset); uint8_t inputs_ext_r(offs_t offset); void reel_w(offs_t offset, uint8_t data); @@ -174,10 +177,6 @@ protected: uint8_t m_busext_mode; uint8_t m_busext_addr; - TIMER_DEVICE_CALLBACK_MEMBER(int1); - TIMER_DEVICE_CALLBACK_MEMBER(int2); - - // devices required_device<cpu_device> m_maincpu; required_ioport_array<4> m_inputs; required_device_array<stepper_device, 4> m_reel; diff --git a/src/mame/layout/bb_21up.lay b/src/mame/layout/bb_21up.lay new file mode 100644 index 00000000000..416b6c35a05 --- /dev/null +++ b/src/mame/layout/bb_21up.lay @@ -0,0 +1,168 @@ +<?xml version="1.0"?> +<!-- +21 Up +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="6"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="6"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit(7)"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple(7)"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum(7)"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon(7)"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon(7)"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes(7)"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon(7)"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple(7)"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum(7)"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry(7)"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes(7)"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple(7)"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange(7)"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes(7)"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon(7)"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon(7)"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum(7)"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes(7)"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple(7)"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon(7)"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit(6)"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes(5)"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum(4)"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry(8)"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple(7)"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry(6)"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon(4)"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon(5)"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry(7)"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon(5)"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange(6)"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum(5)"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon(4)"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry(8)"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple(6)"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes(4)"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange(7)"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon(4)"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum(5)"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon(4)"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 4"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="21"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="19"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="17"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="20"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="19"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="16"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="18"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="20"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="17"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="19"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="21"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="18"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="17"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="20"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="18"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="16"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="19"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="20"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="17"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="18"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="4"> + <param name="i" start="1" increment="1" /> + <param name="x" start="20" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="240" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit1" ref="LCD"> <bounds x="30" y="120" width="18" height="30" /> </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="120" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_bellt.lay b/src/mame/layout/bb_bellt.lay new file mode 100644 index 00000000000..1f71c350069 --- /dev/null +++ b/src/mame/layout/bb_bellt.lay @@ -0,0 +1,174 @@ +<?xml version="1.0"?> +<!-- +Bell Trail +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Orange"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Plum"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 4"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="4"> + <param name="i" start="1" increment="1" /> + <param name="x" start="20" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="240" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <repeat count="3"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_cjack.lay b/src/mame/layout/bb_cjack.lay new file mode 100644 index 00000000000..32acb81fd6a --- /dev/null +++ b/src/mame/layout/bb_cjack.lay @@ -0,0 +1,162 @@ +<?xml version="1.0"?> +<!-- +Crackerjack +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Cherry"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="3"> + <param name="i" start="1" increment="1" /> + <param name="x" start="45" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="145" width="30" height="135"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="145" width="30" height="135"/> + <yscroll name="emreel~i~" size="0.25" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="213" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="172" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="254" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit1" ref="LCD"> <bounds x="30" y="100" width="18" height="30" /> </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="100" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <repeat count="2"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_dblit.lay b/src/mame/layout/bb_dblit.lay new file mode 100644 index 00000000000..8a1d3f58d4e --- /dev/null +++ b/src/mame/layout/bb_dblit.lay @@ -0,0 +1,145 @@ +<?xml version="1.0"?> +<!-- +Double It +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Melon"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Plum"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes*"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear*"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry*"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange*"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit*"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon*"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum*"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange*"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry*"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Grapes"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="3"> + <param name="i" start="1" increment="1" /> + <param name="x" start="45" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="240" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit1" ref="LCD"> <bounds x="30" y="120" width="18" height="30" /> </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="120" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_fiest.lay b/src/mame/layout/bb_fiest.lay new file mode 100644 index 00000000000..66abf27f199 --- /dev/null +++ b/src/mame/layout/bb_fiest.lay @@ -0,0 +1,162 @@ +<?xml version="1.0"?> +<!-- +Fiesta +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Star"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bar"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Cherry"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Star"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bar"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Orange"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Star"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bar"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="3"> + <param name="i" start="1" increment="1" /> + <param name="x" start="45" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="145" width="30" height="135"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="145" width="30" height="135"/> + <yscroll name="emreel~i~" size="0.25" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="213" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="172" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="254" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit1" ref="LCD"> <bounds x="30" y="100" width="18" height="30" /> </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="100" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <repeat count="2"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_firec.lay b/src/mame/layout/bb_firec.lay new file mode 100644 index 00000000000..881be75b889 --- /dev/null +++ b/src/mame/layout/bb_firec.lay @@ -0,0 +1,162 @@ +<?xml version="1.0"?> +<!-- +Fire Cracker +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="3"> + <param name="i" start="1" increment="1" /> + <param name="x" start="45" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="145" width="30" height="135"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="145" width="30" height="135"/> + <yscroll name="emreel~i~" size="0.25" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="213" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="172" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="254" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit1" ref="LCD"> <bounds x="30" y="100" width="18" height="30" /> </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="100" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <repeat count="2"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_gspin.lay b/src/mame/layout/bb_gspin.lay new file mode 100644 index 00000000000..ab8202254ff --- /dev/null +++ b/src/mame/layout/bb_gspin.lay @@ -0,0 +1,199 @@ +<?xml version="1.0"?> +<!-- +Golden Spin +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="480"/> <color alpha="0.0"/> </rect> + <text string="Bar"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple*"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Climb"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon*"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes*"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="400" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="420" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon*"> <bounds x="0" y="440" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="460" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange*"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="480"/> <color alpha="0.0"/> </rect> + <text string="Bar"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Climb"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear*"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell*"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry*"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple*"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="400" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="420" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="440" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="460" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple*"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="480"/> <color alpha="0.0"/> </rect> + <text string="Bar"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon*"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon*"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes*"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon*"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry*"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="400" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Climb"> <bounds x="0" y="420" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="440" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="460" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 4"> + <rect> <bounds x="0" y="0" width="100" height="480"/> <color alpha="0.0"/> </rect> + <text string="Bar"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear*"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Climb"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum*"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange*"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="400" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="420" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange*"> <bounds x="0" y="440" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="460" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pineapple*"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="4"> + <param name="i" start="1" increment="1" /> + <param name="x" start="20" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.125" wrap="yes" min="0" max="479"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="240" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit0" ref="LCD"> <bounds x="30" y="100" width="18" height="30" /> </element> + <element name="digit1" ref="LCD"> <bounds x="54" y="100" width="18" height="30" /> </element> + <element name="digit2" ref="LCD"> <bounds x="78" y="100" width="18" height="30" /> </element> + <element name="digit3" ref="LCD"> <bounds x="102" y="100" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="lamp50" ref="matrixlamp" state="0"> <bounds x="120" y="12" width="11" height="11"/> </element> + <element name="lamp51" ref="matrixlamp" state="0"> <bounds x="132" y="12" width="11" height="11"/> </element> + <repeat count="4"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_nudcl.lay b/src/mame/layout/bb_nudcl.lay new file mode 100644 index 00000000000..c480d68c4c8 --- /dev/null +++ b/src/mame/layout/bb_nudcl.lay @@ -0,0 +1,161 @@ +<?xml version="1.0"?> +<!-- +Nudge Climber +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Melon"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Bellfruit"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Grapes"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 4"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Double"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="8"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="8"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Double"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Halve"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="4"> + <param name="i" start="1" increment="1" /> + <param name="x" start="20" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="267" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_nudgm.lay b/src/mame/layout/bb_nudgm.lay new file mode 100644 index 00000000000..d34ffdb0e94 --- /dev/null +++ b/src/mame/layout/bb_nudgm.lay @@ -0,0 +1,173 @@ +<?xml version="1.0"?> +<!-- +The Nudge Machine +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Plum"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Clover"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pound"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="ADMC"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pound"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Star"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="ADMC"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pound"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Clover"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Cherry"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="ADMC"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Star"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pound"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Clover"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pound"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + + </element> + <element name="Reel 4"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Strawberry"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Clover"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pound"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Clover"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="ADMC"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Apple"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Clover"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="4"> + <param name="i" start="1" increment="1" /> + <param name="x" start="20" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="240" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <repeat count="4"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_oal.lay b/src/mame/layout/bb_oal.lay new file mode 100644 index 00000000000..5f686d6799c --- /dev/null +++ b/src/mame/layout/bb_oal.lay @@ -0,0 +1,162 @@ +<?xml version="1.0"?> +<!-- +Oranges And Lemons +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Grapes"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Cherry"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Lemon"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Strawberry"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="3"> + <param name="i" start="1" increment="1" /> + <param name="x" start="45" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="145" width="30" height="135"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="145" width="30" height="135"/> + <yscroll name="emreel~i~" size="0.25" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="213" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="172" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="254" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit1" ref="LCD"> <bounds x="30" y="100" width="18" height="30" /> </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="100" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <repeat count="1"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_spinu.lay b/src/mame/layout/bb_spinu.lay new file mode 100644 index 00000000000..69dfeb63140 --- /dev/null +++ b/src/mame/layout/bb_spinu.lay @@ -0,0 +1,145 @@ +<?xml version="1.0"?> +<!-- +Spin Up +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Melon"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="CTL"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Plum"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes*"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear*"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry*"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange*"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="CTL*"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon*"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum*"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange*"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="CTL"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry*"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Grapes"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="CTL"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="CTL"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="CTL"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="CTL"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="3"> + <param name="i" start="1" increment="1" /> + <param name="x" start="45" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="20" y="240" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit1" ref="LCD"> <bounds x="30" y="120" width="18" height="30" /> </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="120" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bb_upndn.lay b/src/mame/layout/bb_upndn.lay new file mode 100644 index 00000000000..5379cd9b24b --- /dev/null +++ b/src/mame/layout/bb_upndn.lay @@ -0,0 +1,180 @@ +<?xml version="1.0"?> +<!-- +Upstairs 'N' Downstairs +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel 1"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Cherry"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 2"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Melon"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 3"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="Plum"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bellfruit"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Grapes"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Melon"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Plum"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Pear"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Orange"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Cherry"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="Bell"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="Reel 4"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="1"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="2"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="3"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="4"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="5"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="6"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="7"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="1"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="2"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="3"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="4"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="5"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="6"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="7"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="1"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="2"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="3"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="4"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="8"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="9"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="3"> + <param name="i" start="1" increment="1" /> + <param name="x" start="20" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="145" width="30" height="135"/> + </element> + <element ref="Reel ~i~" state="0"> + <bounds x="~x~" y="145" width="30" height="135"/> + <yscroll name="emreel~i~" size="0.25" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_white"> + <bounds x="170" y="172" width="30" height="81"/> + </element> + <element ref="Reel 4" state="0"> + <bounds x="170" y="172" width="30" height="81"/> + <yscroll name="emreel4" size="0.15" wrap="yes" min="0" max="399"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="213" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="172" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="20" y="254" width="200" height="1"/> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit0" ref="LCD"> <bounds x="54" y="100" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/bfm_blackbox.lay b/src/mame/layout/bfm_blackbox.lay new file mode 100644 index 00000000000..af518b0d616 --- /dev/null +++ b/src/mame/layout/bfm_blackbox.lay @@ -0,0 +1,113 @@ +<?xml version="1.0"?> +<!-- +license:CC0 +--> +<mamelayout version="2"> + <element name="matrixlamp"> + <rect state="0"> + <color red="0.7" green="0.7" blue="0.7" /> + </rect> + <rect state="1"> + <color red="0.95" green="0.95" blue="0.43" /> + </rect> + </element> + <element name="led"> + <disk state="0"> + <color red="0.2" green="0.0" blue="0.0" /> + </disk> + <disk state="1"> + <color red="1.0" green="0.0" blue="0.0" /> + </disk> + </element> + <element name="rect_white"> + <rect> + <color red="1.0" green="1.0" blue="1.0"/> + </rect> + </element> + <element name="rect_black"> + <rect> + <color red="0.0" green="0.0" blue="0.0"/> + </rect> + </element> + <element name="Reel"> + <rect> <bounds x="0" y="0" width="100" height="400"/> <color alpha="0.0"/> </rect> + <text string="1"> <bounds x="0" y="20" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="2"> <bounds x="0" y="40" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="3"> <bounds x="0" y="60" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="4"> <bounds x="0" y="80" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="5"> <bounds x="0" y="100" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="6"> <bounds x="0" y="120" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="7"> <bounds x="0" y="140" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="8"> <bounds x="0" y="160" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="9"> <bounds x="0" y="180" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="10"> <bounds x="0" y="200" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="11"> <bounds x="0" y="220" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="12"> <bounds x="0" y="240" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="13"> <bounds x="0" y="260" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="14"> <bounds x="0" y="280" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="15"> <bounds x="0" y="300" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="16"> <bounds x="0" y="320" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="17"> <bounds x="0" y="340" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="18"> <bounds x="0" y="360" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="19"> <bounds x="0" y="380" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + <text string="20"> <bounds x="0" y="0" width="100" height="20"/> <color red="0.0" green="0.0" blue="0.0"/> </text> + </element> + <element name="LCD" defstate="0"> + <led7seg> + <color red="0.9" green="0.0" blue="0.0" /> + </led7seg> + </element> + + <view name="AWP Simulated Video (No Artwork)"> + <repeat count="4"> + <param name="i" start="1" increment="1" /> + <param name="x" start="20" increment="50" /> + <element ref="rect_white"> + <bounds x="~x~" y="200" width="30" height="80"/> + </element> + <element ref="Reel" state="0"> + <bounds x="~x~" y="200" width="30" height="80"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> + </element> + </repeat> + <element ref="rect_black"> + <bounds x="220" y="0" width="1" height="1"/> <!-- Right side border --> + </element> + <element ref="rect_black"> + <bounds x="0" y="285" width="1" height="1"/> <!-- Bottom border --> + </element> + <element name="digit0" ref="LCD"> <bounds x="30" y="100" width="18" height="30" /> </element> + <element name="digit1" ref="LCD"> <bounds x="54" y="100" width="18" height="30" /> </element> + <element name="digit2" ref="LCD"> <bounds x="78" y="100" width="18" height="30" /> </element> + <element name="digit3" ref="LCD"> <bounds x="102" y="100" width="18" height="30" /> </element> + <repeat count="2"> + <param name="i" start="0" increment="8" /> + <param name="y" start="0" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="lamp16" ref="matrixlamp" state="0"> <bounds x="96" y="12" width="11" height="11"/> </element> + <element name="lamp17" ref="matrixlamp" state="0"> <bounds x="108" y="12" width="11" height="11"/> </element> + <element name="lamp50" ref="matrixlamp" state="0"> <bounds x="120" y="12" width="11" height="11"/> </element> + <element name="lamp51" ref="matrixlamp" state="0"> <bounds x="132" y="12" width="11" height="11"/> </element> + <repeat count="4"> + <param name="i" start="18" increment="8" /> + <param name="y" start="24" increment="12" /> + <repeat count="8"> + <param name="j" start="~i~" increment="1" /> + <param name="x" start="0" increment="12" /> + <element name="lamp~j~" ref="matrixlamp" state="0"> + <bounds x="~x~" y="~y~" width="11" height="11"/> + </element> + </repeat> + </repeat> + <element name="test1" ref="led"> <bounds x="209" y="0" width="11" height="11" /> </element> + <element name="test2" ref="led"> <bounds x="209" y="11" width="11" height="11" /> </element> + </view> +</mamelayout> + diff --git a/src/mame/layout/m_bappl2.lay b/src/mame/layout/m_bappl2.lay index f6cb98f5749..cc866a27de0 100644 --- a/src/mame/layout/m_bappl2.lay +++ b/src/mame/layout/m_bappl2.lay @@ -124,7 +124,7 @@ license:CC0-1.0 </element> <element ref="Reel ~i~" state="0"> <bounds x="~x~" y="200" width="30" height="80"/> - <yscroll name="sreel~i~" size="0.15" wrap="yes" min="0" max="65535"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> </element> </repeat> <element ref="rect_black"> diff --git a/src/mame/layout/m_bapple.lay b/src/mame/layout/m_bapple.lay index 6097fe2dfcc..70698f74ee3 100644 --- a/src/mame/layout/m_bapple.lay +++ b/src/mame/layout/m_bapple.lay @@ -124,7 +124,7 @@ license:CC0-1.0 </element> <element ref="Reel ~i~" state="0"> <bounds x="~x~" y="200" width="30" height="80"/> - <yscroll name="sreel~i~" size="0.15" wrap="yes" min="0" max="65535"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> </element> </repeat> <element ref="rect_black"> diff --git a/src/mame/layout/m_gndgit.lay b/src/mame/layout/m_gndgit.lay index 97a04e82679..791fe406393 100644 --- a/src/mame/layout/m_gndgit.lay +++ b/src/mame/layout/m_gndgit.lay @@ -124,7 +124,7 @@ license:CC0-1.0 </element> <element ref="Reel ~i~" state="0"> <bounds x="~x~" y="200" width="30" height="80"/> - <yscroll name="sreel~i~" size="0.15" wrap="yes" min="0" max="65535"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> </element> </repeat> <element ref="rect_black"> diff --git a/src/mame/layout/m_lndg.lay b/src/mame/layout/m_lndg.lay index 4d2f5353a45..38419343c66 100644 --- a/src/mame/layout/m_lndg.lay +++ b/src/mame/layout/m_lndg.lay @@ -124,7 +124,7 @@ license:CC0-1.0 </element> <element ref="Reel ~i~" state="0"> <bounds x="~x~" y="200" width="30" height="80"/> - <yscroll name="sreel~i~" size="0.15" wrap="yes" min="0" max="65535"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> </element> </repeat> <element ref="rect_black"> diff --git a/src/mame/layout/m_mtchit.lay b/src/mame/layout/m_mtchit.lay index 9154707e542..ac28ada6db8 100644 --- a/src/mame/layout/m_mtchit.lay +++ b/src/mame/layout/m_mtchit.lay @@ -124,7 +124,7 @@ license:CC0-1.0 </element> <element ref="Reel ~i~" state="0"> <bounds x="~x~" y="200" width="30" height="80"/> - <yscroll name="sreel~i~" size="0.15" wrap="yes" min="0" max="65535"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> </element> </repeat> <element ref="rect_black"> diff --git a/src/mame/layout/m_mtchup.lay b/src/mame/layout/m_mtchup.lay index e1bce4e43e6..08eb3d80a78 100644 --- a/src/mame/layout/m_mtchup.lay +++ b/src/mame/layout/m_mtchup.lay @@ -124,7 +124,7 @@ license:CC0-1.0 </element> <element ref="Reel ~i~" state="0"> <bounds x="~x~" y="200" width="30" height="80"/> - <yscroll name="sreel~i~" size="0.15" wrap="yes" min="0" max="65535"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> </element> </repeat> <element ref="rect_black"> diff --git a/src/mame/layout/mpu1.lay b/src/mame/layout/mpu1.lay index d915bcbabba..9ce7cf5bdd6 100644 --- a/src/mame/layout/mpu1.lay +++ b/src/mame/layout/mpu1.lay @@ -54,7 +54,7 @@ license:CC0-1.0 </element> <element ref="Reel" state="0"> <bounds x="~x~" y="200" width="30" height="80"/> - <yscroll name="sreel~i~" size="0.15" wrap="yes" min="0" max="65535"/> + <yscroll name="emreel~i~" size="0.15" wrap="yes" min="0" max="399"/> </element> </repeat> <element ref="rect_black"> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d9a0c1f2b6a..7efc4956c36 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9263,6 +9263,23 @@ ad5vpaa // ad5vpab // ad5vpac // +@source:bfm/bfm_blackbox.cpp +bb_21up // 21 Up (Bellfruit) +bb_21upa // +bb_bellt // Bell Trail (Bellfruit) +bb_cjack // Crackerjack (Bellfruit) +bb_dblit // Double It (Bellfruit) +bb_fiest // Fiesta (Associated Leisure) +bb_firec // Fire Cracker (Bellfruit) +bb_gspin // Golden Spin (BWB) +bb_nudcl // Nudge Climber (Bellfruit) +bb_nudgm // The Nudge Machine (ADMC) +bb_oal // Oranges And Lemons (Bellfruit) +bb_reelg // Reel Gambler (Bellfruit) +bb_spinu // Spin Up (CTL) +bb_upndn // Upstairs 'N' Downstairs (Bellfruit) +bb_upndna // + @source:bfm/bfm_sc1.cpp m_tppokr // (c) 1996 BFM/ELAM,Game Card 95-750-899, uses Adder board for feature gfx sc1actv8 // diff --git a/src/mame/shared/fruitsamples.cpp b/src/mame/shared/fruitsamples.cpp index 72cc8c865ff..ead479e4880 100644 --- a/src/mame/shared/fruitsamples.cpp +++ b/src/mame/shared/fruitsamples.cpp @@ -14,48 +14,37 @@ namespace { -const char *const fruit_sample_names[fruit_samples_device::SAMPLE_END + 2] = +const char *const fruit_sample_names[] = { "*fruitsamples", "payout", // 0 "meter", // 1 - "em_reel_start", // 2 - "em_reel_stop", // 3 + "buzzer", // 2 + "em_reel_start", // 3 + "em_reel_stop", // 4 nullptr }; -const uint8_t fruit_sample_ids[fruit_samples_device::SAMPLE_END] = +const fruit_samples_device::sample_params params[] = { - 0, // SAMPLE_PAYOUT - 1, // SAMPLE_METER - 2, // SAMPLE_EM_REEL_1_START - 2, // SAMPLE_EM_REEL_2_START - 2, // SAMPLE_EM_REEL_3_START - 2, // SAMPLE_EM_REEL_4_START - 3, // SAMPLE_EM_REEL_1_STOP - 3, // SAMPLE_EM_REEL_2_STOP - 3, // SAMPLE_EM_REEL_3_STOP - 3, // SAMPLE_EM_REEL_4_STOP -}; - -const uint8_t fruit_sample_channels[fruit_samples_device::SAMPLE_END] = -{ - 0, // SAMPLE_PAYOUT - 1, // SAMPLE_METER - 2, // SAMPLE_EM_REEL_1_START - 3, // SAMPLE_EM_REEL_2_START - 4, // SAMPLE_EM_REEL_3_START - 5, // SAMPLE_EM_REEL_4_START - 2, // SAMPLE_EM_REEL_1_STOP - 3, // SAMPLE_EM_REEL_2_STOP - 4, // SAMPLE_EM_REEL_3_STOP - 5 // SAMPLE_EM_REEL_4_STOP + //id ch loop + { 0, 0, false }, // SAMPLE_PAYOUT + { 1, 1, false }, // SAMPLE_METER + { 2, 2, false }, // SAMPLE_BUZZER + { 3, 3, false }, // SAMPLE_EM_REEL_1_START + { 3, 4, false }, // SAMPLE_EM_REEL_2_START + { 3, 5, false }, // SAMPLE_EM_REEL_3_START + { 3, 6, false }, // SAMPLE_EM_REEL_4_START + { 4, 3, false }, // SAMPLE_EM_REEL_1_STOP + { 4, 4, false }, // SAMPLE_EM_REEL_2_STOP + { 4, 5, false }, // SAMPLE_EM_REEL_3_STOP + { 4, 6, false } // SAMPLE_EM_REEL_4_STOP }; } // anonymous namespace -DEFINE_DEVICE_TYPE(FRUIT_SAMPLES, fruit_samples_device, "fruit_samples", "Fruit machine mechanical samples") +DEFINE_DEVICE_TYPE(FRUIT_SAMPLES, fruit_samples_device, "fruit_samples", "Fruit Machine Mechanical Samples") fruit_samples_device::fruit_samples_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, FRUIT_SAMPLES, tag, owner, clock), @@ -73,15 +62,33 @@ void fruit_samples_device::device_add_mconfig(machine_config &config) SPEAKER(config, "fruitmech").front_center(); SAMPLES(config, m_samples); - m_samples->set_channels(6); + m_samples->set_channels(7); m_samples->set_samples_names(fruit_sample_names); m_samples->add_route(ALL_OUTPUTS, "fruitmech", 1.0); } void fruit_samples_device::play(uint8_t index) { - if (index < SAMPLE_END) - m_samples->start(fruit_sample_channels[index], fruit_sample_ids[index]); + if(index < SAMPLE_END) + { + sample_params sample = params[index]; + m_samples->start(sample.channel, sample.id, sample.loop); + } + else + { + fatalerror("fruit_samples_device::play: Sample index %u out of range\n", index); + } +} + +void fruit_samples_device::stop(uint8_t index) +{ + if(index < SAMPLE_END) + { + sample_params sample = params[index]; + m_samples->stop(sample.channel); + } else - fatalerror("fruit_samples_device: Sample index %u out of range\n", index); + { + fatalerror("fruit_samples_device::stop: Sample index %u out of range\n", index); + } } diff --git a/src/mame/shared/fruitsamples.h b/src/mame/shared/fruitsamples.h index 75cb2fab905..80a0737c204 100644 --- a/src/mame/shared/fruitsamples.h +++ b/src/mame/shared/fruitsamples.h @@ -19,11 +19,13 @@ public: fruit_samples_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); void play(uint8_t index); + void stop(uint8_t index); enum { SAMPLE_PAYOUT = 0, SAMPLE_METER, + SAMPLE_BUZZER, SAMPLE_EM_REEL_1_START, SAMPLE_EM_REEL_2_START, SAMPLE_EM_REEL_3_START, @@ -35,6 +37,13 @@ public: SAMPLE_END }; + struct sample_params + { + uint32_t id; + uint8_t channel; + bool loop; + }; + protected: virtual void device_start() override; virtual void device_add_mconfig(machine_config &config) override; |