diff options
-rw-r--r-- | scripts/src/bus.lua | 2 | ||||
-rw-r--r-- | src/devices/bus/bbc/tube/tube.cpp | 1 | ||||
-rw-r--r-- | src/devices/bus/bbc/tube/tube_6502.cpp | 125 | ||||
-rw-r--r-- | src/devices/bus/bbc/tube/tube_6502.h | 33 | ||||
-rw-r--r-- | src/devices/bus/bbc/tube/tube_65c102.cpp | 157 | ||||
-rw-r--r-- | src/devices/bus/bbc/tube/tube_65c102.h | 66 | ||||
-rw-r--r-- | src/mame/drivers/hazl1420.cpp | 169 | ||||
-rw-r--r-- | src/mame/drivers/video21.cpp | 33 | ||||
-rw-r--r-- | src/mame/layout/video21.lay | 37 |
9 files changed, 302 insertions, 321 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index 0abd88b3765..e86393a9e8f 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -353,8 +353,6 @@ if (BUSES["BBC_TUBE"]~=null) then MAME_DIR .. "src/devices/bus/bbc/tube/tube.h", MAME_DIR .. "src/devices/bus/bbc/tube/tube_6502.cpp", MAME_DIR .. "src/devices/bus/bbc/tube/tube_6502.h", - MAME_DIR .. "src/devices/bus/bbc/tube/tube_65c102.cpp", - MAME_DIR .. "src/devices/bus/bbc/tube/tube_65c102.h", MAME_DIR .. "src/devices/bus/bbc/tube/tube_80186.cpp", MAME_DIR .. "src/devices/bus/bbc/tube/tube_80186.h", MAME_DIR .. "src/devices/bus/bbc/tube/tube_80286.cpp", diff --git a/src/devices/bus/bbc/tube/tube.cpp b/src/devices/bus/bbc/tube/tube.cpp index c69b57cd45f..521497361ee 100644 --- a/src/devices/bus/bbc/tube/tube.cpp +++ b/src/devices/bus/bbc/tube/tube.cpp @@ -113,7 +113,6 @@ WRITE8_MEMBER(bbc_tube_slot_device::host_w) // slot devices #include "tube_6502.h" -#include "tube_65c102.h" #include "tube_80186.h" #include "tube_80286.h" //#include "tube_a500.h" diff --git a/src/devices/bus/bbc/tube/tube_6502.cpp b/src/devices/bus/bbc/tube/tube_6502.cpp index 3aa3c6a1175..8120ab16812 100644 --- a/src/devices/bus/bbc/tube/tube_6502.cpp +++ b/src/devices/bus/bbc/tube/tube_6502.cpp @@ -6,6 +6,10 @@ http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ANC01_65022ndproc.html + Acorn ADC06 65C102 Co-processor + + http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ADC06_65C102CoPro.html + **********************************************************************/ @@ -18,7 +22,8 @@ // DEVICE DEFINITIONS //************************************************************************** -DEFINE_DEVICE_TYPE(BBC_TUBE_6502, bbc_tube_6502_device, "bbc_tube_6502", "Acorn 6502 2nd Processor") +DEFINE_DEVICE_TYPE(BBC_TUBE_6502, bbc_tube_6502_device, "bbc_tube_6502", "Acorn 6502 2nd Processor") +DEFINE_DEVICE_TYPE(BBC_TUBE_65C102, bbc_tube_65c102_device, "bbc_tube_65c102", "Acorn 65C102 Co-Processor") //------------------------------------------------- @@ -27,7 +32,17 @@ DEFINE_DEVICE_TYPE(BBC_TUBE_6502, bbc_tube_6502_device, "bbc_tube_6502", "Acorn void bbc_tube_6502_device::tube_6502_mem(address_map &map) { - map(0x0000, 0xffff).rw(FUNC(bbc_tube_6502_device::read), FUNC(bbc_tube_6502_device::write)); + map(0x0000, 0xffff).m(m_bankdev, FUNC(address_map_bank_device::amap8)); + map(0xfef0, 0xfeff).rw(FUNC(bbc_tube_6502_device::tube_r), FUNC(bbc_tube_6502_device::tube_w)); +} + +void bbc_tube_6502_device::tube_6502_bank(address_map &map) +{ + // ROM enabled + map(0x00000, 0x0ffff).ram().share("ram"); + map(0x0f000, 0x0ffff).rom().region("rom", 0); + // ROM disabled + map(0x10000, 0x1ffff).ram().share("ram"); } //------------------------------------------------- @@ -36,21 +51,33 @@ void bbc_tube_6502_device::tube_6502_mem(address_map &map) ROM_START( tube_6502 ) ROM_REGION(0x1000, "rom", 0) - ROM_LOAD("6502tube.rom", 0x0000, 0x1000, CRC(98b5fe42) SHA1(338269d03cf6bfa28e09d1651c273ea53394323b)) + ROM_DEFAULT_BIOS("110") + ROM_SYSTEM_BIOS(0, "110", "Tube 1.10") + ROMX_LOAD("6502tube.rom", 0x0000, 0x1000, CRC(98b5fe42) SHA1(338269d03cf6bfa28e09d1651c273ea53394323b), ROM_BIOS(0)) + ROM_SYSTEM_BIOS(1, "121", "Tube 1.21 (ReCo6502)") + ROMX_LOAD("reco6502tube.rom", 0x0000, 0x1000, CRC(75b2a466) SHA1(9ecef24de58a48c3fbe01b12888c3f6a5d24f57f), ROM_BIOS(1)) +ROM_END + +ROM_START( tube_65c102 ) + ROM_REGION(0x1000, "rom", 0) + ROM_DEFAULT_BIOS("110") + ROM_SYSTEM_BIOS(0, "110", "Tube 1.10") + ROMX_LOAD("65c102_boot_110.rom", 0x0000, 0x1000, CRC(ad5b70cc) SHA1(0ac9a1c70e55a79e2c81e102afae1d016af229fa), ROM_BIOS(0)) // 2201,243-02 + ROM_SYSTEM_BIOS(1, "121", "Tube 1.21 (ReCo6502)") + ROMX_LOAD("reco6502tube.rom", 0x0000, 0x1000, CRC(75b2a466) SHA1(9ecef24de58a48c3fbe01b12888c3f6a5d24f57f), ROM_BIOS(1)) ROM_END //------------------------------------------------- // device_add_mconfig - add device configuration //------------------------------------------------- -void bbc_tube_6502_device::device_add_mconfig(machine_config &config) +void bbc_tube_6502_device::add_common_devices(machine_config &config) { - M65C02(config, m_m6502, 12_MHz_XTAL / 4); - m_m6502->set_addrmap(AS_PROGRAM, &bbc_tube_6502_device::tube_6502_mem); + ADDRESS_MAP_BANK(config, m_bankdev).set_map(&bbc_tube_6502_device::tube_6502_bank).set_options(ENDIANNESS_LITTLE, 8, 17, 0x10000); TUBE(config, m_ula); - m_ula->pnmi_handler().set_inputline(m_m6502, M65C02_NMI_LINE); - m_ula->pirq_handler().set_inputline(m_m6502, M65C02_IRQ_LINE); + m_ula->pnmi_handler().set_inputline(m_maincpu, M65C02_NMI_LINE); + m_ula->pirq_handler().set_inputline(m_maincpu, M65C02_IRQ_LINE); /* internal ram */ RAM(config, m_ram).set_default_size("64K").set_default_value(0); @@ -60,6 +87,22 @@ void bbc_tube_6502_device::device_add_mconfig(machine_config &config) SOFTWARE_LIST(config, "flop_ls_65c102").set_original("bbc_flop_65c102"); } +void bbc_tube_6502_device::device_add_mconfig(machine_config &config) +{ + M65C02(config, m_maincpu, 12_MHz_XTAL / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &bbc_tube_6502_device::tube_6502_mem); + + add_common_devices(config); +} + +void bbc_tube_65c102_device::device_add_mconfig(machine_config &config) +{ + M65C02(config, m_maincpu, 16_MHz_XTAL / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &bbc_tube_65c102_device::tube_6502_mem); + + add_common_devices(config); +} + //------------------------------------------------- // rom_region - device-specific ROM region //------------------------------------------------- @@ -69,6 +112,11 @@ const tiny_rom_entry *bbc_tube_6502_device::device_rom_region() const return ROM_NAME( tube_6502 ); } +const tiny_rom_entry *bbc_tube_65c102_device::device_rom_region() const +{ + return ROM_NAME( tube_65c102 ); +} + //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -77,14 +125,24 @@ const tiny_rom_entry *bbc_tube_6502_device::device_rom_region() const // bbc_tube_6502_device - constructor //------------------------------------------------- +bbc_tube_6502_device::bbc_tube_6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , device_bbc_tube_interface(mconfig, *this) + , m_maincpu(*this, "maincpu") + , m_bankdev(*this, "bankdev") + , m_ula(*this, "ula") + , m_ram(*this, "ram") + , m_rom(*this, "rom") +{ +} + bbc_tube_6502_device::bbc_tube_6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, BBC_TUBE_6502, tag, owner, clock), - device_bbc_tube_interface(mconfig, *this), - m_m6502(*this, "m6502"), - m_ula(*this, "ula"), - m_ram(*this, "ram"), - m_rom(*this, "rom"), - m_rom_enabled(true) + : bbc_tube_6502_device(mconfig, BBC_TUBE_6502, tag, owner, clock) +{ +} + +bbc_tube_65c102_device::bbc_tube_65c102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : bbc_tube_6502_device(mconfig, BBC_TUBE_65C102, tag, owner, clock) { } @@ -94,7 +152,6 @@ bbc_tube_6502_device::bbc_tube_6502_device(const machine_config &mconfig, const void bbc_tube_6502_device::device_start() { - m_slot = dynamic_cast<bbc_tube_slot_device *>(owner()); } //------------------------------------------------- @@ -103,9 +160,7 @@ void bbc_tube_6502_device::device_start() void bbc_tube_6502_device::device_reset() { - m_ula->reset(); - - m_rom_enabled = true; + m_bankdev->set_bank(0); } @@ -124,34 +179,16 @@ WRITE8_MEMBER(bbc_tube_6502_device::host_w) } -READ8_MEMBER(bbc_tube_6502_device::read) +READ8_MEMBER(bbc_tube_6502_device::tube_r) { - uint8_t data; + // Disable ROM on first access + if (!machine().side_effects_disabled()) + m_bankdev->set_bank(1); - if (offset >= 0xfef0 && offset <= 0xfeff) - { - if (!machine().side_effects_disabled()) m_rom_enabled = false; - data = m_ula->parasite_r(space, offset); - } - else if (m_rom_enabled && (offset >= 0xf000)) - { - data = m_rom->base()[offset & 0xfff]; - } - else - { - data = m_ram->pointer()[offset]; - } - return data; + return m_ula->parasite_r(space, offset); } -WRITE8_MEMBER(bbc_tube_6502_device::write) +WRITE8_MEMBER(bbc_tube_6502_device::tube_w) { - if (offset >= 0xfef0 && offset <= 0xfeff) - { - m_ula->parasite_w(space, offset, data); - } - else - { - m_ram->pointer()[offset] = data; - } + m_ula->parasite_w(space, offset, data); } diff --git a/src/devices/bus/bbc/tube/tube_6502.h b/src/devices/bus/bbc/tube/tube_6502.h index 67d14bd539f..244eb9f2105 100644 --- a/src/devices/bus/bbc/tube/tube_6502.h +++ b/src/devices/bus/bbc/tube/tube_6502.h @@ -6,6 +6,10 @@ http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ANC01_65022ndproc.html + Acorn ADC06 65C102 Co-processor + + http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ADC06_65C102CoPro.html + **********************************************************************/ @@ -14,6 +18,7 @@ #include "tube.h" #include "cpu/m6502/m65c02.h" +#include "machine/bankdev.h" #include "machine/ram.h" #include "machine/tube.h" @@ -32,6 +37,8 @@ public: bbc_tube_6502_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: + bbc_tube_6502_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -40,26 +47,40 @@ protected: virtual void device_add_mconfig(machine_config &config) override; virtual const tiny_rom_entry *device_rom_region() const override; + void tube_6502_bank(address_map &map); + void tube_6502_mem(address_map &map); + + void add_common_devices(machine_config &config); + virtual DECLARE_READ8_MEMBER( host_r ) override; virtual DECLARE_WRITE8_MEMBER( host_w ) override; -private: - required_device<cpu_device> m_m6502; + virtual DECLARE_READ8_MEMBER( tube_r ); + virtual DECLARE_WRITE8_MEMBER( tube_w ); + + required_device<cpu_device> m_maincpu; + required_device<address_map_bank_device> m_bankdev; required_device<tube_device> m_ula; required_device<ram_device> m_ram; required_memory_region m_rom; +}; - bool m_rom_enabled; - DECLARE_READ8_MEMBER( read ); - DECLARE_WRITE8_MEMBER( write ); +class bbc_tube_65c102_device : public bbc_tube_6502_device +{ +public: + bbc_tube_65c102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void tube_6502_mem(address_map &map); +protected: + // optional information overrides + virtual void device_add_mconfig(machine_config &config) override; + virtual const tiny_rom_entry *device_rom_region() const override; }; // device type definition DECLARE_DEVICE_TYPE(BBC_TUBE_6502, bbc_tube_6502_device) +DECLARE_DEVICE_TYPE(BBC_TUBE_65C102, bbc_tube_65c102_device) #endif /* MAME_BUS_BBC_TUBE_6502_H */ diff --git a/src/devices/bus/bbc/tube/tube_65c102.cpp b/src/devices/bus/bbc/tube/tube_65c102.cpp deleted file mode 100644 index 1ef92732526..00000000000 --- a/src/devices/bus/bbc/tube/tube_65c102.cpp +++ /dev/null @@ -1,157 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nigel Barnes -/********************************************************************** - - Acorn ADC06 65C102 Co-processor - - http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ADC06_65C102CoPro.html - -**********************************************************************/ - - -#include "emu.h" -#include "tube_65c102.h" -#include "softlist_dev.h" - - -//************************************************************************** -// DEVICE DEFINITIONS -//************************************************************************** - -DEFINE_DEVICE_TYPE(BBC_TUBE_65C102, bbc_tube_65c102_device, "bbc_tube_65c102", "Acorn 65C102 Co-Processor") - - -//------------------------------------------------- -// ADDRESS_MAP( tube_6502_mem ) -//------------------------------------------------- - -void bbc_tube_65c102_device::tube_6502_mem(address_map &map) -{ - map(0x0000, 0xffff).rw(FUNC(bbc_tube_65c102_device::read), FUNC(bbc_tube_65c102_device::write)); -} - -//------------------------------------------------- -// ROM( tube_65c102 ) -//------------------------------------------------- - -ROM_START( tube_65c102 ) - ROM_REGION(0x1000, "rom", 0) - ROM_LOAD("65c102_boot_110.rom", 0x0000, 0x1000, CRC(ad5b70cc) SHA1(0ac9a1c70e55a79e2c81e102afae1d016af229fa)) // 2201,243-02 -ROM_END - -//------------------------------------------------- -// device_add_mconfig - add device configuration -//------------------------------------------------- - -void bbc_tube_65c102_device::device_add_mconfig(machine_config &config) -{ - M65C02(config, m_maincpu, 16_MHz_XTAL / 4); - m_maincpu->set_addrmap(AS_PROGRAM, &bbc_tube_65c102_device::tube_6502_mem); - - TUBE(config, m_ula); - m_ula->pnmi_handler().set_inputline(m_maincpu, M65C02_NMI_LINE); - m_ula->pirq_handler().set_inputline(m_maincpu, M65C02_IRQ_LINE); - - /* internal ram */ - RAM(config, m_ram).set_default_size("64K").set_default_value(0); - - /* software lists */ - SOFTWARE_LIST(config, "flop_ls_6502").set_original("bbc_flop_6502"); - SOFTWARE_LIST(config, "flop_ls_65c102").set_original("bbc_flop_65c102"); -} - -//------------------------------------------------- -// rom_region - device-specific ROM region -//------------------------------------------------- - -const tiny_rom_entry *bbc_tube_65c102_device::device_rom_region() const -{ - return ROM_NAME( tube_65c102 ); -} - -//************************************************************************** -// LIVE DEVICE -//************************************************************************** - -//------------------------------------------------- -// bbc_tube_65c102_device - constructor -//------------------------------------------------- - -bbc_tube_65c102_device::bbc_tube_65c102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, BBC_TUBE_65C102, tag, owner, clock), - device_bbc_tube_interface(mconfig, *this), - m_maincpu(*this, "maincpu"), - m_ula(*this, "ula"), - m_ram(*this, "ram"), - m_rom(*this, "rom"), - m_rom_enabled(true) -{ -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void bbc_tube_65c102_device::device_start() -{ - m_slot = dynamic_cast<bbc_tube_slot_device *>(owner()); -} - -//------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void bbc_tube_65c102_device::device_reset() -{ - m_ula->reset(); - - m_rom_enabled = true; -} - - -//************************************************************************** -// IMPLEMENTATION -//************************************************************************** - -READ8_MEMBER(bbc_tube_65c102_device::host_r) -{ - return m_ula->host_r(space, offset); -} - -WRITE8_MEMBER(bbc_tube_65c102_device::host_w) -{ - m_ula->host_w(space, offset, data); -} - - -READ8_MEMBER(bbc_tube_65c102_device::read) -{ - uint8_t data; - - if ((offset >= 0xfef0) && (offset <= 0xfeff)) - { - if (!machine().side_effects_disabled()) m_rom_enabled = false; - data = m_ula->parasite_r(space, offset); - } - else if (m_rom_enabled && (offset >= 0xf000)) - { - data = m_rom->base()[offset & 0xfff]; - } - else - { - data = m_ram->pointer()[offset]; - } - return data; -} - -WRITE8_MEMBER(bbc_tube_65c102_device::write) -{ - if ((offset >= 0xfef0) && (offset <= 0xfeff)) - { - m_ula->parasite_w(space, offset, data); - } - else - { - m_ram->pointer()[offset] = data; - } -} diff --git a/src/devices/bus/bbc/tube/tube_65c102.h b/src/devices/bus/bbc/tube/tube_65c102.h deleted file mode 100644 index 1ba891739d1..00000000000 --- a/src/devices/bus/bbc/tube/tube_65c102.h +++ /dev/null @@ -1,66 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nigel Barnes -/********************************************************************** - - Acorn ADC06 65C102 Co-processor - - http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_ADC06_65C102CoPro.html - -**********************************************************************/ - - -#ifndef MAME_BUS_BBC_TUBE_65C102_H -#define MAME_BUS_BBC_TUBE_65C102_H - -#include "tube.h" -#include "cpu/m6502/m65c02.h" -#include "machine/ram.h" -#include "machine/tube.h" - -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** - -// ======================> bbc_tube_65c102_device - -class bbc_tube_65c102_device : - public device_t, - public device_bbc_tube_interface -{ -public: - // construction/destruction - bbc_tube_65c102_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - // optional information overrides - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - - virtual DECLARE_READ8_MEMBER( host_r ) override; - virtual DECLARE_WRITE8_MEMBER( host_w ) override; - -private: - required_device<cpu_device> m_maincpu; - required_device<tube_device> m_ula; - required_device<ram_device> m_ram; - required_memory_region m_rom; - - bool m_rom_enabled; - - DECLARE_READ8_MEMBER( read ); - DECLARE_WRITE8_MEMBER( write ); - - void tube_6502_mem(address_map &map); -}; - - - -// device type definition -DECLARE_DEVICE_TYPE(BBC_TUBE_65C102, bbc_tube_65c102_device) - - -#endif /* MAME_BUS_BBC_TUBE_65C102_H */ diff --git a/src/mame/drivers/hazl1420.cpp b/src/mame/drivers/hazl1420.cpp index f349d9910ec..a3ce1410f88 100644 --- a/src/mame/drivers/hazl1420.cpp +++ b/src/mame/drivers/hazl1420.cpp @@ -24,6 +24,7 @@ public: , m_bankdev(*this, "bankdev") , m_ioexp(*this, "ioexp%u", 0U) , m_crtc(*this, "crtc") + , m_keys(*this, "KEY%u", 0U) { } @@ -36,6 +37,10 @@ private: void p1_w(u8 data); u8 p2_r(); void p2_w(u8 data); + void crtc_w(offs_t offset, u8 data); + void p7_w(u8 data); + + u8 key_r(); void prog_map(address_map &map); void io_map(address_map &map); @@ -47,6 +52,7 @@ private: required_device<address_map_bank_device> m_bankdev; required_device_array<i8243_device, 2> m_ioexp; required_device<dp8350_device> m_crtc; + required_ioport_array<10> m_keys; }; void hazl1420_state::p1_w(u8 data) @@ -64,7 +70,22 @@ u8 hazl1420_state::p2_r() void hazl1420_state::p2_w(u8 data) { - m_bankdev->set_bank(data & 0x0f); + m_bankdev->set_bank((data & 0xe0) >> 1 | (data & 0x0f)); +} + +void hazl1420_state::crtc_w(offs_t offset, u8 data) +{ + m_crtc->register_load(offset >> 12, offset & 0xfff); +} + +void hazl1420_state::p7_w(u8 data) +{ +} + +u8 hazl1420_state::key_r() +{ + u8 row = m_maincpu->p1_r() & 0x0f; + return (row < 10) ? m_keys[row]->read() : 0xff; } void hazl1420_state::prog_map(address_map &map) @@ -79,9 +100,10 @@ void hazl1420_state::io_map(address_map &map) void hazl1420_state::bank_map(address_map &map) { - map(0x000, 0x7ff).ram().share("videoram"); - map(0x800, 0x807).mirror(0x10).rw("ace", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); - map(0xc48, 0xc48).ram(); + map(0x0000, 0x07ff).ram().share("videoram"); + map(0x0800, 0x0807).mirror(0x10).rw("ace", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0x0c00, 0x0cff).ram(); // optional input buffer? + map(0x4000, 0x7fff).w(FUNC(hazl1420_state::crtc_w)); } void hazl1420_state::machine_start() @@ -94,17 +116,109 @@ u32 hazl1420_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, c } static INPUT_PORTS_START(hazl1420) + PORT_START("KEY0") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) PORT_CODE(KEYCODE_0_PAD) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) PORT_CODE(KEYCODE_1_PAD) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) PORT_CODE(KEYCODE_2_PAD) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_CODE(KEYCODE_3_PAD) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) PORT_CODE(KEYCODE_4_PAD) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) PORT_CODE(KEYCODE_5_PAD) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_CODE(KEYCODE_MINUS_PAD) + + PORT_START("KEY1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) PORT_CODE(KEYCODE_6_PAD) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) PORT_CODE(KEYCODE_7_PAD) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) PORT_CODE(KEYCODE_8_PAD) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) PORT_CODE(KEYCODE_9_PAD) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD)) PORT_CODE(KEYCODE_COMMA_PAD) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CODE(KEYCODE_DEL_PAD) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD)) PORT_CODE(KEYCODE_ENTER_PAD) + + PORT_START("KEY2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('1') PORT_CHAR('!') PORT_CODE(KEYCODE_1) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('2') PORT_CHAR('@') PORT_CODE(KEYCODE_2) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('3') PORT_CHAR('#') PORT_CODE(KEYCODE_3) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('4') PORT_CHAR('$') PORT_CODE(KEYCODE_4) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('5') PORT_CHAR('%') PORT_CODE(KEYCODE_5) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('6') PORT_CHAR('^') PORT_CODE(KEYCODE_6) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('7') PORT_CHAR('&') PORT_CODE(KEYCODE_7) + + PORT_START("KEY3") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('q') PORT_CHAR('Q') PORT_CODE(KEYCODE_Q) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('w') PORT_CHAR('W') PORT_CODE(KEYCODE_W) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('e') PORT_CHAR('E') PORT_CODE(KEYCODE_E) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('r') PORT_CHAR('R') PORT_CODE(KEYCODE_R) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('t') PORT_CHAR('T') PORT_CODE(KEYCODE_T) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('y') PORT_CHAR('Y') PORT_CODE(KEYCODE_Y) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('u') PORT_CHAR('U') PORT_CODE(KEYCODE_U) + + PORT_START("KEY4") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('a') PORT_CHAR('A') PORT_CODE(KEYCODE_A) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('s') PORT_CHAR('S') PORT_CODE(KEYCODE_S) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('d') PORT_CHAR('D') PORT_CODE(KEYCODE_D) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('f') PORT_CHAR('F') PORT_CODE(KEYCODE_F) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('g') PORT_CHAR('G') PORT_CODE(KEYCODE_G) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('h') PORT_CHAR('H') PORT_CODE(KEYCODE_H) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('j') PORT_CHAR('J') PORT_CODE(KEYCODE_J) + + PORT_START("KEY5") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('z') PORT_CHAR('Z') PORT_CODE(KEYCODE_Z) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('x') PORT_CHAR('X') PORT_CODE(KEYCODE_X) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('c') PORT_CHAR('C') PORT_CODE(KEYCODE_C) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('v') PORT_CHAR('V') PORT_CODE(KEYCODE_V) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('b') PORT_CHAR('B') PORT_CODE(KEYCODE_B) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('n') PORT_CHAR('N') PORT_CODE(KEYCODE_N) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('m') PORT_CHAR('M') PORT_CODE(KEYCODE_M) + + PORT_START("KEY6") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('=') PORT_CHAR('+') PORT_CODE(KEYCODE_EQUALS) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('8') PORT_CHAR('*') PORT_CODE(KEYCODE_8) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('9') PORT_CHAR('(') PORT_CODE(KEYCODE_9) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('0') PORT_CHAR(')') PORT_CODE(KEYCODE_0) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('-') PORT_CHAR('_') PORT_CODE(KEYCODE_MINUS) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(0x08) PORT_CODE(KEYCODE_BACKSPACE) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('`') PORT_CHAR('~') PORT_CODE(KEYCODE_TILDE) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) + + PORT_START("KEY7") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(']') PORT_CHAR('}') PORT_CODE(KEYCODE_CLOSEBRACE) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('i') PORT_CHAR('I') PORT_CODE(KEYCODE_I) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('o') PORT_CHAR('O') PORT_CODE(KEYCODE_O) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('p') PORT_CHAR('P') PORT_CODE(KEYCODE_P) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('[') PORT_CHAR('{') PORT_CODE(KEYCODE_OPENBRACE) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('\\') PORT_CHAR('|') PORT_CODE(KEYCODE_BACKSLASH) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("KEY8") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CHAR(0x0d) PORT_CODE(KEYCODE_ENTER) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('k') PORT_CHAR('K') PORT_CODE(KEYCODE_K) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('l') PORT_CHAR('L') PORT_CODE(KEYCODE_L) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(';') PORT_CHAR(':') PORT_CODE(KEYCODE_COLON) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('\'') PORT_CHAR('"') PORT_CODE(KEYCODE_QUOTE) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(' ') PORT_CODE(KEYCODE_SPACE) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(0x1b) PORT_CODE(KEYCODE_RALT) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN) + + PORT_START("KEY9") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LF") PORT_CHAR(0x0a) PORT_CODE(KEYCODE_INSERT) + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR(',') PORT_CHAR('<') PORT_CODE(KEYCODE_COMMA) + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('.') PORT_CHAR('>') PORT_CODE(KEYCODE_STOP) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHAR('/') PORT_CHAR('/') PORT_CODE(KEYCODE_SLASH) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Del") PORT_CHAR(0x7f) PORT_CODE(KEYCODE_DEL) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) + // DIP switches are on access panel above keyboard // "SW1" and "SW2" are not actual names - PORT_START("UNUSED") - PORT_DIPNAME(0x1, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING(0x1, DEF_STR(Off)) - PORT_DIPSETTING(0x0, DEF_STR(On)) - PORT_DIPNAME(0x2, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW1:2") - PORT_DIPSETTING(0x2, DEF_STR(Off)) - PORT_DIPSETTING(0x0, DEF_STR(On)) - PORT_START("INP4") PORT_DIPNAME(0x7, 0x6, "Baud Rate") PORT_DIPLOCATION("SW1:3,4,5") PORT_DIPSETTING(0x0, "110") @@ -131,9 +245,9 @@ static INPUT_PORTS_START(hazl1420) PORT_BIT(0x8, IP_ACTIVE_LOW, IPT_UNUSED) PORT_START("INP6") - PORT_DIPNAME(0x1, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING(0x1, DEF_STR(Off)) - PORT_DIPSETTING(0x0, DEF_STR(On)) + PORT_DIPNAME(0x1, 0x0, "Cursor") PORT_DIPLOCATION("SW2:2") + PORT_DIPSETTING(0x0, "Wraparound") + PORT_DIPSETTING(0x1, "No Wrap") PORT_DIPNAME(0x2, 0x2, "On Line") PORT_DIPLOCATION("SW2:7") PORT_DIPSETTING(0x2, DEF_STR(Off)) PORT_DIPSETTING(0x0, DEF_STR(On)) @@ -148,13 +262,23 @@ static INPUT_PORTS_START(hazl1420) PORT_DIPNAME(0x1, 0x1, "Font") PORT_DIPLOCATION("SW2:4") PORT_DIPSETTING(0x1, "Upper/Lower Case") PORT_DIPSETTING(0x0, "Upper Case Only") - PORT_DIPNAME(0x2, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW2:3") + PORT_BIT(0x2, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("All Caps") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE + PORT_BIT(0x4, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) + PORT_BIT(0x8, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) + + PORT_START("UNUSED") + PORT_DIPNAME(0x1, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW1:1") + PORT_DIPSETTING(0x1, DEF_STR(Off)) + PORT_DIPSETTING(0x0, DEF_STR(On)) + PORT_DIPNAME(0x2, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW1:2") PORT_DIPSETTING(0x2, DEF_STR(Off)) PORT_DIPSETTING(0x0, DEF_STR(On)) - PORT_DIPNAME(0x4, 0x0, "Cursor") PORT_DIPLOCATION("SW2:2") - PORT_DIPSETTING(0x0, "Wraparound") - PORT_DIPSETTING(0x4, "No Wrap") - PORT_BIT(0x8, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_DIPNAME(0x4, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW2:3") + PORT_DIPSETTING(0x4, DEF_STR(Off)) + PORT_DIPSETTING(0x0, DEF_STR(On)) + PORT_DIPNAME(0x8, 0x0, DEF_STR(Unused)) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING(0x8, DEF_STR(Off)) + PORT_DIPSETTING(0x0, DEF_STR(On)) INPUT_PORTS_END void hazl1420_state::hazl1420(machine_config &config) @@ -174,14 +298,17 @@ void hazl1420_state::hazl1420(machine_config &config) ADDRESS_MAP_BANK(config, m_bankdev); m_bankdev->set_addrmap(0, &hazl1420_state::bank_map); m_bankdev->set_data_width(8); - m_bankdev->set_addr_width(12); + m_bankdev->set_addr_width(15); m_bankdev->set_stride(0x100); I8243(config, m_ioexp[0]); m_ioexp[0]->p4_in_cb().set_ioport("INP4"); m_ioexp[0]->p5_in_cb().set_ioport("INP5"); + m_ioexp[0]->p7_out_cb().set(FUNC(hazl1420_state::p7_w)); I8243(config, m_ioexp[1]); + m_ioexp[1]->p4_in_cb().set(FUNC(hazl1420_state::key_r)); + m_ioexp[1]->p5_in_cb().set(FUNC(hazl1420_state::key_r)).rshift(4); m_ioexp[1]->p6_in_cb().set_ioport("INP6"); m_ioexp[1]->p7_in_cb().set_ioport("INP7"); diff --git a/src/mame/drivers/video21.cpp b/src/mame/drivers/video21.cpp index 9876549c711..0aec7123081 100644 --- a/src/mame/drivers/video21.cpp +++ b/src/mame/drivers/video21.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Robbbert +// copyright-holders:Robbbert, hap /**************************************************************************************** 2018-09-15 @@ -13,11 +13,11 @@ The game has sound (there's a LM380N visible), looks like there's a bunch of TTL involved, and a 555. To Do: -- Sound +- improve sound, it's definitely beeper pitch control, but sounds offtune +- identify all dips (7 total), there should be one for amusement/casino, and probably also win chance - confirm CPU clock - unknown status bits? eg. hopper - color overlay as seen on flyer upright cabinet -- If you win, it hangs. This is why it's marked as GNW. When booted, press Key out (mapped to W by default) to get it going. @@ -26,8 +26,11 @@ When booted, press Key out (mapped to W by default) to get it going. #include "emu.h" #include "cpu/i8085/i8085.h" #include "machine/nvram.h" +#include "sound/beep.h" + #include "screen.h" #include "emupal.h" +#include "speaker.h" #include "video21.lh" @@ -39,6 +42,7 @@ public: , m_maincpu(*this,"maincpu") , m_p_videoram(*this, "videoram") , m_p_chargen(*this, "chargen") + , m_beeper(*this, "beeper") , m_lamps(*this, "lamp%u", 0U) { } @@ -55,10 +59,11 @@ private: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void mem_map(address_map &map); void io_map(address_map &map); + required_device<cpu_device> m_maincpu; required_shared_ptr<u8> m_p_videoram; required_region_ptr<u8> m_p_chargen; - + optional_device<beep_device> m_beeper; output_finder<24> m_lamps; }; @@ -97,8 +102,9 @@ uint32_t video21_state::screen_update(screen_device &screen, bitmap_ind16 &bitma WRITE8_MEMBER(video21_state::sound_w) { - // seems like sound beeper pitch (FF is off) - logerror("%s: sound_w %02x\n", machine().describe_context(), data); + // beeper pitch + m_beeper->set_state(data != 0xff); // FF is off + m_beeper->set_clock(4 * data); } WRITE8_MEMBER(video21_state::lamp1_w) @@ -133,7 +139,7 @@ void video21_state::io_map(address_map &map) { static INPUT_PORTS_START( video21 ) - PORT_START("IN41") // dips and tilt + PORT_START("IN41") PORT_DIPNAME( 0x01, 0x01, "41b0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -181,12 +187,8 @@ static INPUT_PORTS_START( video21 ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) - PORT_DIPNAME( 0x20, 0x20, "44b5" ) // double or nothing? - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "44b6" ) // take winnings? - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Double Or Nothing") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Accept") // transfer winnings to credits PORT_DIPNAME( 0x80, 0x80, "Max Bet" ) PORT_DIPSETTING( 0x80, "10" ) PORT_DIPSETTING( 0x00, "2" ) @@ -235,7 +237,8 @@ void video21_state::video21(machine_config &config) PALETTE(config, "palette", 2).set_init("palette", FUNC(palette_device::palette_init_monochrome)); /* sound hardware */ - // TODO + SPEAKER(config, "mono").front_center(); + BEEP(config, m_beeper, 0).add_route(ALL_OUTPUTS, "mono", 0.25); } @@ -256,4 +259,4 @@ ROM_START( video21 ) ROM_LOAD_NIB_LOW ( "43", 0x0000, 0x0400, CRC(0ecb0aab) SHA1(7f3f1b93a5d38828ae3e97e5f8ef1a6a96dc798b) ) ROM_END -GAMEL(1980?, video21, 0, video21, video21, video21_state, empty_init, ROT0, "Video Games GmbH", "Video 21", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_video21) +GAMEL(1980?, video21, 0, video21, video21, video21_state, empty_init, ROT0, "Video Games GmbH", "Video 21", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_video21) diff --git a/src/mame/layout/video21.lay b/src/mame/layout/video21.lay index cee8648d47c..5fb8ef2d20a 100644 --- a/src/mame/layout/video21.lay +++ b/src/mame/layout/video21.lay @@ -40,27 +40,40 @@ </text> </element> - <element name="Out0_04" defstate="0"> + <element name="Out1_20" defstate="0"> <rect state="1"> <color red="0.80" green="0.80" blue="0.80" /> </rect> <rect state="0"> <color red="0.10" green="0.10" blue="0.10" /> </rect> - <text string="Cabinet?"> + <text string="Bet"> <color red="0.0" green="0.0" blue="0.0" /> <bounds x="0.1" y="0.25" width="0.8" height="0.5" /> </text> </element> - <element name="Out1_20" defstate="0"> + <element name="Out1_40" defstate="0"> <rect state="1"> <color red="0.80" green="0.80" blue="0.80" /> </rect> <rect state="0"> <color red="0.10" green="0.10" blue="0.10" /> </rect> - <text string="Bet"> + <text string="Accept"> + <color red="0.0" green="0.0" blue="0.0" /> + <bounds x="0.1" y="0.25" width="0.8" height="0.5" /> + </text> + </element> + + <element name="Out1_80" defstate="0"> + <rect state="1"> + <color red="0.80" green="0.80" blue="0.80" /> + </rect> + <rect state="0"> + <color red="0.10" green="0.10" blue="0.10" /> + </rect> + <text string="Double"> <color red="0.0" green="0.0" blue="0.0" /> <bounds x="0.1" y="0.25" width="0.8" height="0.5" /> </text> @@ -72,17 +85,23 @@ <bounds left="0" top="0" right="4" bottom="3" /> </screen> - <bezel name="lamp0" element="Out0_80" inputtag="IN42" inputmask="0x04"> + <bezel name="lamp10" element="Out1_20" inputtag="IN44" inputmask="0x10"> <bounds x="0.00" y="3.10" width="0.20" height="0.14" /> </bezel> - <bezel name="lamp1" element="Out0_40" inputtag="IN42" inputmask="0x08"> + <bezel name="lamp0" element="Out0_80" inputtag="IN42" inputmask="0x04"> <bounds x="0.25" y="3.10" width="0.20" height="0.14" /> </bezel> - <bezel name="lamp2" element="Out0_20" inputtag="IN42" inputmask="0x10"> + <bezel name="lamp1" element="Out0_40" inputtag="IN42" inputmask="0x08"> <bounds x="0.50" y="3.10" width="0.20" height="0.14" /> </bezel> - <bezel name="lamp10" element="Out1_20" inputtag="IN44" inputmask="0x10"> - <bounds x="2.50" y="3.10" width="0.20" height="0.14" /> + <bezel name="lamp2" element="Out0_20" inputtag="IN42" inputmask="0x10"> + <bounds x="0.75" y="3.10" width="0.20" height="0.14" /> + </bezel> + <bezel name="lamp8" element="Out1_40" inputtag="IN44" inputmask="0x40"> + <bounds x="1.00" y="3.10" width="0.20" height="0.14" /> + </bezel> + <bezel name="lamp9" element="Out1_80" inputtag="IN44" inputmask="0x20"> + <bounds x="1.25" y="3.10" width="0.20" height="0.14" /> </bezel> </view> |