summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/devices/bus/intellec4/insdatastor.cpp199
-rw-r--r--src/devices/bus/intellec4/insdatastor.h189
-rw-r--r--src/devices/bus/intellec4/intellec4.cpp6
-rw-r--r--src/devices/bus/intellec4/prommemory.cpp122
-rw-r--r--src/devices/bus/intellec4/prommemory.h116
-rw-r--r--src/devices/bus/intellec4/tapereader.cpp59
-rw-r--r--src/devices/bus/intellec4/tapereader.h53
-rw-r--r--src/devices/bus/mackbd/mackbd.cpp5
-rw-r--r--src/devices/bus/ti8x/bitsocket.cpp44
-rw-r--r--src/devices/bus/ti8x/bitsocket.h44
-rw-r--r--src/devices/bus/ti8x/graphlinkhle.cpp45
-rw-r--r--src/devices/bus/ti8x/graphlinkhle.h45
-rw-r--r--src/devices/bus/ti8x/teeconn.cpp34
-rw-r--r--src/devices/bus/ti8x/teeconn.h34
-rw-r--r--src/devices/bus/ti8x/ti8x.cpp6
-rw-r--r--src/devices/bus/ti8x/tispeaker.cpp149
-rw-r--r--src/devices/bus/ti8x/tispeaker.h45
-rw-r--r--src/emu/emumem_hedr.ipp2
-rw-r--r--src/emu/emumem_hedw.ipp2
-rw-r--r--src/mame/drivers/ampoker2.cpp117
-rw-r--r--src/mame/drivers/fidel_cc10.cpp13
-rw-r--r--src/mame/drivers/fidel_checkc2.cpp250
-rw-r--r--src/mame/drivers/fidel_dames.cpp2
-rw-r--r--src/mame/drivers/fidel_vsc.cpp17
-rw-r--r--src/mame/drivers/hh_ucom4.cpp2
-rw-r--r--src/mame/drivers/mrgame.cpp121
-rw-r--r--src/mame/drivers/peyper.cpp1
-rw-r--r--src/mame/drivers/radio86.cpp2
-rw-r--r--src/mame/includes/partner.h10
-rw-r--r--src/mame/includes/radio86.h9
-rw-r--r--src/mame/layout/fidel_cr.lay174
-rw-r--r--src/mame/machine/partner.cpp8
-rw-r--r--src/mame/machine/radio86.cpp5
-rw-r--r--src/mame/mame.lst10
-rw-r--r--src/mame/mess.flt1
36 files changed, 1182 insertions, 760 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index fd82596382a..fdde1dd8cb4 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -2457,6 +2457,7 @@ files {
MAME_DIR .. "src/mame/drivers/fidel_cc1.cpp",
MAME_DIR .. "src/mame/drivers/fidel_cc10.cpp",
MAME_DIR .. "src/mame/drivers/fidel_cc7.cpp",
+ MAME_DIR .. "src/mame/drivers/fidel_checkc2.cpp",
MAME_DIR .. "src/mame/drivers/fidel_chesster.cpp",
MAME_DIR .. "src/mame/drivers/fidel_csc.cpp",
MAME_DIR .. "src/mame/drivers/fidel_dames.cpp",
diff --git a/src/devices/bus/intellec4/insdatastor.cpp b/src/devices/bus/intellec4/insdatastor.cpp
index 55086054dcb..b52c3815857 100644
--- a/src/devices/bus/intellec4/insdatastor.cpp
+++ b/src/devices/bus/intellec4/insdatastor.cpp
@@ -1,15 +1,147 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
+/*
+imm4-22 Instruction/Data Storage Module
+
+This card has four 4002 RAMs configured as a page, sockets for four
+1702A or similar 256×8 PROMs configured as a ROM page, buffers for four
+4-bit input ports, and latches for four 4-bit output ports.
+
+The 4002 RAMs may be jumpered to be selected by CM-RAM1, CM-RAM2 or
+CM-RAM3. Note that the CM-RAM lines are not decoded, so the 4002 RAMs
+will be mirrored. (With two or more imm4-22 cards installed, the 4002
+RAMs will fight for the bus if pages 4-7 are selected.)
+
+The PROMs and I/O ports may be jumpered to be mapped at 0x04xx...0x07xx,
+0x08xx...0x0bff or 0x0cff...0x0fff. Additionally, the card may be
+jumpered to enable the PROMs and I/O ports only when /ENABLE MON PROM is
+asserted, or at all times.
+
+This card may seem like a good way to expand three aspects of the system
+at once, but in practice the PROMs are of limited use:
+* If jumpered to enable the PROMs at all times, the PROMs will fight for
+ the bus if console RAM card program storage is selected.
+* If jumpered to enable the PROMs only when /ENABLE MON PROM is
+ asserted, the PROMs become effectively inaccessible as the boot vector
+ is in the onboard monitor PROM region, and the onboard monitor PROM
+ program provides no way to jump to or read from arbitrary locations.
+
+This card was probably most useful as the cheapest way to double RAM and
+I/O ports. Without PROMs installed, mapping I/O at 0x0400...0x07ff only
+when /ENABLE MON PROM is asserted would be a convenient way to provide
+the necessary connections for an imm4-90 high-speed paper tape reader.
+
+Image file for the PROMs must be an exact multiple of 256 bytes. PROMs
+are assumed to be filled in order from lowest to highest address.
+Jumper changes only take effect on hard reset.
+
+
+P1 Universal Slot edge connector
+
+ 1 2
+ GND 3 4 GND
+ 5 6
+ 7 8
+ 9 10
+ MA0 11 12 MA1
+ MA2 13 14 MA3
+ MA4 15 16 MA5
+ MA6 17 18 MA7
+ C0 19 20 C1
+ 21 22
+ /MDI0 23 24
+ /MDI1 25 26
+ /MDI3 27 28
+ /MDI2 29 30
+ /MDI5 31 32
+ /MDI4 33 34
+ /MDI7 35 36
+ /MDI6 37 38
+ 39 40
+ /OUT 41 42 /ENABLE MON PROM
+ -10V 43 44 -10V
+ 45 46
+ /CM-RAM2 47 48 /CM-RAM3
+ 49 50 /CM-RAM1
+ I/O 1 51 52 I/O 0
+ I/O 2 53 54 /IN
+ 55 56 I/O 3
+ 57 58
+ 59 60
+ 61 62
+ 63 64
+ 65 66
+ 67 68
+ 69 70
+ 71 72 /D3
+ 73 74
+ 75 76 /D2
+ 77 78
+ /SYNC 79 80 /D1
+ 81 82
+ /D0 83 84
+ 85 86
+ 87 88 /RESET-4002
+ 89 90
+ 91 92
+ /CM-ROM 93 94 C3
+ 95 96 C2
+ PHASE 2 97 98 PHASE 1
+ +5V 99 100 +5V
+
+
+P1 inputs (40-pin IDC)
+
+ ROM 4/8/12 IN0 1 2 ROM 4/8/12 IN1
+ ROM 4/8/12 IN2 3 4 ROM 4/8/12 IN3
+ GND 5 6 ROM 5/9/13 IN0
+ ROM 5/9/13 IN1 7 8 ROM 5/9/13 IN2
+ ROM 5/9/13 IN3 9 10 GND
+ ROM 6/10/14 IN0 11 12 ROM 6/10/14 IN1
+ ROM 6/10/14 IN2 13 14 ROM 6/10/14 IN3
+ GND 15 16 ROM 7/11/15 IN0
+ ROM 7/11/15 IN1 17 18 ROM 7/11/15 IN2
+ ROM 7/11/15 IN3 19 20 GND
+ 21 22
+ 23 24
+ 25 26
+ 27 28
+ 29 30
+ 31 32
+ 33 34
+ 35 36
+ 37 38
+ 39 40
+
+
+P2 outputs (40-pin IDC)
+
+ ROM 4/8/12 OUT0 1 2 ROM 4/8/12 OUT1
+ ROM 4/8/12 OUT2 3 4 ROM 4/8/12 OUT3
+ GND 5 6 ROM 5/9/13 OUT0
+ ROM 5/9/13 OUT1 7 8 ROM 5/9/13 OUT2
+ ROM 5/9/13 OUT3 9 10 GND
+ ROM 6/10/14 OUT0 11 12 ROM 6/10/14 OUT1
+ ROM 6/10/14 OUT2 13 14 ROM 6/10/14 OUT3
+ GND 15 16 ROM 7/11/15 OUT0
+ ROM 7/11/15 OUT1 17 18 ROM 7/11/15 OUT2
+ ROM 7/11/15 OUT3 19 20 GND
+ RAM 4/8/12 OUT0 21 22 RAM 4/8/12 OUT1
+ RAM 4/8/12 OUT2 23 24 RAM 4/8/12 OUT3
+ GND 25 26 RAM 5/9/13 OUT0
+ RAM 5/9/13 OUT1 27 28 RAM 5/9/13 OUT2
+ RAM 5/9/13 OUT3 29 30 GND
+ RAM 6/10/14 OUT0 31 32 RAM 6/10/14 OUT1
+ RAM 6/10/14 OUT2 33 34 RAM 6/10/14 OUT3
+ GND 35 36 RAM 7/11/15 OUT0
+ RAM 7/11/15 OUT1 37 38 RAM 7/11/15 OUT2
+ RAM 7/11/15 OUT3 39 40 GND
+*/
#include "emu.h"
#include "insdatastor.h"
-DEFINE_DEVICE_TYPE(INTELLEC4_INST_DATA_STORAGE, bus::intellec4::imm4_22_device, "intlc4_imm4_22", "Intel imm4-22 Instruction/Data Storage Module")
-
-
-namespace bus::intellec4 {
-
namespace {
INPUT_PORTS_START(imm4_22)
@@ -27,12 +159,60 @@ INPUT_PORTS_START(imm4_22)
PORT_CONFSETTING( 0x10, "MON only" )
INPUT_PORTS_END
-} // anonymous namespace
+
+class imm4_22_device
+ : public device_t
+ , public bus::intellec4::device_univ_card_interface
+ , public device_image_interface
+{
+public:
+ imm4_22_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+
+ virtual image_init_result call_load() override;
+ virtual void call_unload() override;
+
+ virtual iodevice_t image_type() const noexcept override { return IO_ROM; }
+ virtual bool is_readable() const noexcept override { return true; }
+ virtual bool is_writeable() const noexcept override { return false; }
+ virtual bool is_creatable() const noexcept override { return false; }
+ virtual bool must_be_loaded() const noexcept override { return false; }
+ virtual bool is_reset_on_load() const noexcept override { return false; }
+ virtual char const *file_extensions() const noexcept override { return "rom,bin"; }
+ virtual char const *custom_instance_name() const noexcept override { return "promimage"; }
+ virtual char const *custom_brief_instance_name() const noexcept override { return "prom"; }
+
+protected:
+ virtual ioport_constructor device_input_ports() const override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ virtual DECLARE_WRITE_LINE_MEMBER(reset_4002_in) override;
+
+private:
+ void ram_out(offs_t offset, u8 data);
+ void rom_out(offs_t offset, u8 data);
+ u8 rom_in(offs_t offset);
+
+ void allocate();
+ void map_ram_io();
+ void map_prom();
+ void unmap_prom();
+
+ required_ioport m_jumpers;
+
+ bool m_ram_io_mapped;
+
+ u8 m_ram_page, m_rom_page;
+ bool m_rom_mirror;
+
+ u8 m_memory[256], m_status[64];
+ std::unique_ptr<u8 []> m_prom;
+};
imm4_22_device::imm4_22_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock)
: device_t(mconfig, INTELLEC4_INST_DATA_STORAGE, tag, owner, clock)
- , device_univ_card_interface(mconfig, *this)
+ , bus::intellec4::device_univ_card_interface(mconfig, *this)
, device_image_interface(mconfig, *this)
, m_jumpers(*this, "JUMPERS")
, m_ram_io_mapped(false)
@@ -188,4 +368,7 @@ void imm4_22_device::unmap_prom()
rom_space().unmap_read(offs_t(m_rom_page) << 10, (offs_t(m_rom_page) << 10) | 0x03ffU, m_rom_mirror ? 0x1000U : 0x0000U);
}
-} // namespace bus::intellec4
+} // anonymous namespace
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(INTELLEC4_INST_DATA_STORAGE, bus::intellec4::device_univ_card_interface, imm4_22_device, "intlc4_imm4_22", "Intel imm4-22 Instruction/Data Storage Module")
diff --git a/src/devices/bus/intellec4/insdatastor.h b/src/devices/bus/intellec4/insdatastor.h
index d7c83c30307..371b6a2bdc0 100644
--- a/src/devices/bus/intellec4/insdatastor.h
+++ b/src/devices/bus/intellec4/insdatastor.h
@@ -1,142 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-/*
-imm4-22 Instruction/Data Storage Module
-
-This card has four 4002 RAMs configured as a page, sockets for four
-1702A or similar 256×8 PROMs configured as a ROM page, buffers for four
-4-bit input ports, and latches for four 4-bit output ports.
-
-The 4002 RAMs may be jumpered to be selected by CM-RAM1, CM-RAM2 or
-CM-RAM3. Note that the CM-RAM lines are not decoded, so the 4002 RAMs
-will be mirrored. (With two or more imm4-22 cards installed, the 4002
-RAMs will fight for the bus if pages 4-7 are selected.)
-
-The PROMs and I/O ports may be jumpered to be mapped at 0x04xx...0x07xx,
-0x08xx...0x0bff or 0x0cff...0x0fff. Additionally, the card may be
-jumpered to enable the PROMs and I/O ports only when /ENABLE MON PROM is
-asserted, or at all times.
-
-This card may seem like a good way to expand three aspects of the system
-at once, but in practice the PROMs are of limited use:
-* If jumpered to enable the PROMs at all times, the PROMs will fight for
- the bus if console RAM card program storage is selected.
-* If jumpered to enable the PROMs only when /ENABLE MON PROM is
- asserted, the PROMs become effectively inaccessible as the boot vector
- is in the onboard monitor PROM region, and the onboard monitor PROM
- program provides no way to jump to or read from arbitrary locations.
-
-This card was probably most useful as the cheapest way to double RAM and
-I/O ports. Without PROMs installed, mapping I/O at 0x0400...0x07ff only
-when /ENABLE MON PROM is asserted would be a convenient way to provide
-the necessary connections for an imm4-90 high-speed paper tape reader.
-
-Image file for the PROMs must be an exact multiple of 256 bytes. PROMs
-are assumed to be filled in order from lowest to highest address.
-Jumper changes only take effect on hard reset.
-
-
-P1 Universal Slot edge connector
-
- 1 2
- GND 3 4 GND
- 5 6
- 7 8
- 9 10
- MA0 11 12 MA1
- MA2 13 14 MA3
- MA4 15 16 MA5
- MA6 17 18 MA7
- C0 19 20 C1
- 21 22
- /MDI0 23 24
- /MDI1 25 26
- /MDI3 27 28
- /MDI2 29 30
- /MDI5 31 32
- /MDI4 33 34
- /MDI7 35 36
- /MDI6 37 38
- 39 40
- /OUT 41 42 /ENABLE MON PROM
- -10V 43 44 -10V
- 45 46
- /CM-RAM2 47 48 /CM-RAM3
- 49 50 /CM-RAM1
- I/O 1 51 52 I/O 0
- I/O 2 53 54 /IN
- 55 56 I/O 3
- 57 58
- 59 60
- 61 62
- 63 64
- 65 66
- 67 68
- 69 70
- 71 72 /D3
- 73 74
- 75 76 /D2
- 77 78
- /SYNC 79 80 /D1
- 81 82
- /D0 83 84
- 85 86
- 87 88 /RESET-4002
- 89 90
- 91 92
- /CM-ROM 93 94 C3
- 95 96 C2
- PHASE 2 97 98 PHASE 1
- +5V 99 100 +5V
-
-
-P1 inputs (40-pin IDC)
-
- ROM 4/8/12 IN0 1 2 ROM 4/8/12 IN1
- ROM 4/8/12 IN2 3 4 ROM 4/8/12 IN3
- GND 5 6 ROM 5/9/13 IN0
- ROM 5/9/13 IN1 7 8 ROM 5/9/13 IN2
- ROM 5/9/13 IN3 9 10 GND
- ROM 6/10/14 IN0 11 12 ROM 6/10/14 IN1
- ROM 6/10/14 IN2 13 14 ROM 6/10/14 IN3
- GND 15 16 ROM 7/11/15 IN0
- ROM 7/11/15 IN1 17 18 ROM 7/11/15 IN2
- ROM 7/11/15 IN3 19 20 GND
- 21 22
- 23 24
- 25 26
- 27 28
- 29 30
- 31 32
- 33 34
- 35 36
- 37 38
- 39 40
-
-
-P2 outputs (40-pin IDC)
-
- ROM 4/8/12 OUT0 1 2 ROM 4/8/12 OUT1
- ROM 4/8/12 OUT2 3 4 ROM 4/8/12 OUT3
- GND 5 6 ROM 5/9/13 OUT0
- ROM 5/9/13 OUT1 7 8 ROM 5/9/13 OUT2
- ROM 5/9/13 OUT3 9 10 GND
- ROM 6/10/14 OUT0 11 12 ROM 6/10/14 OUT1
- ROM 6/10/14 OUT2 13 14 ROM 6/10/14 OUT3
- GND 15 16 ROM 7/11/15 OUT0
- ROM 7/11/15 OUT1 17 18 ROM 7/11/15 OUT2
- ROM 7/11/15 OUT3 19 20 GND
- RAM 4/8/12 OUT0 21 22 RAM 4/8/12 OUT1
- RAM 4/8/12 OUT2 23 24 RAM 4/8/12 OUT3
- GND 25 26 RAM 5/9/13 OUT0
- RAM 5/9/13 OUT1 27 28 RAM 5/9/13 OUT2
- RAM 5/9/13 OUT3 29 30 GND
- RAM 6/10/14 OUT0 31 32 RAM 6/10/14 OUT1
- RAM 6/10/14 OUT2 33 34 RAM 6/10/14 OUT3
- GND 35 36 RAM 7/11/15 OUT0
- RAM 7/11/15 OUT1 37 38 RAM 7/11/15 OUT2
- RAM 7/11/15 OUT3 39 40 GND
-*/
#ifndef MAME_BUS_INTELLEC4_INSDATASTOR_H
#define MAME_BUS_INTELLEC4_INSDATASTOR_H
@@ -144,56 +7,6 @@ P2 outputs (40-pin IDC)
#include "intellec4.h"
-namespace bus::intellec4 {
-
-class imm4_22_device : public device_t, public device_univ_card_interface, public device_image_interface
-{
-public:
- imm4_22_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
-
- virtual image_init_result call_load() override;
- virtual void call_unload() override;
-
- virtual iodevice_t image_type() const noexcept override { return IO_ROM; }
- virtual bool is_readable() const noexcept override { return true; }
- virtual bool is_writeable() const noexcept override { return false; }
- virtual bool is_creatable() const noexcept override { return false; }
- virtual bool must_be_loaded() const noexcept override { return false; }
- virtual bool is_reset_on_load() const noexcept override { return false; }
- virtual char const *file_extensions() const noexcept override { return "rom,bin"; }
- virtual char const *custom_instance_name() const noexcept override { return "promimage"; }
- virtual char const *custom_brief_instance_name() const noexcept override { return "prom"; }
-
-protected:
- virtual ioport_constructor device_input_ports() const override;
- virtual void device_start() override;
- virtual void device_reset() override;
-
- virtual DECLARE_WRITE_LINE_MEMBER(reset_4002_in) override;
-
-private:
- void ram_out(offs_t offset, u8 data);
- void rom_out(offs_t offset, u8 data);
- u8 rom_in(offs_t offset);
-
- void allocate();
- void map_ram_io();
- void map_prom();
- void unmap_prom();
-
- required_ioport m_jumpers;
-
- bool m_ram_io_mapped;
-
- u8 m_ram_page, m_rom_page;
- bool m_rom_mirror;
-
- u8 m_memory[256], m_status[64];
- std::unique_ptr<u8 []> m_prom;
-};
-
-} // namespace bus::intellec4
-
-DECLARE_DEVICE_TYPE_NS(INTELLEC4_INST_DATA_STORAGE, bus::intellec4, imm4_22_device)
+DECLARE_DEVICE_TYPE_NS(INTELLEC4_INST_DATA_STORAGE, bus::intellec4, device_univ_card_interface)
#endif // MAME_BUS_INTELLEC4_INSDATASTOR_H
diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp
index 66807166782..f1eb0934448 100644
--- a/src/devices/bus/intellec4/intellec4.cpp
+++ b/src/devices/bus/intellec4/intellec4.cpp
@@ -264,6 +264,12 @@ void device_univ_card_interface::set_bus(univ_bus_device &bus)
#include "prommemory.h"
#include "tapereader.h"
+
+// must come after including the headers that declare these extern
+template class device_finder<bus::intellec4::device_univ_card_interface, false>;
+template class device_finder<bus::intellec4::device_univ_card_interface, true>;
+
+
void intellec4_univ_cards(device_slot_interface &device)
{
device.option_add("imm4_22", INTELLEC4_INST_DATA_STORAGE);
diff --git a/src/devices/bus/intellec4/prommemory.cpp b/src/devices/bus/intellec4/prommemory.cpp
index e297006f241..74b75ec79a8 100644
--- a/src/devices/bus/intellec4/prommemory.cpp
+++ b/src/devices/bus/intellec4/prommemory.cpp
@@ -1,18 +1,129 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
+/*
+imm6-26 PROM Memory Module
+
+This card has sockets for sixteen 1702A or similar 256×8 PROMs providing
+up to 4KiB of program storage. This card has additional features for
+INTELLEC 8 systems, including module select lines and DIP switches for
+mapping PROMs in place of console RAM. These features are not emulated
+by this class.
+
+In theory you could populate any combination of sockets, and use
+multiple cards provided you don't populate corresponding sockets on two
+cards. To simplify things, we assume contiguous sockets are populated
+starting with PROM 0 (A2). In practice, you'd want to populate this
+socket as the boot vector is at address zero. If you want to simulate
+unpopulated sockets, just zero the corresponding area in your image
+file.
+
+
+Universal edge connector
+
+ 1 2
+ GND 3 4 GND
+ 5 6
+ 7 8
+ 9 10
+ MAD 0 11 12 MAD 1
+ MAD 2 13 14 MAD 3
+ MAD 4 15 16 MAD 5
+ MAD 6 17 18 MAD 7
+ MAD 8 19 20 MAD 9
+ 21 22
+ MDI 0 23 24
+ MDI 1 25 26
+ MDI 3 27 28
+ MDI 2 29 30
+ MDI 5 31 32
+ MDI 4 33 34
+ MDI 7 35 36
+ MDI 6 37 38
+ 39 40
+ 41 42
+ -10V 43 44 -10V
+ 45 46
+ 47 48
+ 49 50
+ 51 52
+ 53 54
+ 55 56
+ /MAD 12 57 58 MS 12
+ MAD 13 59 60 MAD 12
+ MS 13 61 62 /MAD 13
+ /MAD 14 63 64 MS 14
+ MAD 15 65 66 MAD 14
+ MS 15 67 68 /MAD 15
+ 69 70
+ 71 72
+ 73 74
+ 75 76
+ 77 78
+ 79 80
+ 81 82 /ASMB
+ 83 84
+ 85 86
+ 87 88
+ 89 90
+ /ADR STB 91 92
+ RAM MOD ENBL 93 94 MAD 11
+ 95 96 MAD 10
+ /PROM MOD ENBL 97 98
+ +5V 99 100 +5V
+
+MAD 0...MAD 7 mapped to MA0...MA7 on INTELLEC 4
+MAD 8...MAD 11 mapped to C0...C3 on INTELLEC 4
+MAD 12...MAD 15 not used on INTELLEC 4, used for module selection on INTELLEC 8
+/MAD 12.../MAD 15 not used on INTELLEC 4, used for module selection on INTELLEC 8
+MS 12...MS 15 not used on INTELLEC 4, used for module selection on INTELLEC 8
+MDI 0...7 data outputs
+/ASMB global enable mapped to /PROM SEL on INTELLEC 4, not jumpered in on INTELLEC 8
+/ADR STB not jumpered in on INTELLEC 4 and INTELLEC 8, latch enables jumpered to GND
+RAM MOD ENBL not jumpered in on INTELLEC 4, allows PROM to overlay RAM on INTELLEC 8
+/PROM MOD ENBL not jumpered in on INTELLEC 4, used as global enable on INTELLEC 8
+*/
#include "emu.h"
#include "prommemory.h"
-DEFINE_DEVICE_TYPE(INTELLEC4_PROM_MEMORY, bus::intellec4::imm6_26_device, "intlc4_imm6_26", "Intel imm6-26 PROM Memory Module")
+namespace {
+class imm6_26_device
+ : public device_t
+ , public bus::intellec4::device_univ_card_interface
+ , public device_image_interface
+{
+public:
+ imm6_26_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+
+ virtual image_init_result call_load() override;
+ virtual void call_unload() override;
+
+ virtual iodevice_t image_type() const noexcept override { return IO_ROM; }
+ virtual bool is_readable() const noexcept override { return true; }
+ virtual bool is_writeable() const noexcept override { return false; }
+ virtual bool is_creatable() const noexcept override { return false; }
+ virtual bool must_be_loaded() const noexcept override { return false; }
+ virtual bool is_reset_on_load() const noexcept override { return false; }
+ virtual char const *file_extensions() const noexcept override { return "rom,bin"; }
+ virtual char const *custom_instance_name() const noexcept override { return "promimage"; }
+ virtual char const *custom_brief_instance_name() const noexcept override { return "prom"; }
+
+protected:
+ virtual void device_start() override;
+
+private:
+ void allocate();
+ void unmap();
+
+ std::unique_ptr<u8 []> m_data;
+};
-namespace bus::intellec4 {
imm6_26_device::imm6_26_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock)
: device_t(mconfig, INTELLEC4_PROM_MEMORY, tag, owner, clock)
- , device_univ_card_interface(mconfig, *this)
+ , bus::intellec4::device_univ_card_interface(mconfig, *this)
, device_image_interface(mconfig, *this)
, m_data()
{
@@ -64,4 +175,7 @@ void imm6_26_device::unmap()
rom_space().unmap_read(0x1000U, 0x1fffU);
}
-} // namespace bus::intellec4
+} // anonymous namespace
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(INTELLEC4_PROM_MEMORY, bus::intellec4::device_univ_card_interface, imm6_26_device, "intlc4_imm6_26", "Intel imm6-26 PROM Memory Module")
diff --git a/src/devices/bus/intellec4/prommemory.h b/src/devices/bus/intellec4/prommemory.h
index 9003129c54c..74f90f342c5 100644
--- a/src/devices/bus/intellec4/prommemory.h
+++ b/src/devices/bus/intellec4/prommemory.h
@@ -1,87 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-/*
-imm6-26 PROM Memory Module
-
-This card has sockets for sixteen 1702A or similar 256×8 PROMs providing
-up to 4KiB of program storage. This card has additional features for
-INTELLEC 8 systems, including module select lines and DIP switches for
-mapping PROMs in place of console RAM. These features are not emulated
-by this class.
-
-In theory you could populate any combination of sockets, and use
-multiple cards provided you don't populate corresponding sockets on two
-cards. To simplify things, we assume contiguous sockets are populated
-starting with PROM 0 (A2). In practice, you'd want to populate this
-socket as the boot vector is at address zero. If you want to simulate
-unpopulated sockets, just zero the corresponding area in your image
-file.
-
-
-Universal edge connector
-
- 1 2
- GND 3 4 GND
- 5 6
- 7 8
- 9 10
- MAD 0 11 12 MAD 1
- MAD 2 13 14 MAD 3
- MAD 4 15 16 MAD 5
- MAD 6 17 18 MAD 7
- MAD 8 19 20 MAD 9
- 21 22
- MDI 0 23 24
- MDI 1 25 26
- MDI 3 27 28
- MDI 2 29 30
- MDI 5 31 32
- MDI 4 33 34
- MDI 7 35 36
- MDI 6 37 38
- 39 40
- 41 42
- -10V 43 44 -10V
- 45 46
- 47 48
- 49 50
- 51 52
- 53 54
- 55 56
- /MAD 12 57 58 MS 12
- MAD 13 59 60 MAD 12
- MS 13 61 62 /MAD 13
- /MAD 14 63 64 MS 14
- MAD 15 65 66 MAD 14
- MS 15 67 68 /MAD 15
- 69 70
- 71 72
- 73 74
- 75 76
- 77 78
- 79 80
- 81 82 /ASMB
- 83 84
- 85 86
- 87 88
- 89 90
- /ADR STB 91 92
- RAM MOD ENBL 93 94 MAD 11
- 95 96 MAD 10
- /PROM MOD ENBL 97 98
- +5V 99 100 +5V
-
-MAD 0...MAD 7 mapped to MA0...MA7 on INTELLEC 4
-MAD 8...MAD 11 mapped to C0...C3 on INTELLEC 4
-MAD 12...MAD 15 not used on INTELLEC 4, used for module selection on INTELLEC 8
-/MAD 12.../MAD 15 not used on INTELLEC 4, used for module selection on INTELLEC 8
-MS 12...MS 15 not used on INTELLEC 4, used for module selection on INTELLEC 8
-MDI 0...7 data outputs
-/ASMB global enable mapped to /PROM SEL on INTELLEC 4, not jumpered in on INTELLEC 8
-/ADR STB not jumpered in on INTELLEC 4 and INTELLEC 8, latch enables jumpered to GND
-RAM MOD ENBL not jumpered in on INTELLEC 4, allows PROM to overlay RAM on INTELLEC 8
-/PROM MOD ENBL not jumpered in on INTELLEC 4, used as global enable on INTELLEC 8
-*/
#ifndef MAME_BUS_INTELLEC4_PROMMEMORY_H
#define MAME_BUS_INTELLEC4_PROMMEMORY_H
@@ -89,38 +7,6 @@ RAM MOD ENBL not jumpered in on INTELLEC 4, allows PROM to overlay RAM on
#include "intellec4.h"
-namespace bus::intellec4 {
-
-class imm6_26_device : public device_t, public device_univ_card_interface, public device_image_interface
-{
-public:
- imm6_26_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
-
- virtual image_init_result call_load() override;
- virtual void call_unload() override;
-
- virtual iodevice_t image_type() const noexcept override { return IO_ROM; }
- virtual bool is_readable() const noexcept override { return true; }
- virtual bool is_writeable() const noexcept override { return false; }
- virtual bool is_creatable() const noexcept override { return false; }
- virtual bool must_be_loaded() const noexcept override { return false; }
- virtual bool is_reset_on_load() const noexcept override { return false; }
- virtual char const *file_extensions() const noexcept override { return "rom,bin"; }
- virtual char const *custom_instance_name() const noexcept override { return "promimage"; }
- virtual char const *custom_brief_instance_name() const noexcept override { return "prom"; }
-
-protected:
- virtual void device_start() override;
-
-private:
- void allocate();
- void unmap();
-
- std::unique_ptr<u8 []> m_data;
-};
-
-} // namespace bus::intellec4
-
-DECLARE_DEVICE_TYPE_NS(INTELLEC4_PROM_MEMORY, bus::intellec4, imm6_26_device)
+DECLARE_DEVICE_TYPE_NS(INTELLEC4_PROM_MEMORY, bus::intellec4, device_univ_card_interface)
#endif // MAME_BUS_INTELLEC4_PROMMEMORY_H
diff --git a/src/devices/bus/intellec4/tapereader.cpp b/src/devices/bus/intellec4/tapereader.cpp
index 52685bdf032..2dda4eaf561 100644
--- a/src/devices/bus/intellec4/tapereader.cpp
+++ b/src/devices/bus/intellec4/tapereader.cpp
@@ -1,18 +1,66 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
+/*
+imm4-90 High-Speed Paper Tape Reader
+
+The monitor PROM has support for loading BNPF or Intel HEX from this
+device (use J command to select it), but it doesn't appear in any
+catalogues or manuals I've seen. Apparently it was announced in
+Computerworld.
+
+In practice you needed a GPIO card (e.g. an imm4-60 or imm4-22) to talk
+to the paper taper reader. To simplify configuration we emulate the I/O
+interface and paper tape reader as a single device.
+*/
#include "emu.h"
#include "tapereader.h"
-DEFINE_DEVICE_TYPE(INTELLEC4_TAPE_READER, bus::intellec4::imm4_90_device, "intlc4_imm4_90", "Intel imm4-90 High-Speed Paper Tape Reader")
+namespace {
+
+class imm4_90_device
+ : public device_t
+ , public bus::intellec4::device_univ_card_interface
+ , public device_image_interface
+{
+public:
+ imm4_90_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+
+ virtual image_init_result call_load() override;
+ virtual void call_unload() override;
+
+ virtual iodevice_t image_type() const noexcept override { return IO_PUNCHTAPE; }
+ virtual bool is_readable() const noexcept override { return true; }
+ virtual bool is_writeable() const noexcept override { return false; }
+ virtual bool is_creatable() const noexcept override { return false; }
+ virtual bool must_be_loaded() const noexcept override { return false; }
+ virtual bool is_reset_on_load() const noexcept override { return false; }
+ virtual char const *file_extensions() const noexcept override { return "bnpf,hex,lst,txt"; }
+protected:
+ virtual void device_start() override;
+
+private:
+ u8 rom4_in() { return m_ready ? 0x07U : 0x0fU; }
+ u8 rom6_in() { return ~m_data & 0x0fU; }
+ u8 rom7_in() { return (~m_data >> 4) & 0x0fU; }
+ void rom4_out(u8 data) { advance(BIT(data, 3)); }
+ DECLARE_WRITE_LINE_MEMBER(advance);
+ TIMER_CALLBACK_MEMBER(step);
+
+ emu_timer *m_step_timer;
+
+ u8 m_data;
+ bool m_ready;
+ bool m_advance;
+ bool m_stepping;
+};
-namespace bus::intellec4 {
imm4_90_device::imm4_90_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock)
: device_t(mconfig, INTELLEC4_TAPE_READER, tag, owner, clock)
- , device_univ_card_interface(mconfig, *this)
+ , bus::intellec4::device_univ_card_interface(mconfig, *this)
, device_image_interface(mconfig, *this)
, m_step_timer(nullptr)
, m_data(0xffU)
@@ -83,4 +131,7 @@ TIMER_CALLBACK_MEMBER(imm4_90_device::step)
}
}
-} // namespace bus::intellec4
+} // anonymous namespace
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(INTELLEC4_TAPE_READER, bus::intellec4::device_univ_card_interface, imm4_90_device, "intlc4_imm4_90", "Intel imm4-90 High-Speed Paper Tape Reader")
diff --git a/src/devices/bus/intellec4/tapereader.h b/src/devices/bus/intellec4/tapereader.h
index 963bf2ae404..64baeb996ca 100644
--- a/src/devices/bus/intellec4/tapereader.h
+++ b/src/devices/bus/intellec4/tapereader.h
@@ -1,17 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-/*
-imm4-90 High-Speed Paper Tape Reader
-
-The monitor PROM has support for loading BNPF or Intel HEX from this
-device (use J command to select it), but it doesn't appear in any
-catalogues or manuals I've seen. Apparently it was announced in
-Computerworld.
-
-In practice you needed a GPIO card (e.g. an imm4-60 or imm4-22) to talk
-to the paper taper reader. To simplify configuration we emulate the I/O
-interface and paper tape reader as a single device.
-*/
#ifndef MAME_BUS_INTELLEC4_TAPEREADER_H
#define MAME_BUS_INTELLEC4_TAPEREADER_H
@@ -19,45 +7,6 @@ interface and paper tape reader as a single device.
#include "intellec4.h"
-namespace bus::intellec4 {
-
-class imm4_90_device : public device_t, public device_univ_card_interface, public device_image_interface
-{
-public:
- imm4_90_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
-
- virtual image_init_result call_load() override;
- virtual void call_unload() override;
-
- virtual iodevice_t image_type() const noexcept override { return IO_PUNCHTAPE; }
- virtual bool is_readable() const noexcept override { return true; }
- virtual bool is_writeable() const noexcept override { return false; }
- virtual bool is_creatable() const noexcept override { return false; }
- virtual bool must_be_loaded() const noexcept override { return false; }
- virtual bool is_reset_on_load() const noexcept override { return false; }
- virtual char const *file_extensions() const noexcept override { return "bnpf,hex,lst,txt"; }
-
-protected:
- virtual void device_start() override;
-
-private:
- u8 rom4_in() { return m_ready ? 0x07U : 0x0fU; }
- u8 rom6_in() { return ~m_data & 0x0fU; }
- u8 rom7_in() { return (~m_data >> 4) & 0x0fU; }
- void rom4_out(u8 data) { advance(BIT(data, 3)); }
- DECLARE_WRITE_LINE_MEMBER(advance);
- TIMER_CALLBACK_MEMBER(step);
-
- emu_timer *m_step_timer;
-
- u8 m_data;
- bool m_ready;
- bool m_advance;
- bool m_stepping;
-};
-
-} // namespace bus::intellec4
-
-DECLARE_DEVICE_TYPE_NS(INTELLEC4_TAPE_READER, bus::intellec4, imm4_90_device)
+DECLARE_DEVICE_TYPE_NS(INTELLEC4_TAPE_READER, bus::intellec4, device_univ_card_interface)
#endif // MAME_BUS_INTELLEC4_TAPEREADER_H
diff --git a/src/devices/bus/mackbd/mackbd.cpp b/src/devices/bus/mackbd/mackbd.cpp
index 61a189a6ab0..0e13787c9cf 100644
--- a/src/devices/bus/mackbd/mackbd.cpp
+++ b/src/devices/bus/mackbd/mackbd.cpp
@@ -160,6 +160,11 @@ void device_mac_keyboard_interface::interface_validity_check(validity_checker &v
#include "pluskbd.h"
+// must come after including the headers that declare these extern
+template class device_finder<device_mac_keyboard_interface, false>;
+template class device_finder<device_mac_keyboard_interface, true>;
+
+
void mac_keyboard_devices(device_slot_interface &device)
{
device.option_add("us", MACKBD_M0110);
diff --git a/src/devices/bus/ti8x/bitsocket.cpp b/src/devices/bus/ti8x/bitsocket.cpp
index 4168c09af91..46c832ffecd 100644
--- a/src/devices/bus/ti8x/bitsocket.cpp
+++ b/src/devices/bus/ti8x/bitsocket.cpp
@@ -1,14 +1,49 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
+/*
+ Sends raw assert/release signals over a socket. Seriously limits
+ transfer rates and probably won't work if there's much latency, but it
+ allows communication between instances using non-standard protocols.
+
+ bit 0 = data
+ bit 1 = set tip
+ bit 2 = set ring
+ */
#include "emu.h"
#include "bitsocket.h"
+#include "imagedev/bitbngr.h"
+
+
+namespace {
+
+class bit_socket_device
+ : public device_t
+ , public device_ti8x_link_port_interface
+{
+public:
+ bit_socket_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
+
+protected:
+ enum
+ {
+ TIMER_ID_POLL = 1
+ };
+
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual void device_start() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-DEFINE_DEVICE_TYPE(TI8X_BIT_SOCKET, bus::ti8x::bit_socket_device, "ti8x_bitsock", "TI-8x Bit Socket")
+ virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override;
+ virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override;
+private:
+ required_device<bitbanger_device> m_stream;
+ emu_timer * m_poll_timer;
+ bool m_tip_in, m_ring_in;
+};
-namespace bus::ti8x {
bit_socket_device::bit_socket_device(
machine_config const &mconfig,
@@ -78,4 +113,7 @@ WRITE_LINE_MEMBER(bit_socket_device::input_ring)
m_stream->output((m_ring_in ? 0x01 : 0x00) | 0x04);
}
-} // namespace bus::ti8x
+} // anonymous namespace
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(TI8X_BIT_SOCKET, device_ti8x_link_port_interface, bit_socket_device, "ti8x_bitsock", "TI-8x Bit Socket")
diff --git a/src/devices/bus/ti8x/bitsocket.h b/src/devices/bus/ti8x/bitsocket.h
index d144d332fb8..6044e1110cb 100644
--- a/src/devices/bus/ti8x/bitsocket.h
+++ b/src/devices/bus/ti8x/bitsocket.h
@@ -1,14 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-/*
- Sends raw assert/release signals over a socket. Seriously limits
- transfer rates and probably won't work if there's much latency, but it
- allows communication between instances using non-standard protocols.
-
- bit 0 = data
- bit 1 = set tip
- bit 2 = set ring
- */
#ifndef MAME_BUS_TI8X_BITSOCKET_H
#define MAME_BUS_TI8X_BITSOCKET_H
@@ -16,40 +7,7 @@
#include "ti8x.h"
-#include "imagedev/bitbngr.h"
-
-
-namespace bus::ti8x {
-
-class bit_socket_device
- : public device_t
- , public device_ti8x_link_port_interface
-{
-public:
- bit_socket_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
-
-protected:
- enum
- {
- TIMER_ID_POLL = 1
- };
-
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void device_start() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
- virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override;
- virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override;
-
-private:
- required_device<bitbanger_device> m_stream;
- emu_timer * m_poll_timer;
- bool m_tip_in, m_ring_in;
-};
-
-} // namespace bus::ti8x
-
-DECLARE_DEVICE_TYPE_NS(TI8X_BIT_SOCKET, bus::ti8x, bit_socket_device)
+DECLARE_DEVICE_TYPE(TI8X_BIT_SOCKET, device_ti8x_link_port_interface)
#endif // MAME_BUS_TI8X_BITSOCKET_H
diff --git a/src/devices/bus/ti8x/graphlinkhle.cpp b/src/devices/bus/ti8x/graphlinkhle.cpp
index b41d67ca50b..6322f2b422d 100644
--- a/src/devices/bus/ti8x/graphlinkhle.cpp
+++ b/src/devices/bus/ti8x/graphlinkhle.cpp
@@ -4,11 +4,47 @@
#include "emu.h"
#include "graphlinkhle.h"
+#include "bus/rs232/rs232.h"
-DEFINE_DEVICE_TYPE(TI8X_GRAPH_LINK_HLE, bus::ti8x::graph_link_hle_device, "ti8x_glinkhle", "TI-Graph Link (grey, HLE)")
+#include "diserial.h"
+#include <memory>
+
+
+namespace {
+
+class graph_link_hle_device
+ : public device_t
+ , public device_ti8x_link_port_byte_interface
+ , public device_serial_interface
+{
+public:
+ graph_link_hle_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ virtual void byte_collision() override;
+ virtual void byte_send_timeout() override;
+ virtual void byte_receive_timeout() override;
+ virtual void byte_sent() override;
+ virtual void byte_received(u8 data) override;
+
+ virtual void rcv_complete() override;
+ virtual void tra_callback() override;
+ virtual void tra_complete() override;
+
+private:
+ static constexpr unsigned BUFLEN = 1U << 16;
+
+ required_device<rs232_port_device> m_serial_port;
+ std::unique_ptr<u8 []> m_buffer;
+ unsigned m_head, m_tail;
+ bool m_empty, m_ready;
+};
-namespace bus::ti8x {
graph_link_hle_device::graph_link_hle_device(
machine_config const &mconfig,
@@ -142,4 +178,7 @@ void graph_link_hle_device::tra_complete()
accept_byte();
}
-} // namespace bus::ti8x
+} // anonymous namespace
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(TI8X_GRAPH_LINK_HLE, device_ti8x_link_port_interface, graph_link_hle_device, "ti8x_glinkhle", "TI-Graph Link (grey, HLE)")
diff --git a/src/devices/bus/ti8x/graphlinkhle.h b/src/devices/bus/ti8x/graphlinkhle.h
index 3d6bdddca10..81c331ded57 100644
--- a/src/devices/bus/ti8x/graphlinkhle.h
+++ b/src/devices/bus/ti8x/graphlinkhle.h
@@ -18,50 +18,7 @@
#include "ti8x.h"
-#include "bus/rs232/rs232.h"
-#include "diserial.h"
-
-#include <memory>
-
-
-namespace bus::ti8x {
-
-class graph_link_hle_device
- : public device_t
- , public device_ti8x_link_port_byte_interface
- , public device_serial_interface
-{
-public:
- graph_link_hle_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void device_start() override;
- virtual void device_reset() override;
-
- virtual void byte_collision() override;
- virtual void byte_send_timeout() override;
- virtual void byte_receive_timeout() override;
- virtual void byte_sent() override;
- virtual void byte_received(u8 data) override;
-
- virtual void rcv_complete() override;
- virtual void tra_callback() override;
- virtual void tra_complete() override;
-
-private:
- static constexpr unsigned BUFLEN = 1U << 16;
-
- required_device<rs232_port_device> m_serial_port;
- std::unique_ptr<u8 []> m_buffer;
- unsigned m_head, m_tail;
- bool m_empty, m_ready;
-};
-
-} // namespace bus::ti8x
-
-
-DECLARE_DEVICE_TYPE_NS(TI8X_GRAPH_LINK_HLE, bus::ti8x, graph_link_hle_device)
+DECLARE_DEVICE_TYPE(TI8X_GRAPH_LINK_HLE, device_ti8x_link_port_interface)
#endif // MAME_BUS_TI8X_GRAPHLINKHLE_H
diff --git a/src/devices/bus/ti8x/teeconn.cpp b/src/devices/bus/ti8x/teeconn.cpp
index 9325816735b..b0774684dc7 100644
--- a/src/devices/bus/ti8x/teeconn.cpp
+++ b/src/devices/bus/ti8x/teeconn.cpp
@@ -1,14 +1,39 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
+/*
+ A T-connector, strangely enough.
+ */
#include "emu.h"
#include "teeconn.h"
-DEFINE_DEVICE_TYPE(TI8X_TEE_CONNECTOR, bus::ti8x::tee_connector_device, "ti8x_tconn", "TI-8x T-connector")
+namespace {
+class tee_connector_device : public device_t, public device_ti8x_link_port_interface
+{
+public:
+ tee_connector_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual void device_start() override;
+
+ virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override;
+ virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override;
+
+ DECLARE_WRITE_LINE_MEMBER(tip_a_w);
+ DECLARE_WRITE_LINE_MEMBER(ring_a_w);
+ DECLARE_WRITE_LINE_MEMBER(tip_b_w);
+ DECLARE_WRITE_LINE_MEMBER(ring_b_w);
+
+ required_device<ti8x_link_port_device> m_port_a;
+ required_device<ti8x_link_port_device> m_port_b;
+
+ bool m_tip_host, m_tip_a, m_tip_b;
+ bool m_ring_host, m_ring_a, m_ring_b;
+};
-namespace bus::ti8x {
tee_connector_device::tee_connector_device(
machine_config const &mconfig,
@@ -102,4 +127,7 @@ WRITE_LINE_MEMBER(tee_connector_device::input_ring)
m_port_b->ring_w((m_ring_host && m_ring_a) ? 1 : 0);
}
-} // namespace bus::ti8x
+} // anonymous namespace
+
+
+DEFINE_DEVICE_TYPE_PRIVATE(TI8X_TEE_CONNECTOR, device_ti8x_link_port_interface, tee_connector_device, "ti8x_tconn", "TI-8x T-connector")
diff --git a/src/devices/bus/ti8x/teeconn.h b/src/devices/bus/ti8x/teeconn.h
index c47e1613a82..4b3aa2bd4cf 100644
--- a/src/devices/bus/ti8x/teeconn.h
+++ b/src/devices/bus/ti8x/teeconn.h
@@ -1,8 +1,5 @@
// license:BSD-3-Clause
// copyright-holders:Vas Crabb
-/*
- A T-connector, strangely enough.
- */
#ifndef MAME_DEVICES_BUS_TI8X_TEECONN_H
#define MAME_DEVICES_BUS_TI8X_TEECONN_H
@@ -11,35 +8,6 @@
#include "ti8x.h"
-namespace bus::ti8x {
-
-class tee_connector_device : public device_t, public device_ti8x_link_port_interface
-{
-public:
- tee_connector_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void device_start() override;
-
- virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override;
- virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override;
-
- DECLARE_WRITE_LINE_MEMBER(tip_a_w);
- DECLARE_WRITE_LINE_MEMBER(ring_a_w);
- DECLARE_WRITE_LINE_MEMBER(tip_b_w);
- DECLARE_WRITE_LINE_MEMBER(ring_b_w);
-
- required_device<ti8x_link_port_device> m_port_a;
- required_device<ti8x_link_port_device> m_port_b;
-
- bool m_tip_host, m_tip_a, m_tip_b;
- bool m_ring_host, m_ring_a, m_ring_b;
-};
-
-} // namespace bus::ti8x
-
-
-DECLARE_DEVICE_TYPE_NS(TI8X_TEE_CONNECTOR, bus::ti8x, tee_connector_device)
+DECLARE_DEVICE_TYPE(TI8X_TEE_CONNECTOR, device_ti8x_link_port_interface)
#endif // MAME_DEVICES_BUS_TI8X_TEECONN_H
diff --git a/src/devices/bus/ti8x/ti8x.cpp b/src/devices/bus/ti8x/ti8x.cpp
index f8ec86c06a8..c9274a6f340 100644
--- a/src/devices/bus/ti8x/ti8x.cpp
+++ b/src/devices/bus/ti8x/ti8x.cpp
@@ -613,6 +613,12 @@ void device_ti8x_link_port_byte_interface::bit_received(bool data)
#include "teeconn.h"
#include "tispeaker.h"
+
+// must come after including the headers that declare these extern
+template class device_finder<device_ti8x_link_port_interface, false>;
+template class device_finder<device_ti8x_link_port_interface, true>;
+
+
void default_ti8x_link_devices(device_slot_interface &device)
{
device.option_add("bitsock", TI8X_BIT_SOCKET);
diff --git a/src/devices/bus/ti8x/tispeaker.cpp b/src/devices/bus/ti8x/tispeaker.cpp
index a3fe86d76fd..2aa5afdcf7d 100644
--- a/src/devices/bus/ti8x/tispeaker.cpp
+++ b/src/devices/bus/ti8x/tispeaker.cpp
@@ -4,99 +4,114 @@
#include "emu.h"
#include "tispeaker.h"
-#include "speaker.h"
-
+#include "sound/spkrdev.h"
-DEFINE_DEVICE_TYPE(TI8X_SPEAKER_STEREO, bus::ti8x::stereo_speaker_device, "ti8x_stspkr", "TI-8x Speaker (Stereo)")
-DEFINE_DEVICE_TYPE(TI8X_SPEAKER_MONO, bus::ti8x::mono_speaker_device, "ti8x_mspkr", "TI-8x Speaker (Mono)")
+#include "speaker.h"
-namespace bus::ti8x {
+namespace {
-stereo_speaker_device::stereo_speaker_device(
- machine_config const &mconfig,
- char const *tag,
- device_t *owner,
- uint32_t clock)
- : device_t(mconfig, TI8X_SPEAKER_STEREO, tag, owner, clock)
- , device_ti8x_link_port_interface(mconfig, *this)
- , m_left_speaker(*this, "lspkr")
- , m_right_speaker(*this, "rspkr")
+class stereo_speaker_device : public device_t, public device_ti8x_link_port_interface
{
-}
+public:
+ stereo_speaker_device(
+ machine_config const &mconfig,
+ char const *tag,
+ device_t *owner,
+ uint32_t clock)
+ : device_t(mconfig, TI8X_SPEAKER_STEREO, tag, owner, clock)
+ , device_ti8x_link_port_interface(mconfig, *this)
+ , m_left_speaker(*this, "lspkr")
+ , m_right_speaker(*this, "rspkr")
+ {
+ }
+protected:
+ virtual void device_add_mconfig(machine_config &config) override
+ {
+ SPEAKER(config, "outl").front_left();
+ SPEAKER(config, "outr").front_right();
-void stereo_speaker_device::device_add_mconfig(machine_config &config)
-{
- SPEAKER(config, "outl").front_left();
- SPEAKER(config, "outr").front_right();
+ SPEAKER_SOUND(config, m_left_speaker, 0).add_route(ALL_OUTPUTS, "outl", 0.50);
- SPEAKER_SOUND(config, m_left_speaker, 0).add_route(ALL_OUTPUTS, "outl", 0.50);
+ SPEAKER_SOUND(config, m_right_speaker, 0).add_route(ALL_OUTPUTS, "outr", 0.50);
+ }
- SPEAKER_SOUND(config, m_right_speaker, 0).add_route(ALL_OUTPUTS, "outr", 0.50);
-}
+ virtual void device_start() override
+ {
+ }
-void stereo_speaker_device::device_start()
-{
-}
+ virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override
+ {
+ m_left_speaker->level_w(state);
+ }
+ virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override
+ {
+ m_right_speaker->level_w(state);
+ }
-WRITE_LINE_MEMBER(stereo_speaker_device::input_tip)
-{
- m_left_speaker->level_w(state);
-}
+ required_device<speaker_sound_device> m_left_speaker;
+ required_device<speaker_sound_device> m_right_speaker;
+};
-WRITE_LINE_MEMBER(stereo_speaker_device::input_ring)
-{
- m_right_speaker->level_w(state);
-}
+class mono_speaker_device : public device_t, public device_ti8x_link_port_interface
+{
+public:
+ mono_speaker_device(
+ machine_config const &mconfig,
+ char const *tag,
+ device_t *owner,
+ uint32_t clock)
+ : device_t(mconfig, TI8X_SPEAKER_MONO, tag, owner, clock)
+ , device_ti8x_link_port_interface(mconfig, *this)
+ , m_speaker(*this, "spkr")
+ , m_tip_state(true)
+ , m_ring_state(true)
+ {
+ }
+protected:
+ virtual void device_add_mconfig(machine_config &config) override
+ {
+ SPEAKER(config, "mono").front_center();
-mono_speaker_device::mono_speaker_device(
- machine_config const &mconfig,
- char const *tag,
- device_t *owner,
- uint32_t clock)
- : device_t(mconfig, TI8X_SPEAKER_MONO, tag, owner, clock)
- , device_ti8x_link_port_interface(mconfig, *this)
- , m_speaker(*this, "spkr")
- , m_tip_state(true)
- , m_ring_state(true)
-{
-}
+ SPEAKER_SOUND(config, m_speaker, 0).add_route(ALL_OUTPUTS, "mono", 0.50);
+ }
+ virtual void device_start() override
+ {
+ save_item(NAME(m_tip_state));
+ save_item(NAME(m_ring_state));
-void mono_speaker_device::device_add_mconfig(machine_config &config)
-{
- SPEAKER(config, "mono").front_center();
+ m_tip_state = m_ring_state = true;
+ }
- SPEAKER_SOUND(config, m_speaker, 0).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override
+ {
+ m_tip_state = bool(state);
+ m_speaker->level_w((m_tip_state || m_ring_state) ? 1 : 0);
+ }
-void mono_speaker_device::device_start()
-{
- save_item(NAME(m_tip_state));
- save_item(NAME(m_ring_state));
+ virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override
+ {
+ m_ring_state = bool(state);
+ m_speaker->level_w((m_tip_state || m_ring_state) ? 1 : 0);
+ }
- m_tip_state = m_ring_state = true;
-}
+ required_device<speaker_sound_device> m_speaker;
-WRITE_LINE_MEMBER(mono_speaker_device::input_tip)
-{
- m_tip_state = bool(state);
- m_speaker->level_w((m_tip_state || m_ring_state) ? 1 : 0);
-}
+private:
+ bool m_tip_state, m_ring_state;
+};
+} // anonymous namespace
-WRITE_LINE_MEMBER(mono_speaker_device::input_ring)
-{
- m_ring_state = bool(state);
- m_speaker->level_w((m_tip_state || m_ring_state) ? 1 : 0);
-}
-} // namespace bus::ti8x
+DEFINE_DEVICE_TYPE_PRIVATE(TI8X_SPEAKER_STEREO, device_ti8x_link_port_interface, stereo_speaker_device, "ti8x_stspkr", "TI-8x Speaker (Stereo)")
+DEFINE_DEVICE_TYPE_PRIVATE(TI8X_SPEAKER_MONO, device_ti8x_link_port_interface, mono_speaker_device, "ti8x_mspkr", "TI-8x Speaker (Mono)")
diff --git a/src/devices/bus/ti8x/tispeaker.h b/src/devices/bus/ti8x/tispeaker.h
index da05d8f112f..7219c229213 100644
--- a/src/devices/bus/ti8x/tispeaker.h
+++ b/src/devices/bus/ti8x/tispeaker.h
@@ -6,50 +6,9 @@
#pragma once
#include "ti8x.h"
-#include "sound/spkrdev.h"
-namespace bus::ti8x {
-
-class stereo_speaker_device : public device_t, public device_ti8x_link_port_interface
-{
-public:
- stereo_speaker_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void device_start() override;
-
- virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override;
- virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override;
-
- required_device<speaker_sound_device> m_left_speaker;
- required_device<speaker_sound_device> m_right_speaker;
-};
-
-
-class mono_speaker_device : public device_t, public device_ti8x_link_port_interface
-{
-public:
- mono_speaker_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual void device_add_mconfig(machine_config &config) override;
- virtual void device_start() override;
-
- virtual DECLARE_WRITE_LINE_MEMBER(input_tip) override;
- virtual DECLARE_WRITE_LINE_MEMBER(input_ring) override;
-
- required_device<speaker_sound_device> m_speaker;
-
-private:
- bool m_tip_state, m_ring_state;
-};
-
-} // namespace bus::ti8x
-
-
-DECLARE_DEVICE_TYPE_NS(TI8X_SPEAKER_STEREO, bus::ti8x, stereo_speaker_device)
-DECLARE_DEVICE_TYPE_NS(TI8X_SPEAKER_MONO, bus::ti8x, mono_speaker_device)
+DECLARE_DEVICE_TYPE(TI8X_SPEAKER_STEREO, device_ti8x_link_port_interface)
+DECLARE_DEVICE_TYPE(TI8X_SPEAKER_MONO, device_ti8x_link_port_interface)
#endif // MAME_DEVICES_BUS_TI8X_TISPEAKER_H
diff --git a/src/emu/emumem_hedr.ipp b/src/emu/emumem_hedr.ipp
index 6841ea8d607..7be3afc6727 100644
--- a/src/emu/emumem_hedr.ipp
+++ b/src/emu/emumem_hedr.ipp
@@ -626,7 +626,7 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_read_dispatc
} else {
if(m_view) {
auto filter = [s = m_view->m_addrstart, e = m_view->m_addrend] (handler_entry::range r) { r.intersect(s, e); return r; };
-
+
for(offs_t entry = start_entry & BITMASK; entry <= (end_entry & BITMASK); entry++) {
if(!(m_u_dispatch[entry]->flags() & handler_entry::F_UNMAP))
fatalerror("Collision on multiple init_handlers calls");
diff --git a/src/emu/emumem_hedw.ipp b/src/emu/emumem_hedw.ipp
index 304e5ecb174..dae4e91f802 100644
--- a/src/emu/emumem_hedw.ipp
+++ b/src/emu/emumem_hedw.ipp
@@ -625,7 +625,7 @@ template<int HighBits, int Width, int AddrShift> void handler_entry_write_dispat
} else {
if(m_view) {
auto filter = [s = m_view->m_addrstart, e = m_view->m_addrend] (handler_entry::range r) { r.intersect(s, e); return r; };
-
+
for(offs_t entry = start_entry & BITMASK; entry <= (end_entry & BITMASK); entry++) {
if(!(m_u_dispatch[entry]->flags() & handler_entry::F_UNMAP))
fatalerror("Collision on multiple init_handlers calls");
diff --git a/src/mame/drivers/ampoker2.cpp b/src/mame/drivers/ampoker2.cpp
index 8f660b72250..17aa59aee8c 100644
--- a/src/mame/drivers/ampoker2.cpp
+++ b/src/mame/drivers/ampoker2.cpp
@@ -13,22 +13,25 @@
--- Supported Sets ---
- Set Name | Relation | Description
- ---------+----------+------------------------------------
- ampoker2 | parent | American Poker II.
- ampkr2b1 | clone | American Poker II (bootleg, set 1).
- ampkr2b2 | clone | American Poker II (bootleg, set 2).
- ampkr2b3 | clone | American Poker II (bootleg, set 3).
- ampkr2b4 | clone | American Poker II (bootleg, set 4).
- ampkr228 | clone | American Poker II (iamp2 v28).
- pkrdewin | clone | Poker De Win.
- ampkr95 | clone | American Poker 95.
- videomat | clone | Videomat (polish bootleg).
- rabbitpk | clone | Rabbit Poker / Arizona Poker 1.1? (with PIC)
- sigmapkr | parent | Sigma Poker.
- sigma2k | parent | Sigma Poker 2000.
- piccolop | parent | Piccolo Poker 100.
- arizna10 | clone | Arizona Poker 1.1? (with PIC)
+ Set Name | Relation | Description
+ -----------+----------+------------------------------------
+ ampoker2 | parent | American Poker II.
+ ampkr2b1 | clone | American Poker II (bootleg, set 1).
+ ampkr2b2 | clone | American Poker II (bootleg, set 2).
+ ampkr2b3 | clone | American Poker II (bootleg, set 3).
+ ampkr2b4 | clone | American Poker II (bootleg, set 4).
+ ampkr228 | clone | American Poker II (iamp2 v28).
+ ampkr2jsp | clone? | American Poker II - Jackpot (Spanish, set 1)
+ ampkr2jspa | clone? | American Poker II - Jackpot (Spanish, set 2)
+ ampkr2jspb | clone? | American Poker II - Jackpot (Spanish, set 3)
+ pkrdewin | clone | Poker De Win.
+ ampkr95 | clone | American Poker 95.
+ videomat | clone | Videomat (polish bootleg).
+ rabbitpk | clone | Rabbit Poker / Arizona Poker 1.1? (with PIC)
+ sigmapkr | parent | Sigma Poker.
+ sigma2k | parent | Sigma Poker 2000.
+ piccolop | parent | Piccolo Poker 100.
+ arizna10 | clone | Arizona Poker 1.1? (with PIC)
*********************************************************************************
@@ -124,6 +127,12 @@
the game is playable but doesn't contabilize in the meters.
+ American Poker II - Jackpot (Spanish)
+
+ Not working yet, but could be a jackpot based game driven by an external server.
+ Will see later... As soon as we can improve the emulation.
+
+
*********************************************************************************
*** Technical Notes ***
@@ -1305,6 +1314,49 @@ ROM_START( ampkr228 )
ROM_LOAD( "gal16v8b.u8", 0x0200, 0x0117, CRC(7edb3276) SHA1(1302aec1d9703e6ce9da77fc7a0613e7eff1ccb5) )
ROM_END
+/*
+ American Poker II - Jackpot
+ Spanish program.
+
+ Could have jackpot features
+ driven by external server.
+
+*/
+ROM_START( ampkr2jsp )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // The set is marked as "3A".
+ ROM_LOAD( "u6", 0x0000, 0x10000, CRC(183b67a6) SHA1(8d5b1ce401e8783641c666a5b190a1f052f2dfca) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "u47", 0x0000, 0x4000, CRC(024d6263) SHA1(bf4eb4eff0cac85619c230255331a149e5f2e2c6) )
+ ROM_IGNORE( 0x4000)
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( ampkr2jspa )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // The set is marked as "zarate".
+ ROM_LOAD( "u6", 0x0000, 0x10000, CRC(35aa7c52) SHA1(8aa422b1b86d0366fe4736d97470fc330335ae78) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "u47", 0x0000, 0x4000, BAD_DUMP CRC(094d75a5) SHA1(069b3cacd648f59da42d0b7246ac125f16b54005) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+ROM_START( ampkr2jspb )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // The set is marked as "novomatic".
+ ROM_LOAD( "u6", 0x0000, 0x10000, CRC(e2f5ff56) SHA1(ab793a4f15673d6d4447024172f6fa6c61719fe7) )
+
+ ROM_REGION( 0x4000, "gfx1", 0 )
+ ROM_LOAD( "u47", 0x0000, 0x4000, BAD_DUMP CRC(094d75a5) SHA1(069b3cacd648f59da42d0b7246ac125f16b54005) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "82s147an.u48", 0x0000, 0x0200, CRC(9bc8e543) SHA1(e4882868a43e21a509a180b9731600d1dd63b5cc) )
+ROM_END
+
+
ROM_START( pkrdewin )
ROM_REGION( 0x14000, "maincpu", 0 )
ROM_LOAD( "poker7.001", 0x4000, 0x10000, CRC(eca16b9e) SHA1(5063d733721457ab3b08caafbe8d33b2cbe4f88b) )
@@ -1522,20 +1574,23 @@ void ampoker2_state::init_rabbitpk()
* Game Drivers *
*************************/
-// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
-GAMEL( 1990, ampoker2, 0, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "Novomatic", "American Poker II", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, ampkr2b1, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 1)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, ampkr2b2, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 2)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1994, ampkr2b3, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 3)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1994, ampkr2b4, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 4)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1994, ampkr228, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg?", "American Poker II (iamp2 v28)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1995, ampkr95, ampoker2, ampoker2, ampkr95, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker 95", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, pkrdewin, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "Poker De Win", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, videomat, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "Videomat (Polish bootleg)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAME( 1991, piccolop, ampoker2, ampoker2, piccolop, ampoker2_state, empty_init, ROT0, "Admiral/Novomatic", "Piccolo Poker 100", MACHINE_SUPPORTS_SAVE )
-GAMEL( 1990, rabbitpk, ampoker2, ampoker2, ampoker2, ampoker2_state, init_rabbitpk, ROT0, "bootleg", "Rabbit Poker (Arizona Poker v1.1?)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1995, arizna10, ampoker2, ampoker2, ampoker2, ampoker2_state, init_rabbitpk, ROT0, "bootleg (Ri.Bi)", "Arizona 10 (v1.1)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) // undumped PIC for protection?
+// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT
+GAMEL( 1990, ampoker2, 0, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "Novomatic", "American Poker II", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, ampkr2b1, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 1)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, ampkr2b2, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 2)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2b3, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 3)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2b4, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker II (bootleg, set 4)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr228, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg?", "American Poker II (iamp2 v28)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2jsp, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg?", "American Poker II - Jackpot (Spanish, set 1)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2jspa, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg?", "American Poker II - Jackpot (Spanish, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2jspb, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg?", "American Poker II - Jackpot (Spanish, set 3)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1995, ampkr95, ampoker2, ampoker2, ampkr95, ampoker2_state, empty_init, ROT0, "bootleg", "American Poker 95", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, pkrdewin, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "Poker De Win", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, videomat, ampoker2, ampoker2, ampoker2, ampoker2_state, empty_init, ROT0, "bootleg", "Videomat (Polish bootleg)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAME( 1991, piccolop, ampoker2, ampoker2, piccolop, ampoker2_state, empty_init, ROT0, "Admiral/Novomatic", "Piccolo Poker 100", MACHINE_SUPPORTS_SAVE )
+GAMEL( 1990, rabbitpk, ampoker2, ampoker2, ampoker2, ampoker2_state, init_rabbitpk, ROT0, "bootleg", "Rabbit Poker (Arizona Poker v1.1?)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1995, arizna10, ampoker2, ampoker2, ampoker2, ampoker2_state, init_rabbitpk, ROT0, "bootleg (Ri.Bi)", "Arizona 10 (v1.1)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_ampoker2 ) // undumped PIC for protection?
// different games not based on american poker 2
-GAMEL( 1995, sigmapkr, 0, ampoker2, sigmapkr, ampoker2_state, empty_init, ROT0, "Sigma Inc.", "Sigma Poker", MACHINE_SUPPORTS_SAVE, layout_sigmapkr )
-GAMEL( 1998, sigma2k, 0, sigma2k, sigma2k, ampoker2_state, empty_init, ROT0, "Sigma Inc.", "Sigma Poker 2000", MACHINE_SUPPORTS_SAVE, layout_sigmapkr )
+GAMEL( 1995, sigmapkr, 0, ampoker2, sigmapkr, ampoker2_state, empty_init, ROT0, "Sigma Inc.", "Sigma Poker", MACHINE_SUPPORTS_SAVE, layout_sigmapkr )
+GAMEL( 1998, sigma2k, 0, sigma2k, sigma2k, ampoker2_state, empty_init, ROT0, "Sigma Inc.", "Sigma Poker 2000", MACHINE_SUPPORTS_SAVE, layout_sigmapkr )
diff --git a/src/mame/drivers/fidel_cc10.cpp b/src/mame/drivers/fidel_cc10.cpp
index 03b2cab3b19..8daae3ac5e4 100644
--- a/src/mame/drivers/fidel_cc10.cpp
+++ b/src/mame/drivers/fidel_cc10.cpp
@@ -27,12 +27,14 @@ advertisements, but box and manual still simply name it Checker Challenger.
******************************************************************************/
#include "emu.h"
+
#include "cpu/z80/z80.h"
#include "machine/bankdev.h"
#include "machine/i8255.h"
#include "machine/timer.h"
#include "sound/beep.h"
#include "video/pwm.h"
+
#include "speaker.h"
// internal artwork
@@ -94,18 +96,13 @@ private:
u8 ppi_portc_r();
void ppi_portc_w(u8 data);
- u8 m_inp_mux;
- u8 m_led_select;
- u8 m_7seg_data;
+ u8 m_inp_mux = 0;
+ u8 m_led_select = 0;
+ u8 m_7seg_data = 0;
};
void ccx_state::machine_start()
{
- // zerofill
- m_inp_mux = 0;
- m_led_select = 0;
- m_7seg_data = 0;
-
// register for savestates
save_item(NAME(m_inp_mux));
save_item(NAME(m_led_select));
diff --git a/src/mame/drivers/fidel_checkc2.cpp b/src/mame/drivers/fidel_checkc2.cpp
new file mode 100644
index 00000000000..d3ac45c9c22
--- /dev/null
+++ b/src/mame/drivers/fidel_checkc2.cpp
@@ -0,0 +1,250 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+// thanks-to:Sean Riddle
+/******************************************************************************
+
+Fidelity Checker Challenger (CR)
+
+Even though it has fewer levels and presumedly a weaker program, this one
+is a couple of months newer than model ACR (fidel_cc10.cpp).
+
+Hardware notes:
+- PCB label: P261A
+- NEC uCOM-43 MCU, label D546C 055 (die label same)
+- 256x4 RAM (NEC D2101AL-4)
+- 4-digit 7seg led display + 2 other leds, no sound
+
+TODO:
+- according to the manual, the right digits should blink when the CPU
+ opponent wants to make a double jump, but it doesn't blink on MAME
+
+******************************************************************************/
+
+#include "emu.h"
+
+#include "cpu/ucom4/ucom4.h"
+#include "video/pwm.h"
+
+// internal artwork
+#include "fidel_cr.lh" // clickable
+
+
+namespace {
+
+class cr_state : public driver_device
+{
+public:
+ cr_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_display(*this, "display"),
+ m_inputs(*this, "IN.%u", 0)
+ { }
+
+ void cr(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+
+private:
+ // devices/pointers
+ required_device<ucom4_cpu_device> m_maincpu;
+ required_device<pwm_display_device> m_display;
+ required_ioport_array<4> m_inputs;
+
+ // I/O handlers
+ void update_display();
+ void segsel_w(u8 data);
+ void seg0_w(u8 data);
+ void seg1_w(u8 data);
+ void control_w(u8 data);
+ void ram_w(u8 data);
+ u8 ram_r();
+ void rama0_w(u8 data);
+ void rama1_w(u8 data);
+ u8 input_r();
+
+ u8 m_ram[0x100];
+ u8 m_ram_address = 0;
+ u8 m_ram_data = 0;
+ u8 m_ram_control = 0;
+
+ u8 m_inp_mux = 0;
+ u8 m_led_select = 0;
+ u8 m_7seg_data = 0;
+};
+
+void cr_state::machine_start()
+{
+ memset(m_ram, 0, sizeof(m_ram));
+
+ // register for savestates
+ save_item(NAME(m_ram));
+ save_item(NAME(m_ram_address));
+ save_item(NAME(m_ram_data));
+ save_item(NAME(m_ram_control));
+ save_item(NAME(m_inp_mux));
+ save_item(NAME(m_led_select));
+ save_item(NAME(m_7seg_data));
+}
+
+
+
+/******************************************************************************
+ I/O
+******************************************************************************/
+
+void cr_state::update_display()
+{
+ m_display->matrix(m_led_select, bitswap<7>(m_7seg_data,3,2,1,0,6,5,4));
+}
+
+void cr_state::segsel_w(u8 data)
+{
+ // G: 7seg select
+ m_led_select = (m_led_select & 0x30) | data;
+ update_display();
+}
+
+void cr_state::seg0_w(u8 data)
+{
+ // H: 7seg data(low)
+ m_7seg_data = (m_7seg_data & 0xf0) | data;
+ update_display();
+}
+
+void cr_state::seg1_w(u8 data)
+{
+ // I: 7seg data(high)
+ m_7seg_data = (m_7seg_data & 0x0f) | data << 4;
+ update_display();
+}
+
+void cr_state::control_w(u8 data)
+{
+ // F0,F1: direct leds
+ m_led_select = (m_led_select & 0x0f) | (data << 4 & 0x30);
+ update_display();
+
+ // F2: RAM R/W, F3: RAM CE
+ if ((data & 0xc) == 8 && ~m_ram_control & 2)
+ m_ram[m_ram_address] = m_ram_data;
+ m_ram_control = data >> 2;
+}
+
+void cr_state::ram_w(u8 data)
+{
+ // C: RAM DI
+ m_ram_data = data;
+}
+
+u8 cr_state::ram_r()
+{
+ // B: RAM DO
+ return m_ram[m_ram_address];
+}
+
+void cr_state::rama0_w(u8 data)
+{
+ // E: RAM address(low), input mux
+ m_ram_address = (m_ram_address & 0xf0) | data;
+ m_inp_mux = data;
+}
+
+void cr_state::rama1_w(u8 data)
+{
+ // D: RAM address(high)
+ m_ram_address = (m_ram_address & 0x0f) | data << 4;
+}
+
+u8 cr_state::input_r()
+{
+ u8 data = 0;
+
+ // A: multiplexed inputs
+ for (int i = 0; i < 4; i++)
+ if (BIT(m_inp_mux, i))
+ data |= m_inputs[i]->read();
+
+ return data;
+}
+
+
+
+/******************************************************************************
+ Input Ports
+******************************************************************************/
+
+static INPUT_PORTS_START( cr )
+ PORT_START("IN.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
+
+ PORT_START("IN.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE)
+
+ PORT_START("IN.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("TO") PORT_CODE(KEYCODE_T)
+
+ PORT_START("IN.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD)
+INPUT_PORTS_END
+
+
+
+/******************************************************************************
+ Machine Configs
+******************************************************************************/
+
+void cr_state::cr(machine_config &config)
+{
+ /* basic machine hardware */
+ NEC_D546(config, m_maincpu, 400000); // approximation
+ m_maincpu->read_a().set(FUNC(cr_state::input_r));
+ m_maincpu->read_b().set(FUNC(cr_state::ram_r));
+ m_maincpu->write_c().set(FUNC(cr_state::ram_w));
+ m_maincpu->write_d().set(FUNC(cr_state::rama1_w));
+ m_maincpu->write_e().set(FUNC(cr_state::rama0_w));
+ m_maincpu->write_f().set(FUNC(cr_state::control_w));
+ m_maincpu->write_g().set(FUNC(cr_state::segsel_w));
+ m_maincpu->write_h().set(FUNC(cr_state::seg0_w));
+ m_maincpu->write_i().set(FUNC(cr_state::seg1_w));
+
+ /* video hardware */
+ PWM_DISPLAY(config, m_display).set_size(6, 7);
+ m_display->set_segmask(0xf, 0x7f);
+ config.set_default_layout(layout_fidel_cr);
+}
+
+
+
+/******************************************************************************
+ ROM Definitions
+******************************************************************************/
+
+ROM_START( checkc2 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d546c-055", 0x0000, 0x0800, CRC(ee2de21e) SHA1(ca727093dc36dc15453bc5cca4e559fdc8242355) )
+ROM_END
+
+} // anonymous namespace
+
+
+
+/******************************************************************************
+ Drivers
+******************************************************************************/
+
+// YEAR NAME PARENT CMP MACHINE INPUT CLASS INIT COMPANY, FULLNAME, FLAGS
+CONS( 1978, checkc2, 0, 0, cr, cr, cr_state, empty_init, "Fidelity Electronics", "Checker Challenger (model CR, 2 levels)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/fidel_dames.cpp b/src/mame/drivers/fidel_dames.cpp
index e64eee89d3a..a3b56f15918 100644
--- a/src/mame/drivers/fidel_dames.cpp
+++ b/src/mame/drivers/fidel_dames.cpp
@@ -6,10 +6,10 @@
Fidelity Dame Sensory Challenger (DSC)
Hardware notes:
+- PCB label: 510-1030A01
- Z80A CPU @ 3.9MHz
- 8KB ROM(MOS 2364), 1KB RAM(2*TMM314APL)
- 4-digit 7seg panel, sensory board with 50 buttons
-- PCB label 510-1030A01
Instead of chess, it's a checkers game for once (international rules).
diff --git a/src/mame/drivers/fidel_vsc.cpp b/src/mame/drivers/fidel_vsc.cpp
index 07dacd2b342..70a83866a1b 100644
--- a/src/mame/drivers/fidel_vsc.cpp
+++ b/src/mame/drivers/fidel_vsc.cpp
@@ -148,13 +148,15 @@ IFP: Impact Printer - also compatible with C64 apparently.
******************************************************************************/
#include "emu.h"
+
#include "cpu/z80/z80.h"
#include "machine/i8255.h"
+#include "machine/clock.h"
#include "machine/sensorboard.h"
#include "machine/z80pio.h"
-#include "machine/timer.h"
#include "sound/s14001a.h"
#include "video/pwm.h"
+
#include "speaker.h"
// internal artwork
@@ -169,7 +171,6 @@ public:
vsc_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_nmi_on(*this, "nmi_on"),
m_z80pio(*this, "z80pio"),
m_ppi8255(*this, "ppi8255"),
m_board(*this, "board"),
@@ -189,7 +190,6 @@ protected:
private:
// devices/pointers
required_device<cpu_device> m_maincpu;
- required_device<timer_device> m_nmi_on;
required_device<z80pio_device> m_z80pio;
required_device<i8255_device> m_ppi8255;
required_device<sensorboard_device> m_board;
@@ -205,10 +205,6 @@ private:
u8 main_io_trampoline_r(offs_t offset);
void main_io_trampoline_w(offs_t offset, u8 data);
- // periodic interrupts
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(nmi_on) { m_maincpu->set_input_line(Line, ASSERT_LINE); }
- template<int Line> TIMER_DEVICE_CALLBACK_MEMBER(nmi_off) { m_maincpu->set_input_line(Line, CLEAR_LINE); }
-
// I/O handlers
void update_display();
u8 speech_r(offs_t offset);
@@ -426,10 +422,9 @@ void vsc_state::vsc(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &vsc_state::main_map);
m_maincpu->set_addrmap(AS_IO, &vsc_state::main_io);
- const attotime nmi_period = attotime::from_hz(600); // 555 timer, ideal frequency is 600Hz (measurement was 587Hz)
- TIMER(config, m_nmi_on).configure_periodic(FUNC(vsc_state::nmi_on<INPUT_LINE_NMI>), nmi_period);
- m_nmi_on->set_start_delay(nmi_period - attotime::from_usec(845)); // active for 0.845ms (approx half)
- TIMER(config, "nmi_off").configure_periodic(FUNC(vsc_state::nmi_off<INPUT_LINE_NMI>), nmi_period);
+ auto &nmi_clock(CLOCK(config, "nmi_clock", 600)); // 555 timer, ideal frequency is 600Hz (measurement was 587Hz)
+ nmi_clock.set_pulse_width(attotime::from_usec(845)); // active for 0.845ms (approx half)
+ nmi_clock.signal_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
I8255(config, m_ppi8255);
m_ppi8255->out_pa_callback().set(FUNC(vsc_state::ppi_porta_w));
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index 3f2e154bb71..ab6759c1c3d 100644
--- a/src/mame/drivers/hh_ucom4.cpp
+++ b/src/mame/drivers/hh_ucom4.cpp
@@ -10,7 +10,7 @@ known chips:
serial device etc.
----------------------------------------------------------------
- *055 uPD546C 1979, Fidelity Checker Challenger (CR)
+ 055 uPD546C 1978, Fidelity Checker Challenger (CR) -> fidel_checkc2.cpp
@017 uPD552C 1979, Bambino UFO Master-Blaster Station (ET-02)
@042 uPD552C 1980, Tomy Cosmic Combat (TN-??)
diff --git a/src/mame/drivers/mrgame.cpp b/src/mame/drivers/mrgame.cpp
index 77446a96c15..721614e9906 100644
--- a/src/mame/drivers/mrgame.cpp
+++ b/src/mame/drivers/mrgame.cpp
@@ -7,12 +7,7 @@
These games have a M68000 and 3x Z80, and a M114 Sound IC.
They have a video screen upon which the scores and other info is displayed.
-Status:
-- motrshow, motrshowa, dakar working in the electronic sense, but not mechanically
-- macattck most roms are missing
-- wcup90 different hardware, partially coded based on macattck schematic
-
-How to set up the machine (motrshow, motrshowa, dakar):
+How to set up the machine (motor show, dakar, wcup90):
- These machines need to be loaded with default settings before they can accept coins
- Press - key (minus in main keyboard)
- Press again until you see test 25 (Motor Show) or test 23 (Dakar)
@@ -24,6 +19,9 @@ How to set up the machine (motrshow, motrshowa, dakar):
- However, the game cannot be played due to missing balls.
ToDo:
+- Video
+- Outputs
+- Inputs
- Support for electronic volume control
- Audio rom banking
- Most sounds missing due to unemulated M114 chip
@@ -45,6 +43,7 @@ ToDo:
#include "screen.h"
#include "speaker.h"
+namespace {
class mrgame_state : public driver_device
{
@@ -418,7 +417,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(mrgame_state::irq_timer)
}
}
-// layouts from pinmame
static const gfx_layout charlayout =
{
8, 8,
@@ -485,54 +483,8 @@ void mrgame_state::mrgame_palette(palette_device &palette) const
}
}
-// most of this came from pinmame as the diagram doesn't make a lot of sense
uint32_t mrgame_state::screen_update_mrgame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- uint8_t x,y,ptr=0,col;
- int32_t scrolly[32];
- uint16_t chr;
- bool flipx,flipy;
-
- // text
- for (x = 0; x < 32; x++)
- {
- scrolly[x] = -m_p_objectram[ptr++];
- col = m_p_objectram[ptr++];
-
- for (y = 0; y < 32; y++)
- {
- chr = m_p_videoram[x+y*32] | (m_gfx_bank << 8);
-
- m_gfxdecode->gfx(0)->opaque(*m_tile_bitmap, m_tile_bitmap->cliprect(),
- chr,
- col,
- m_flip,0,
- x*8,y*8);
- }
- }
-
- // scroll each column as needed
- copyscrollbitmap(bitmap,*m_tile_bitmap,0,nullptr,32,scrolly,cliprect);
-
-
- // sprites
- for (ptr = 0x40; ptr < 0x60; ptr += 4)
- {
- x = m_p_objectram[ptr + 3] + 1;
- y = 255 - m_p_objectram[ptr];
- flipx = BIT(m_p_objectram[ptr + 1], 6);
- flipy = BIT(m_p_objectram[ptr + 1], 7);
- chr = (m_p_objectram[ptr + 1] & 0x3f) | (m_gfx_bank << 6);
- col = m_p_objectram[ptr + 2];
-
- if ((y > 16) && (x > 24))
- m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
- chr,
- col,
- flipx,flipy,
- x,y-16,0);
- }
-
return 0;
}
@@ -650,8 +602,16 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(motrshow)
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpu_ic13.rom", 0x000000, 0x8000, CRC(e862ca71) SHA1(b02e5f39f9427d58b70b7999a5ff6075beff05ae))
- ROM_LOAD16_BYTE("cpu_ic14.rom", 0x000001, 0x8000, CRC(c898ae25) SHA1(f0e1369284a1e0f394f1d40281fd46252016602e))
+ ROM_DEFAULT_BIOS("0")
+ ROM_SYSTEM_BIOS(0, "0", "0")
+ ROMX_LOAD( "cpu_0.ic13", 0x0000, 0x8000, CRC(e862ca71) SHA1(b02e5f39f9427d58b70b7999a5ff6075beff05ae), ROM_SKIP(1) | ROM_BIOS(0) )
+ ROMX_LOAD( "cpu_0.ic14", 0x0001, 0x8000, CRC(c898ae25) SHA1(f0e1369284a1e0f394f1d40281fd46252016602e), ROM_SKIP(1) | ROM_BIOS(0) )
+ ROM_SYSTEM_BIOS(1, "1", "1")
+ ROMX_LOAD( "cpu_1.ic13a", 0x0000, 0x8000, CRC(2dbdd9d4) SHA1(b404814a4e83ead6da3c57818ae97f23d380f9da), ROM_SKIP(1) | ROM_BIOS(1) )
+ ROMX_LOAD( "cpu_1.ic14b", 0x0001, 0x8000, CRC(0bd98fec) SHA1(b90a7e997db59740398003ba94a69118b1ee70af), ROM_SKIP(1) | ROM_BIOS(1) )
+ ROM_SYSTEM_BIOS(2, "2", "2")
+ ROMX_LOAD( "cpu_2.ic13b", 0x0000, 0x8000, CRC(9cd2d6f3) SHA1(6f123367ccbe1376b4bd8a5ee0f636efe42f9eac), ROM_SKIP(1) | ROM_BIOS(2) )
+ ROMX_LOAD( "cpu_2.ic14b", 0x0001, 0x8000, CRC(0bd98fec) SHA1(b90a7e997db59740398003ba94a69118b1ee70af), ROM_SKIP(1) | ROM_BIOS(2) )
ROM_REGION(0x8000, "video", 0)
ROM_LOAD("vid_ic14.rom", 0x0000, 0x8000, CRC(1d4568e2) SHA1(bfc2bb59708ce3a09f9a1b3460ed8d5269840c97))
@@ -674,18 +634,21 @@ ROM_START(motrshow)
ROM_LOAD("snd_ic36.rom", 0x8000, 0x8000, CRC(4f42be6e) SHA1(684e988f413cd21c785ad5d60ef5eaddddaf72ab))
ROM_END
-ROM_START(motrshowa)
+/*-----------------------------------------------------------------------
+/ Fast Track (1989) A predecessor of Motor Show. Green Screen text only
+/-----------------------------------------------------------------------*/
+ROM_START(fasttrack)
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpuic13a.rom", 0x000000, 0x8000, CRC(2dbdd9d4) SHA1(b404814a4e83ead6da3c57818ae97f23d380f9da))
- ROM_LOAD16_BYTE("cpuic14b.rom", 0x000001, 0x8000, CRC(0bd98fec) SHA1(b90a7e997db59740398003ba94a69118b1ee70af))
+ ROM_LOAD16_BYTE("cpuic13.rom", 0x0000, 0x8000, CRC(675cbef6) SHA1(0561aee09bb459a79e54a903d39ef5e5288e8368))
+ ROM_LOAD16_BYTE("cpuic14.rom", 0x0001, 0x8000, CRC(57a1c42f) SHA1(fbfc7527068a1e68afa4c20d5c2650399a1ee3cd))
ROM_REGION(0x8000, "video", 0)
- ROM_LOAD("vid_ic14.rom", 0x0000, 0x8000, CRC(1d4568e2) SHA1(bfc2bb59708ce3a09f9a1b3460ed8d5269840c97))
+ ROM_LOAD("ft_vid1.764", 0x0000, 0x2000, NO_DUMP ) // only dump we found was all 0xF7
- ROM_REGION(0x10000, "chargen", 0)
- ROM_LOAD("vid_ic55.rom", 0x0000, 0x8000, CRC(c27a4ded) SHA1(9c2c9b17f1e71afb74bdfbdcbabb99ef935d32db))
- ROM_LOAD("vid_ic56.rom", 0x8000, 0x8000, CRC(1664ec8d) SHA1(e7b15acdac7dfc51b668e908ca95f02a2b569737))
+ ROM_REGION(0x10000, "chargen", ROMREGION_ERASEFF)
+ ROM_LOAD("ft_vid2.532", 0x0000, 0x001000, CRC(5145685b) SHA1(6857be53efee5d439311ddb93e9f509590ff26c9) ) // 2nd half is rubbish
+ // from here wasn't supplied, assumed same as motorshow
ROM_REGION(0x0020, "proms", 0)
ROM_LOAD("vid_ic66.rom", 0x0000, 0x0020, CRC(5b585252) SHA1(b88e56ebdce2c3a4b170aff4b05018e7c21a79b8))
@@ -705,31 +668,31 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(macattck)
ROM_REGION16_BE(0x10000, "roms", 0)
- ROM_LOAD16_BYTE("cpu_ic13.rom", 0x000000, 0x8000, NO_DUMP)
- ROM_LOAD16_BYTE("cpu_ic14.rom", 0x000001, 0x8000, NO_DUMP)
+ ROM_LOAD16_BYTE("cpu_ic13.rom", 0x0000, 0x8000, CRC(35cabad1) SHA1(01279df881b0d7d6586c1b8570b12bdc1fb9ff21) )
+ ROM_LOAD16_BYTE("cpu_ic14.rom", 0x0001, 0x8000, CRC(6a4d7b89) SHA1(090e1a6c069cb6e5efd26a0260df613375f0b063) )
ROM_REGION(0x8000, "video", 0)
- ROM_LOAD("vid_ic91.rom", 0x0000, 0x8000, CRC(42d2ba01) SHA1(c13d38c2798575760461912cef65dde57dfd938c))
+ ROM_LOAD("vid_ic91.rom", 0x0000, 0x8000, CRC(42d2ba01) SHA1(c13d38c2798575760461912cef65dde57dfd938c) )
- ROM_REGION(0x30000, "chargen", 0)
- ROM_LOAD("vid_ic14.rom", 0x00000, 0x8000, CRC(f6e047fb) SHA1(6be712dda60257b9e7014315c8fee19812622bf6))
- ROM_LOAD("vid_ic15.rom", 0x08000, 0x8000, CRC(405a8f54) SHA1(4d58915763db3c3be2bfc166be1a12285ff2c38b))
- ROM_LOAD("vid_ic16.rom", 0x10000, 0x8000, CRC(063ea783) SHA1(385dbfcc8ecd3a784f9a8752d00e060b48d70d6a))
- ROM_LOAD("vid_ic17.rom", 0x18000, 0x8000, CRC(9f95abf8) SHA1(d71cf36c8bf27ad41b2d3cebd0af620a34ce0062) BAD_DUMP)
- ROM_LOAD("vid_ic18.rom", 0x20000, 0x8000, CRC(83ef25f8) SHA1(bab482badb8646b099dbb197ca9af3a126b274e3))
+ ROM_REGION(0x28000, "chargen", 0)
+ ROM_LOAD("vid_ic14.rom", 0x00000, 0x8000, CRC(f6e047fb) SHA1(6be712dda60257b9e7014315c8fee19812622bf6) )
+ ROM_LOAD("vid_ic15.rom", 0x08000, 0x8000, CRC(405a8f54) SHA1(4d58915763db3c3be2bfc166be1a12285ff2c38b) )
+ ROM_LOAD("vid_ic16.rom", 0x10000, 0x8000, CRC(063ea783) SHA1(385dbfcc8ecd3a784f9a8752d00e060b48d70d6a) )
+ ROM_LOAD("vid_ic17.rom", 0x18000, 0x8000, CRC(7494e44e) SHA1(c7c062508e81b9fd818f36f80d4a6da02c3bda40) )
+ ROM_LOAD("vid_ic18.rom", 0x20000, 0x8000, CRC(83ef25f8) SHA1(bab482badb8646b099dbb197ca9af3a126b274e3) )
ROM_REGION(0x0020, "proms", 0)
- ROM_LOAD("vid_ic61.rom", 0x0000, 0x0020, CRC(538c72ae) SHA1(f704492568257fcc4a4f1189207c6fb6526eb81c) BAD_DUMP)
+ ROM_LOAD("vid_ic61.rom", 0x0000, 0x0020, CRC(538c72ae) SHA1(f704492568257fcc4a4f1189207c6fb6526eb81c) BAD_DUMP) // from wcup90, assumed to be the same
ROM_REGION(0x10000, "audio1", 0)
- ROM_LOAD("snd_ic06.rom", 0x0000, 0x8000, NO_DUMP)
+ ROM_LOAD("snd_ic06.rom", 0x0000, 0x8000, CRC(4ab94d16) SHA1(4c3755489f699c751d664f420b9852ef16bb3aa6) )
ROM_REGION(0x4000, "m114", 0)
- ROM_LOAD("snd_ic22.rom", 0x0000, 0x4000, NO_DUMP)
+ ROM_LOAD("snd_ic22.rom", 0x0000, 0x4000, CRC(9d3546c5) SHA1(cc6e91288692b927f7d046e192b1fd128c126d0d) )
ROM_REGION(0x10000, "audio2", 0)
- ROM_LOAD("snd_ic35.rom", 0x0000, 0x8000, NO_DUMP)
- ROM_LOAD("snd_ic36.rom", 0x8000, 0x8000, NO_DUMP)
+ ROM_LOAD("snd_ic35.rom", 0x0000, 0x8000, CRC(52e9811c) SHA1(52223cf14a185b4dab14143d797000baf6d618cc) )
+ ROM_LOAD("snd_ic36.rom", 0x8000, 0x8000, CRC(2e6b5822) SHA1(9e390e4b71cc103ec3d781575df484a3e4217b3b) )
ROM_END
/*-------------------------------------------------------------------
@@ -767,9 +730,11 @@ ROM_START(wcup90)
ROM_LOAD("snd_ic44.rom", 0x00000, 0x8000, CRC(00946570) SHA1(83e7dd89844679571ab2a803295c8ca8941a4ac7))
ROM_END
+} // anonymous namespace
+
GAME(1988, dakar, 0, mrgame, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Dakar", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-GAME(1989, motrshow, 0, mrgame, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Motor Show (set 1)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
-GAME(1989, motrshowa, motrshow, mrgame, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Motor Show (set 2)", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME(1989, fasttrack, motrshow, mrgame, mrgame, mrgame_state, empty_init, ROT0, "Mr Game", "Fast Track", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME(1989, motrshow, 0, mrgame, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Motor Show", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
GAME(1990, macattck, 0, wcup90, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "Mac Attack", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1990, wcup90, 0, wcup90, mrgame, mrgame_state, init_mrgame, ROT0, "Mr Game", "World Cup 90", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp
index b6007e3385b..c151ddd9468 100644
--- a/src/mame/drivers/peyper.cpp
+++ b/src/mame/drivers/peyper.cpp
@@ -840,6 +840,7 @@ ROM_START(odisea)
ROM_LOAD("odiseab.bin", 0x2000, 0x2000, CRC(8bdf7c17) SHA1(7202b4770646fce5b2ba9e3b8ca097a993123b14))
ROM_LOAD("odiseac.bin", 0x4000, 0x2000, CRC(832dee5e) SHA1(9b87ffd768ab2610f2352adcf22c4a7880de47ab))
ROM_END
+// Note that odisea roms of size 0x4000 exist on the web, the first half of each is identical to what we have, the 2nd half is all 0xFF.
/*-------------------------------------------------------------------
/ Nemesis (1986)
diff --git a/src/mame/drivers/radio86.cpp b/src/mame/drivers/radio86.cpp
index 882f4a46867..c7f8a7ca01f 100644
--- a/src/mame/drivers/radio86.cpp
+++ b/src/mame/drivers/radio86.cpp
@@ -11,7 +11,9 @@
#include "emu.h"
#include "includes/radio86.h"
+
#include "cpu/i8085/i8085.h"
+
#include "screen.h"
#include "speaker.h"
diff --git a/src/mame/includes/partner.h b/src/mame/includes/partner.h
index e52674b1ac0..e5234f36b93 100644
--- a/src/mame/includes/partner.h
+++ b/src/mame/includes/partner.h
@@ -15,8 +15,9 @@
#include "imagedev/floppy.h"
#include "machine/i8255.h"
-#include "machine/wd_fdc.h"
#include "machine/ram.h"
+#include "machine/wd_fdc.h"
+
class partner_state : public radio86_state
{
@@ -31,6 +32,10 @@ public:
void init_partner();
void partner(machine_config &config);
+protected:
+ void machine_reset() override;
+ void machine_start() override;
+
private:
u8 floppy_r(offs_t offset);
void floppy_w(offs_t offset, u8 data);
@@ -54,9 +59,6 @@ private:
required_device<ram_device> m_ram;
required_device<fd1793_device> m_fdc;
required_memory_bank_array<13> m_bank;
-
- void machine_reset() override;
- void machine_start() override;
};
diff --git a/src/mame/includes/radio86.h b/src/mame/includes/radio86.h
index 958fe495ac4..27c97170428 100644
--- a/src/mame/includes/radio86.h
+++ b/src/mame/includes/radio86.h
@@ -10,12 +10,13 @@
#pragma once
+#include "bus/generic/carts.h"
+#include "bus/generic/slot.h"
+#include "imagedev/cassette.h"
#include "machine/i8255.h"
#include "machine/i8257.h"
#include "video/i8275.h"
-#include "imagedev/cassette.h"
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
+
#include "emupal.h"
@@ -52,8 +53,6 @@ public:
void init_radio86();
protected:
-
-
void machine_reset() override;
void machine_start() override;
diff --git a/src/mame/layout/fidel_cr.lay b/src/mame/layout/fidel_cr.lay
new file mode 100644
index 00000000000..6a77ad58c45
--- /dev/null
+++ b/src/mame/layout/fidel_cr.lay
@@ -0,0 +1,174 @@
+<?xml version="1.0"?>
+<!--
+license:CC0
+-->
+<mamelayout version="2">
+
+<!-- define elements -->
+
+ <element name="static_gray"><rect><color red="0.6" green="0.6" blue="0.6" /></rect></element>
+
+ <element name="digit" defstate="0">
+ <led7seg><color red="1.0" green="0.1" blue="0.15" /></led7seg>
+ </element>
+
+ <element name="led" defstate="0">
+ <disk state="1"><color red="1.0" green="0.1" blue="0.15" /></disk>
+ <disk state="0"><color red="0.1" green="0.01" blue="0.015" /></disk>
+ </element>
+
+ <element name="hl" defstate="0">
+ <text string=" ">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </text>
+ <rect state="1">
+ <bounds x="0.0" y="0.0" width="1.0" height="1.0" />
+ <color red="0.0" green="0.0" blue="0.0" />
+ </rect>
+ </element>
+
+ <element name="text_win"><text string="I WIN"><color red="0.6" green="0.6" blue="0.6" /></text></element>
+ <element name="text_lose"><text string="I LOSE"><color red="0.6" green="0.6" blue="0.6" /></text></element>
+ <element name="text_from"><text string="FROM"><color red="0.6" green="0.6" blue="0.6" /></text></element>
+ <element name="text_to"><text string="TO"><color red="0.6" green="0.6" blue="0.6" /></text></element>
+
+ <element name="text_b1">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="RE"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b2">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="CL"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b3">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="TO"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b4">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="EN"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b5">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="LV"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b6">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="7"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b7">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="8"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b8">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="9"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b9">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="PV"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b10">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="4"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b11">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="5"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b12">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="6"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b13">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="0"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b14">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="1"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b15">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="2"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+ <element name="text_b16">
+ <rect><color red="0.6" green="0.6" blue="0.6" /></rect>
+ <text string="3"><color red="0.04" green="0.04" blue="0.04" /></text>
+ </element>
+
+
+<!-- build screen -->
+
+ <view name="Internal Layout">
+ <bounds left="-0.5" right="18" top="7.7" bottom="36" />
+
+ <!-- 7segs/leds -->
+ <element ref="text_win"><bounds x="0.7" y="8.2" width="8" height="2" /></element>
+ <element ref="text_lose"><bounds x="10.5" y="8.2" width="8" height="2" /></element>
+ <element name="4.a" ref="led"><bounds x="0" y="8.5" width="1.5" height="1.5" /></element>
+ <element name="5.a" ref="led"><bounds x="9.5" y="8.5" width="1.5" height="1.5" /></element>
+
+ <element ref="text_from"><bounds x="0" y="17.2" width="8" height="2" /></element>
+ <element ref="text_to"><bounds x="9.5" y="17.2" width="8" height="2" /></element>
+
+ <element name="digit0" ref="digit"><bounds x="0" y="11" width="4" height="6" /></element>
+ <element name="digit1" ref="digit"><bounds x="4" y="11" width="4" height="6" /></element>
+ <element name="digit2" ref="digit"><bounds x="9.5" y="11" width="4" height="6" /></element>
+ <element name="digit3" ref="digit"><bounds x="13.5" y="11" width="4" height="6" /></element>
+
+ <!-- button panel -->
+ <element ref="static_gray"><bounds x="0" y="20" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="4.5" y="20" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="9" y="20" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="13.5" y="20" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="0" y="24" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="4.5" y="24" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="9" y="24" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="13.5" y="24" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="0" y="28" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="4.5" y="28" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="9" y="28" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="13.5" y="28" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="0" y="32" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="4.5" y="32" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="9" y="32" width="4" height="3.5" /></element>
+ <element ref="static_gray"><bounds x="13.5" y="32" width="4" height="3.5" /></element>
+
+ <element ref="text_b1"><bounds x="0.1" y="20.75" width="3.8" height="2" /></element>
+ <element ref="text_b2"><bounds x="4.6" y="20.75" width="3.8" height="2" /></element>
+ <element ref="text_b3"><bounds x="9.1" y="20.75" width="3.8" height="2" /></element>
+ <element ref="text_b4"><bounds x="13.6" y="20.75" width="3.8" height="2" /></element>
+ <element ref="text_b5"><bounds x="0.1" y="24.75" width="3.8" height="2" /></element>
+ <element ref="text_b6"><bounds x="4.6" y="24.75" width="3.8" height="2" /></element>
+ <element ref="text_b7"><bounds x="9.1" y="24.75" width="3.8" height="2" /></element>
+ <element ref="text_b8"><bounds x="13.6" y="24.75" width="3.8" height="2" /></element>
+ <element ref="text_b9"><bounds x="0.1" y="28.75" width="3.8" height="2" /></element>
+ <element ref="text_b10"><bounds x="4.6" y="28.75" width="3.8" height="2" /></element>
+ <element ref="text_b11"><bounds x="9.1" y="28.75" width="3.8" height="2" /></element>
+ <element ref="text_b12"><bounds x="13.6" y="28.75" width="3.8" height="2" /></element>
+ <element ref="text_b13"><bounds x="0.1" y="32.75" width="3.8" height="2" /></element>
+ <element ref="text_b14"><bounds x="4.6" y="32.75" width="3.8" height="2" /></element>
+ <element ref="text_b15"><bounds x="9.1" y="32.75" width="3.8" height="2" /></element>
+ <element ref="text_b16"><bounds x="13.6" y="32.75" width="3.8" height="2" /></element>
+
+ <element ref="hl" inputtag="RESET" inputmask="0x01"><bounds x="0" y="20" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.1" inputmask="0x01"><bounds x="4.5" y="20" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.2" inputmask="0x01"><bounds x="9" y="20" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.3" inputmask="0x01"><bounds x="13.5" y="20" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.0" inputmask="0x02"><bounds x="0" y="24" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.1" inputmask="0x02"><bounds x="4.5" y="24" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.2" inputmask="0x02"><bounds x="9" y="24" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.3" inputmask="0x02"><bounds x="13.5" y="24" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.0" inputmask="0x04"><bounds x="0" y="28" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.1" inputmask="0x04"><bounds x="4.5" y="28" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.2" inputmask="0x04"><bounds x="9" y="28" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.3" inputmask="0x04"><bounds x="13.5" y="28" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.0" inputmask="0x08"><bounds x="0" y="32" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.1" inputmask="0x08"><bounds x="4.5" y="32" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.2" inputmask="0x08"><bounds x="9" y="32" width="4" height="3.5" /><color alpha="0.2" /></element>
+ <element ref="hl" inputtag="IN.3" inputmask="0x08"><bounds x="13.5" y="32" width="4" height="3.5" /><color alpha="0.2" /></element>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/machine/partner.cpp b/src/mame/machine/partner.cpp
index b62fce1383a..8cf6b347979 100644
--- a/src/mame/machine/partner.cpp
+++ b/src/mame/machine/partner.cpp
@@ -8,12 +8,12 @@
****************************************************************************/
-
#include "emu.h"
-#include "cpu/i8085/i8085.h"
-#include "includes/radio86.h"
#include "includes/partner.h"
+#include "cpu/i8085/i8085.h"
+
+
/* Driver initialization */
void partner_state::init_partner()
{
@@ -355,7 +355,7 @@ I8275_DRAW_CHARACTER_MEMBER(partner_state::display_pixels)
if (rvv)
pixels ^= 0xff;
- for(int i=0;i<6;i++)
+ for (int i=0;i<6;i++)
bitmap.pix(y, x + i) = palette[(pixels >> (5-i)) & 1];
}
diff --git a/src/mame/machine/radio86.cpp b/src/mame/machine/radio86.cpp
index 577d141815e..a347ddfc139 100644
--- a/src/mame/machine/radio86.cpp
+++ b/src/mame/machine/radio86.cpp
@@ -10,9 +10,9 @@
#include "emu.h"
-#include "cpu/i8085/i8085.h"
#include "includes/radio86.h"
+#include "cpu/i8085/i8085.h"
void radio86_state::radio86_init_keyboard()
@@ -186,8 +186,7 @@ u8 radio86_state::radio86ram_romdisk_porta_r()
u8 *romdisk = m_rom + 0x10000;
if ((m_disk_sel & 0x0f) ==0)
return romdisk[m_romdisk_msb*256+m_romdisk_lsb];
- else
- if (m_disk_sel==0xdf)
+ else if (m_disk_sel==0xdf)
return m_radio_ram_disk[m_romdisk_msb*256+m_romdisk_lsb + 0x10000];
else
return m_radio_ram_disk[m_romdisk_msb*256+m_romdisk_lsb];
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index cd2223df046..f65874186a6 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -1305,11 +1305,14 @@ cdtv // Commodore CDTV
cdtvn //
@source:ampoker2.cpp
-ampkr228 // 1990 bootleg
+ampkr228 // 1990 bootleg?
ampkr2b1 // 1990 bootleg
ampkr2b2 // 1990 bootleg
ampkr2b3 // 1994 bootleg
ampkr2b4 // 1994 bootleg
+ampkr2jsp // 1994 bootleg?
+ampkr2jspa // 1994 bootleg?
+ampkr2jspb // 1994 bootleg?
ampkr95 // 1995 bootleg
ampoker2 // (c) 1990 Novomatic
arizna10 // 1995 bootleg
@@ -13817,6 +13820,9 @@ backgamc //
cc7 //
cc7a //
+@source:fidel_checkc2.cpp
+checkc2
+
@source:fidel_chesster.cpp
chesster //
chesstera //
@@ -30707,9 +30713,9 @@ mrflea // (c) 1982
@source:mrgame.cpp
dakar //
+fasttrack //
macattck //
motrshow //
-motrshowa //
wcup90 //
@source:mrjong.cpp
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 6f5a06ed7b2..15e842b590c 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -316,6 +316,7 @@ fidel_card.cpp
fidel_cc1.cpp
fidel_cc10.cpp
fidel_cc7.cpp
+fidel_checkc2.cpp
fidel_chesster.cpp
fidel_csc.cpp
fidel_dames.cpp