summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/rs232/pty.c138
-rw-r--r--src/devices/bus/rs232/pty.h52
-rw-r--r--src/devices/bus/rs232/rs232.c2
-rw-r--r--src/devices/machine/atahle.c8
-rw-r--r--src/devices/machine/atahle.h6
-rw-r--r--src/devices/machine/idectrl.c8
-rw-r--r--src/emu/dipty.c85
-rw-r--r--src/emu/dipty.h48
-rw-r--r--src/emu/emu.h1
-rw-r--r--src/emu/ui/info_pty.c44
-rw-r--r--src/emu/ui/info_pty.h24
-rw-r--r--src/emu/ui/mainmenu.c9
-rw-r--r--src/emu/ui/mainmenu.h3
-rw-r--r--src/mame/arcade.lst14
-rw-r--r--src/mame/drivers/aleck64.c6
-rw-r--r--src/mame/drivers/camplynx.c428
-rw-r--r--src/mame/drivers/peplus.c379
-rw-r--r--src/osd/osdcomm.h1
-rw-r--r--src/osd/osdcore.h19
-rw-r--r--src/osd/osdmini/minifile.c8
-rw-r--r--src/osd/sdl/sdlfile.c19
-rw-r--r--src/osd/sdl/sdlfile.h1
-rw-r--r--src/osd/sdl/sdlptty_os2.c5
-rw-r--r--src/osd/sdl/sdlptty_unix.c124
-rw-r--r--src/osd/windows/winfile.c8
25 files changed, 1136 insertions, 304 deletions
diff --git a/src/devices/bus/rs232/pty.c b/src/devices/bus/rs232/pty.c
new file mode 100644
index 00000000000..bc673318e2a
--- /dev/null
+++ b/src/devices/bus/rs232/pty.c
@@ -0,0 +1,138 @@
+// license:BSD-3-Clause
+// copyright-holders:F. Ulivi
+//
+#include <stdio.h>
+#include "pty.h"
+
+static const int TIMER_POLL = 1;
+
+pseudo_terminal_device::pseudo_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, PSEUDO_TERMINAL, "Pseudo terminal", tag, owner, clock, "pseudo_terminal", __FILE__),
+ device_serial_interface(mconfig, *this),
+ device_rs232_port_interface(mconfig, *this),
+ device_pty_interface(mconfig, *this),
+ m_rs232_txbaud(*this, "RS232_TXBAUD"),
+ m_rs232_rxbaud(*this, "RS232_RXBAUD"),
+ m_rs232_startbits(*this, "RS232_STARTBITS"),
+ m_rs232_databits(*this, "RS232_DATABITS"),
+ m_rs232_parity(*this, "RS232_PARITY"),
+ m_rs232_stopbits(*this, "RS232_STOPBITS"),
+ m_input_count(0),
+ m_input_index(0)
+{
+}
+
+WRITE_LINE_MEMBER(pseudo_terminal_device::update_serial)
+{
+ int startbits = convert_startbits(m_rs232_startbits->read());
+ int databits = convert_databits(m_rs232_databits->read());
+ parity_t parity = convert_parity(m_rs232_parity->read());
+ stop_bits_t stopbits = convert_stopbits(m_rs232_stopbits->read());
+
+ set_data_frame(startbits, databits, parity, stopbits);
+
+ int txbaud = convert_baud(m_rs232_txbaud->read());
+ set_tra_rate(txbaud);
+
+ int rxbaud = convert_baud(m_rs232_rxbaud->read());
+ set_rcv_rate(rxbaud);
+
+ output_rxd(1);
+
+ // TODO: make this configurable
+ output_dcd(0);
+ output_dsr(0);
+ output_cts(0);
+}
+
+static INPUT_PORTS_START(pseudo_terminal)
+ MCFG_RS232_BAUD("RS232_TXBAUD", RS232_BAUD_9600, "TX Baud", pseudo_terminal_device, update_serial)
+ MCFG_RS232_BAUD("RS232_RXBAUD", RS232_BAUD_9600, "RX Baud", pseudo_terminal_device, update_serial)
+ MCFG_RS232_STARTBITS("RS232_STARTBITS", RS232_STARTBITS_1, "Start Bits", pseudo_terminal_device, update_serial)
+ MCFG_RS232_DATABITS("RS232_DATABITS", RS232_DATABITS_8, "Data Bits", pseudo_terminal_device, update_serial)
+ MCFG_RS232_PARITY("RS232_PARITY", RS232_PARITY_NONE, "Parity", pseudo_terminal_device, update_serial)
+ MCFG_RS232_STOPBITS("RS232_STOPBITS", RS232_STOPBITS_1, "Stop Bits", pseudo_terminal_device, update_serial)
+INPUT_PORTS_END
+
+ioport_constructor pseudo_terminal_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME(pseudo_terminal);
+}
+
+void pseudo_terminal_device::device_start()
+{
+ m_timer_poll = timer_alloc(TIMER_POLL);
+
+ open();
+}
+
+void pseudo_terminal_device::device_stop()
+{
+ close();
+}
+
+void pseudo_terminal_device::device_reset()
+{
+ update_serial(0);
+ queue();
+}
+
+void pseudo_terminal_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ case TIMER_POLL:
+ queue();
+ break;
+
+ default:
+ device_serial_interface::device_timer(timer, id, param, ptr);
+ }
+}
+
+void pseudo_terminal_device::tra_callback()
+{
+ output_rxd(transmit_register_get_data_bit());
+}
+
+void pseudo_terminal_device::tra_complete()
+{
+ queue();
+}
+
+void pseudo_terminal_device::rcv_complete()
+{
+ receive_register_extract();
+ write(get_received_char());
+}
+
+void pseudo_terminal_device::queue(void)
+{
+ if (is_transmit_register_empty())
+ {
+ if (m_input_index == m_input_count)
+ {
+ m_input_index = 0;
+ int tmp = read(m_input_buffer , sizeof(m_input_buffer));
+ if (tmp > 0) {
+ m_input_count = tmp;
+ } else {
+ m_input_count = 0;
+ }
+ }
+
+ if (m_input_count != 0)
+ {
+ transmit_register_setup(m_input_buffer[ m_input_index++ ]);
+
+ m_timer_poll->adjust(attotime::never);
+ }
+ else
+ {
+ int txbaud = convert_baud(m_rs232_txbaud->read());
+ m_timer_poll->adjust(attotime::from_hz(txbaud));
+ }
+ }
+}
+
+const device_type PSEUDO_TERMINAL = &device_creator<pseudo_terminal_device>;
diff --git a/src/devices/bus/rs232/pty.h b/src/devices/bus/rs232/pty.h
new file mode 100644
index 00000000000..1f4ddbce754
--- /dev/null
+++ b/src/devices/bus/rs232/pty.h
@@ -0,0 +1,52 @@
+// license:BSD-3-Clause
+// copyright-holders:F. Ulivi
+//
+#ifndef _RS232_PTY_H_
+#define _RS232_PTY_H_
+
+#include "rs232.h"
+
+class pseudo_terminal_device : public device_t,
+ public device_serial_interface,
+ public device_rs232_port_interface,
+ public device_pty_interface
+{
+public:
+ pseudo_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) {
+ device_serial_interface::rx_w(state);
+ }
+
+ DECLARE_WRITE_LINE_MEMBER(update_serial);
+
+protected:
+ virtual ioport_constructor device_input_ports() const;
+ virtual void device_start();
+ virtual void device_stop();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ virtual void tra_callback();
+ virtual void tra_complete();
+ virtual void rcv_complete();
+
+private:
+ required_ioport m_rs232_txbaud;
+ required_ioport m_rs232_rxbaud;
+ required_ioport m_rs232_startbits;
+ required_ioport m_rs232_databits;
+ required_ioport m_rs232_parity;
+ required_ioport m_rs232_stopbits;
+
+ UINT8 m_input_buffer[ 1024 ];
+ UINT32 m_input_count;
+ UINT32 m_input_index;
+ emu_timer *m_timer_poll;
+
+ void queue(void);
+};
+
+extern const device_type PSEUDO_TERMINAL;
+
+#endif /* _RS232_PTY_H_ */
diff --git a/src/devices/bus/rs232/rs232.c b/src/devices/bus/rs232/rs232.c
index acc1af5dea3..cb2d1771a6e 100644
--- a/src/devices/bus/rs232/rs232.c
+++ b/src/devices/bus/rs232/rs232.c
@@ -103,6 +103,7 @@ device_rs232_port_interface::~device_rs232_port_interface()
#include "null_modem.h"
#include "printer.h"
#include "terminal.h"
+#include "pty.h"
SLOT_INTERFACE_START( default_rs232_devices )
SLOT_INTERFACE("keyboard", SERIAL_KEYBOARD)
@@ -110,4 +111,5 @@ SLOT_INTERFACE_START( default_rs232_devices )
SLOT_INTERFACE("null_modem", NULL_MODEM)
SLOT_INTERFACE("printer", SERIAL_PRINTER)
SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
+ SLOT_INTERFACE("pty", PSEUDO_TERMINAL)
SLOT_INTERFACE_END
diff --git a/src/devices/machine/atahle.c b/src/devices/machine/atahle.c
index c5351994ea2..850ab39d34f 100644
--- a/src/devices/machine/atahle.c
+++ b/src/devices/machine/atahle.c
@@ -110,6 +110,7 @@ void ata_hle_device::device_start()
save_item(NAME(m_identify_buffer));
m_busy_timer = timer_alloc(TID_BUSY);
+ m_buffer_empty_timer = timer_alloc(TID_BUFFER_EMPTY);
}
void ata_hle_device::device_reset()
@@ -158,6 +159,10 @@ void ata_hle_device::device_timer(emu_timer &timer, device_timer_id id, int para
finished_busy(param);
break;
+ case TID_BUFFER_EMPTY:
+ m_buffer_empty_timer->enable(false);
+ fill_buffer();
+ break;
}
}
@@ -465,7 +470,8 @@ void ata_hle_device::read_buffer_empty()
if ((multi_word_dma_mode() >= 0) || (ultra_dma_mode() >= 0))
set_dmarq(CLEAR_LINE);
- fill_buffer();
+ m_buffer_empty_timer->enable(true);
+ m_buffer_empty_timer->adjust(attotime::zero);
}
void ata_hle_device::write_buffer_full()
diff --git a/src/devices/machine/atahle.h b/src/devices/machine/atahle.h
index 30236e62d49..cd1d921fc37 100644
--- a/src/devices/machine/atahle.h
+++ b/src/devices/machine/atahle.h
@@ -34,6 +34,8 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER(write_dmack);
virtual DECLARE_WRITE_LINE_MEMBER(write_pdiag);
+ TIMER_CALLBACK_MEMBER(buffer_empty_timer_work);
+
protected:
virtual void device_start();
virtual void device_reset();
@@ -160,7 +162,8 @@ protected:
enum
{
- TID_BUSY
+ TID_BUSY,
+ TID_BUFFER_EMPTY
};
enum
@@ -213,6 +216,7 @@ private:
bool m_resetting;
emu_timer *m_busy_timer;
+ emu_timer *m_buffer_empty_timer;
};
#endif
diff --git a/src/devices/machine/idectrl.c b/src/devices/machine/idectrl.c
index d1f81a12426..bebfcc09d0d 100644
--- a/src/devices/machine/idectrl.c
+++ b/src/devices/machine/idectrl.c
@@ -274,11 +274,11 @@ WRITE32_MEMBER( bus_master_ide_controller_device::bmdma_w )
case 0:
if( ACCESSING_BITS_0_7 )
{
- /* command register */
+ /* Bus Master IDE Command register */
UINT8 old = m_bus_master_command;
UINT8 val = data & 0xff;
- /* save the read/write bit and the start/stop bit */
+ /* save the "Read or Write Control" bit 3 and the "Start/Stop Bus Master" bit 0 */
m_bus_master_command = (old & 0xf6) | (val & 0x09);
if ((old ^ m_bus_master_command) & 1)
@@ -306,7 +306,7 @@ WRITE32_MEMBER( bus_master_ide_controller_device::bmdma_w )
if( ACCESSING_BITS_16_23 )
{
- /* status register */
+ /* Bus Master IDE Status register */
UINT8 old = m_bus_master_status;
UINT8 val = data >> 16;
@@ -334,7 +334,7 @@ void bus_master_ide_controller_device::execute_dma()
while (m_dmarq && (m_bus_master_status & IDE_BUSMASTER_STATUS_ACTIVE))
{
- /* if we're out of space, grab the next descriptor */
+ /* if we're out of space, grab the next Physical Region Descriptor */
if (m_dma_bytes_left == 0)
{
/* fetch the address */
diff --git a/src/emu/dipty.c b/src/emu/dipty.c
new file mode 100644
index 00000000000..1d188f95d0a
--- /dev/null
+++ b/src/emu/dipty.c
@@ -0,0 +1,85 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ dipty.h
+
+ Device PTY interface
+
+***************************************************************************/
+
+#include "emu.h"
+#include "osdcore.h"
+
+device_pty_interface::device_pty_interface(const machine_config &mconfig, device_t &device)
+ : device_interface(device, "pty"),
+ m_pty_master(NULL),
+ m_slave_name(),
+ m_opened(false)
+{
+}
+
+device_pty_interface::~device_pty_interface()
+{
+}
+
+bool device_pty_interface::open(void)
+{
+ if (!m_opened) {
+ char buffer[ 128 ];
+
+ if (osd_openpty(&m_pty_master , buffer , sizeof(buffer)) == FILERR_NONE) {
+ m_opened = true;
+ m_slave_name.assign(buffer);
+ } else {
+ m_opened = false;
+ m_pty_master = NULL;
+ }
+ }
+
+ return m_opened;
+}
+
+void device_pty_interface::close(void)
+{
+ if (m_opened) {
+ osd_close(m_pty_master);
+ m_opened = false;
+ }
+}
+
+bool device_pty_interface::is_open(void) const
+{
+ return m_opened;
+}
+
+ssize_t device_pty_interface::read(UINT8 *rx_chars , size_t count)
+{
+ UINT32 actual_bytes;
+
+ if (m_opened && osd_read(m_pty_master, rx_chars, 0, count, &actual_bytes) == FILERR_NONE) {
+ return actual_bytes;
+ } else {
+ return -1;
+ }
+}
+
+void device_pty_interface::write(UINT8 tx_char)
+{
+ UINT32 actual_bytes;
+
+ if (m_opened) {
+ osd_write(m_pty_master, &tx_char, 0, 1, &actual_bytes);
+ }
+}
+
+bool device_pty_interface::is_slave_connected(void) const
+{
+ // TODO: really check for slave status
+ return m_opened;
+}
+
+const char *device_pty_interface::slave_name(void) const
+{
+ return m_slave_name.c_str();
+}
diff --git a/src/emu/dipty.h b/src/emu/dipty.h
new file mode 100644
index 00000000000..c381420a0ca
--- /dev/null
+++ b/src/emu/dipty.h
@@ -0,0 +1,48 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ dipty.h
+
+ Device PTY interface
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __EMU_H__
+#error Dont include this file directly; include emu.h instead.
+#endif
+
+#ifndef __DIPTY_H__
+#define __DIPTY_H__
+
+class device_pty_interface : public device_interface
+{
+public:
+ // construction/destruction
+ device_pty_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_pty_interface();
+
+ bool open(void);
+ void close(void);
+
+ bool is_open(void) const;
+
+ ssize_t read(UINT8 *rx_chars , size_t count);
+ void write(UINT8 tx_char);
+
+ bool is_slave_connected(void) const;
+
+ const char *slave_name(void) const;
+
+protected:
+ osd_file *m_pty_master;
+ std::string m_slave_name;
+ bool m_opened;
+};
+
+// iterator
+typedef device_interface_iterator<device_pty_interface> pty_interface_iterator;
+
+#endif /* __DIPTY_H__ */
diff --git a/src/emu/emu.h b/src/emu/emu.h
index 93015100645..969ee94f50e 100644
--- a/src/emu/emu.h
+++ b/src/emu/emu.h
@@ -78,6 +78,7 @@ typedef device_t * (*machine_config_constructor)(machine_config &config, device_
#include "schedule.h"
#include "timer.h"
#include "dinetwork.h"
+#include "dipty.h"
// machine and driver configuration
#include "mconfig.h"
diff --git a/src/emu/ui/info_pty.c b/src/emu/ui/info_pty.c
new file mode 100644
index 00000000000..1fe865f5668
--- /dev/null
+++ b/src/emu/ui/info_pty.c
@@ -0,0 +1,44 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ ui/info_pty.c
+
+ Information screen on pseudo terminals
+
+***************************************************************************/
+
+#include "emu.h"
+#include "ui/menu.h"
+#include "ui/info_pty.h"
+
+ui_menu_pty_info::ui_menu_pty_info(running_machine &machine, render_container *container) :
+ ui_menu(machine, container)
+{
+}
+
+ui_menu_pty_info::~ui_menu_pty_info()
+{
+}
+
+void ui_menu_pty_info::populate()
+{
+ item_append("Pseudo terminals", NULL, MENU_FLAG_DISABLE, NULL);
+ item_append("", NULL, MENU_FLAG_DISABLE, NULL);
+
+ pty_interface_iterator iter(machine().root_device());
+ for (device_pty_interface *pty = iter.first(); pty != NULL; pty = iter.next()) {
+ const char *port_name = pty->device().owner()->tag() + 1;
+ if (pty->is_open()) {
+ item_append(port_name , pty->slave_name() , MENU_FLAG_DISABLE , NULL);
+ } else {
+ item_append(port_name , "[failed]" , MENU_FLAG_DISABLE , NULL);
+ }
+ item_append("", NULL, MENU_FLAG_DISABLE, NULL);
+ }
+}
+
+void ui_menu_pty_info::handle()
+{
+ process(0);
+}
diff --git a/src/emu/ui/info_pty.h b/src/emu/ui/info_pty.h
new file mode 100644
index 00000000000..4352c1d48c8
--- /dev/null
+++ b/src/emu/ui/info_pty.h
@@ -0,0 +1,24 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ ui/info_pty.h
+
+ Information screen on pseudo terminals
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_INFO_PTY_H__
+#define __UI_INFO_PTY_H__
+
+class ui_menu_pty_info : public ui_menu {
+public:
+ ui_menu_pty_info(running_machine &machine, render_container *container);
+ virtual ~ui_menu_pty_info();
+ virtual void populate();
+ virtual void handle();
+};
+
+#endif // __UI_INFO_PTY_H__
diff --git a/src/emu/ui/mainmenu.c b/src/emu/ui/mainmenu.c
index 51b0ad4970a..196fdb976c2 100644
--- a/src/emu/ui/mainmenu.c
+++ b/src/emu/ui/mainmenu.c
@@ -22,6 +22,7 @@
#include "ui/barcode.h"
#include "ui/cheatopt.h"
#include "ui/info.h"
+#include "ui/info_pty.h"
#include "ui/inputmap.h"
#include "ui/mainmenu.h"
#include "ui/miscmenu.h"
@@ -90,6 +91,10 @@ void ui_menu_main::populate()
item_append("Tape Control", NULL, 0, (void *)TAPE_CONTROL);
}
+ pty_interface_iterator ptyiter(machine().root_device());
+ if (ptyiter.first() != NULL) {
+ item_append("Pseudo terminals", NULL, 0, (void *)PTY_INFO);
+ }
if (machine().ioport().has_bioses())
item_append("Bios Selection", NULL, 0, (void *)BIOS_SELECTION);
@@ -191,6 +196,10 @@ void ui_menu_main::handle()
ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_tape_control(machine(), container, NULL)));
break;
+ case PTY_INFO:
+ ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_pty_info(machine(), container)));
+ break;
+
case SLOT_DEVICES:
ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_slot_devices(machine(), container)));
break;
diff --git a/src/emu/ui/mainmenu.h b/src/emu/ui/mainmenu.h
index b21d5da1c73..b35a5927073 100644
--- a/src/emu/ui/mainmenu.h
+++ b/src/emu/ui/mainmenu.h
@@ -44,7 +44,8 @@ private:
CHEAT,
SELECT_GAME,
BIOS_SELECTION,
- BARCODE_READ
+ BARCODE_READ,
+ PTY_INFO
};
};
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 49327ba5b37..8a134ed54ac 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -11372,10 +11372,14 @@ pepp0040a // (c) 1987 IGT - International Game Technology
pepp0040b // (c) 1987 IGT - International Game Technology
pepp0041 // (c) 1987 IGT - International Game Technology
pepp0042 // (c) 1987 IGT - International Game Technology
+pepp0042a // (c) 1987 IGT - International Game Technology
pepp0043 // (c) 1987 IGT - International Game Technology
pepp0043a // (c) 1987 IGT - International Game Technology
pepp0043b // (c) 1987 IGT - International Game Technology
pepp0045 // (c) 1987 IGT - International Game Technology
+pepp0045a // (c) 1987 IGT - International Game Technology
+pepp0045b // (c) 1987 IGT - International Game Technology
+pepp0045c // (c) 1987 IGT - International Game Technology
pepp0046 // (c) 1987 IGT - International Game Technology
pepp0046a // (c) 1987 IGT - International Game Technology
pepp0046b // (c) 1987 IGT - International Game Technology
@@ -11385,6 +11389,7 @@ pepp0053 // (c) 1987 IGT - International Game Technology
pepp0055 // (c) 1987 IGT - International Game Technology
pepp0055a // (c) 1987 IGT - International Game Technology
pepp0055b // (c) 1987 IGT - International Game Technology
+pepp0055c // (c) 1987 IGT - International Game Technology
pepp0057 // (c) 1987 IGT - International Game Technology
pepp0057a // (c) 1987 IGT - International Game Technology
pepp0059 // (c) 1987 IGT - International Game Technology
@@ -11468,6 +11473,7 @@ pepp0426 // (c) 1987 IGT - International Game Technology
pepp0428 // (c) 1987 IGT - International Game Technology
pepp0429 // (c) 1987 IGT - International Game Technology
pepp0429a // (c) 1987 IGT - International Game Technology
+pepp0430 // (c) 1987 IGT - International Game Technology
pepp0431 // (c) 1987 IGT - International Game Technology
pepp0434 // (c) 1987 IGT - International Game Technology
pepp0447 // (c) 1987 IGT - International Game Technology
@@ -11478,6 +11484,7 @@ pepp0452 // (c) 1987 IGT - International Game Technology
pepp0454 // (c) 1987 IGT - International Game Technology
pepp0455 // (c) 1987 IGT - International Game Technology
pepp0458 // (c) 1987 IGT - International Game Technology
+pepp0459 // (c) 1987 IGT - International Game Technology
pepp0467 // (c) 1987 IGT - International Game Technology
pepp0488 // (c) 1987 IGT - International Game Technology
pepp0508 // (c) 1987 IGT - International Game Technology
@@ -11489,6 +11496,7 @@ pepp0514b // (c) 1987 IGT - International Game Technology
pepp0515 // (c) 1987 IGT - International Game Technology
pepp0515a // (c) 1987 IGT - International Game Technology
pepp0515b // (c) 1987 IGT - International Game Technology
+pepp0515c // (c) 1987 IGT - International Game Technology
pepp0516 // (c) 1987 IGT - International Game Technology
pepp0516a // (c) 1987 IGT - International Game Technology
pepp0516b // (c) 1987 IGT - International Game Technology
@@ -11539,10 +11547,13 @@ pemg0183 // (c) 1994 IGT - International Game Technology
pemg0252 // (c) 1994 IGT - International Game Technology
pebe0014 // (c) 1994 IGT - International Game Technology
pebe0014a // (c) 1994 IGT - International Game Technology
+peke0004 // (c) 1994 IGT - International Game Technology
peke0017 // (c) 1994 IGT - International Game Technology
+peke1006 // (c) 1994 IGT - International Game Technology
peke1012 // (c) 1994 IGT - International Game Technology
peke1012a // (c) 1994 IGT - International Game Technology
peke1013 // (c) 1994 IGT - International Game Technology
+peke1013a // (c) 1994 IGT - International Game Technology
peps0014 // (c) 1996 IGT - International Game Technology
peps0021 // (c) 1996 IGT - International Game Technology
peps0022 // (c) 1996 IGT - International Game Technology
@@ -11610,6 +11621,7 @@ pex0242p // (c) 1995 IGT - International Game Technology
pex0265p // (c) 1995 IGT - International Game Technology
pex0291p // (c) 1995 IGT - International Game Technology
pex0417p // (c) 1995 IGT - International Game Technology
+pex0426p // (c) 1995 IGT - International Game Technology
pex0430p // (c) 1995 IGT - International Game Technology
pex0434p // (c) 1995 IGT - International Game Technology
pex0447p // (c) 1995 IGT - International Game Technology
@@ -11687,6 +11699,7 @@ pex2275p // (c) 1995 IGT - International Game Technology
pex2276p // (c) 1995 IGT - International Game Technology
pex2283p // (c) 1995 IGT - International Game Technology
pex2284p // (c) 1995 IGT - International Game Technology
+pex2287p // (c) 1995 IGT - International Game Technology
pex2297p // (c) 1995 IGT - International Game Technology
pex2302p // (c) 1995 IGT - International Game Technology
pex2303p // (c) 1995 IGT - International Game Technology
@@ -11730,6 +11743,7 @@ pexm003p // (c) 1997 IGT - International Game Technology
pexm004p // (c) 1997 IGT - International Game Technology
pexm005p // (c) 1997 IGT - International Game Technology
pexm006p // (c) 1997 IGT - International Game Technology
+pexm006pa // (c) 1997 IGT - International Game Technology
pexm007p // (c) 1997 IGT - International Game Technology
pexm008p // (c) 1997 IGT - International Game Technology
pexm009p // (c) 1997 IGT - International Game Technology
diff --git a/src/mame/drivers/aleck64.c b/src/mame/drivers/aleck64.c
index 7de099bdcc9..26499c7b9b2 100644
--- a/src/mame/drivers/aleck64.c
+++ b/src/mame/drivers/aleck64.c
@@ -164,7 +164,7 @@ Notes:
- ALL components are listed for completeness. However, many are power or
logic devices that most people need not be concerned about :-)
- - The Seta/N64 Aleck64 hardware is similar also, but instead of the hich capacity
+ - The Seta/N64 Aleck64 hardware is similar also, but instead of the high capacity
serial MASKROM being on the main board, it's in a cart that plugs into a slot.
*/
@@ -263,7 +263,7 @@ READ32_MEMBER(aleck64_state::aleck_dips_r)
Some of these are big, every game adds a mapping for 4MB at 0xc0000000 physical.
Some add more than one 4MB mapping. As some of the boards are only 4MB RAM,
it seems likely that the programmers expected main RAM to be mirrored at 0xc0000000.
- Some of the games have a further 4MB mapping to a pgysical segment contiguous with
+ Some of the games have a further 4MB mapping to a physical segment contiguous with
the first at 0xc0000000, so if these games are on the E92 8MB boards, this would
add a bit of support to the mirror idea.
@@ -1065,7 +1065,7 @@ ROM_START( twrshaft )
PIF_BOOTROM
ROM_REGION32_BE( 0x4000000, "user2", 0 )
- ROM_LOAD16_WORD_SWAP( "ua3012--all02.u3", 0x000000, 0x1000000, CRC(904a91a7) SHA1(7dfa3447d2c489c0448c4004dc12d3037c05a0f3) )
+ ROM_LOAD16_WORD_SWAP( "ua3012-all02.u3", 0x000000, 0x1000000, CRC(904a91a7) SHA1(7dfa3447d2c489c0448c4004dc12d3037c05a0f3) )
ROM_REGION32_BE( 0x800000, "user3", 0 )
ROM_LOAD16_WORD_SWAP( "nus-zsij-0.u1", 0x000000, 0x800000, CRC(2389576f) SHA1(dc22b2eab4d7a02cb918827a62e6c120b3a84e6c) )
diff --git a/src/mame/drivers/camplynx.c b/src/mame/drivers/camplynx.c
index 52d98021014..30101b2ab3c 100644
--- a/src/mame/drivers/camplynx.c
+++ b/src/mame/drivers/camplynx.c
@@ -87,8 +87,7 @@
To Do:
- Need disk-based software (only ones found are LDF format)
- finish memory banking
- - port 80 on 48k
- - disk (only partially done due to no schematic)
+ - disk (only partially done)
- printer
- joysticks
- UART type COM8017
@@ -130,37 +129,31 @@ public:
// 48k
DECLARE_WRITE8_MEMBER(bank1_w);
- DECLARE_WRITE8_MEMBER(bank2_w);
- DECLARE_WRITE8_MEMBER(bank3_w);
- DECLARE_WRITE8_MEMBER(bank4_w);
DECLARE_WRITE8_MEMBER(bank5_w);
DECLARE_WRITE8_MEMBER(bank6_w);
DECLARE_WRITE8_MEMBER(bank7_w);
DECLARE_WRITE8_MEMBER(bank8_w);
+ DECLARE_WRITE8_MEMBER(port58_w); // drive select etc
DECLARE_WRITE8_MEMBER(port7f_w); // banking 48k
DECLARE_READ8_MEMBER(port80_r); // cassin for 48k
DECLARE_WRITE8_MEMBER(port80_w); // control port 48k
+ DECLARE_READ8_MEMBER(port82_r); // cassin for 128k
+ DECLARE_WRITE8_MEMBER(port82_w); // banking 128k
DECLARE_WRITE8_MEMBER(port84_w); // dac port 48k
DECLARE_MACHINE_RESET(lynx48k);
+ DECLARE_MACHINE_RESET(lynx128k);
DECLARE_DRIVER_INIT(lynx48k);
+ DECLARE_DRIVER_INIT(lynx128k);
MC6845_UPDATE_ROW(lynx48k_update_row);
- // 128k
- DECLARE_WRITE8_MEMBER(port58_w); // drive select etc
- DECLARE_WRITE8_MEMBER(lynx128k_port80_w); // control port 128k
- DECLARE_READ8_MEMBER(lynx128k_port82_r); // cassin for 128k
- DECLARE_WRITE8_MEMBER(lynx128k_port84_w); // dac port 128k
- DECLARE_WRITE8_MEMBER(lynx128k_bank_w); // banking 128k
- DECLARE_WRITE8_MEMBER(lynx128k_irq);
- DECLARE_MACHINE_RESET(lynx128k);
MC6845_UPDATE_ROW(lynx128k_update_row);
- // common
required_device<palette_device> m_palette;
private:
UINT8 m_port58;
- UINT8 m_port7f;
UINT8 m_port80;
+ UINT8 m_bankdata;
UINT8 m_wbyte;
UINT8 *m_p_ram;
+ bool m_is_128k;
required_device<z80_device> m_maincpu;
required_device<cassette_image_device> m_cass;
//required_device<> m_printer;
@@ -183,7 +176,7 @@ d5 = read from bank 1 - user ram
d6 = read from banks 2 and 3 - videoram
d7 = read from bank 4 */
- m_port7f = data;
+ m_bankdata = data;
data ^= 0x31; // make all lines active high
//printf("%s:%X\n", machine().describe_context(), data);
// do writes
@@ -288,87 +281,140 @@ d7 = read from bank 4 */
membank("bankr8")->set_entry(22);
break;
default:
- printf("Banking code %X not handled\n", rbyte);
+ printf("Banking code %X not handled\n", m_bankdata);
}
}
-WRITE8_MEMBER( camplynx_state::lynx128k_bank_w )
+WRITE8_MEMBER( camplynx_state::port82_w )
{
- /* get address space */
- UINT8 *base = memregion("maincpu")->base();
-
- /* Set read banks */
- UINT8 bank = data & 0x0f;
-
- if (!bank)
- {
- membank("bank1")->set_base(base + 0x00000);
- membank("bank2")->set_base(base + 0x02000);
- membank("bank3")->set_base(base + 0x04000);
- membank("bank4")->set_base(base + 0x16000);
- membank("bank5")->set_base(base + 0x18000);
- membank("bank6")->set_base(base + 0x1a000);
- membank("bank7")->set_base(base + 0x0c000);
- membank("bank8")->set_base(base + 0x0e000);
- }
- else
- if (bank == 0x0e)
- {
- membank("bank1")->set_base(base + 0x20000);
- membank("bank2")->set_base(base + 0x22000);
- membank("bank3")->set_base(base + 0x24000);
- membank("bank4")->set_base(base + 0x26000);
- membank("bank5")->set_base(base + 0x28000);
- membank("bank6")->set_base(base + 0x2a000);
- membank("bank7")->set_base(base + 0x2c000);
- membank("bank8")->set_base(base + 0x2e000);
- }
- else
- logerror("%04X: Cannot understand bankswitch command %X\n",m_maincpu->pc(), data);
-
- /* Set write banks */
- bank = data & 0xd0;
-
- if (!bank)
- {
- membank("bank11")->set_base(base + 0x10000);
- membank("bank12")->set_base(base + 0x12000);
- membank("bank13")->set_base(base + 0x14000);
- membank("bank14")->set_base(base + 0x16000);
- membank("bank15")->set_base(base + 0x18000);
- membank("bank16")->set_base(base + 0x1a000);
- membank("bank17")->set_base(base + 0x1c000);
- membank("bank18")->set_base(base + 0x1e000);
- }
- else
- if (bank == 0xc0)
+/* Almost the same as the 48k, except the bit order is reversed.
+d7 = write to bank 1
+d6 = write to bank 2
+d5 = colsel - allow r/w to bank 3??
+d4 = write to bank 4
+d3 = read from bank 0 - roms
+d2 = read from bank 1 - user ram
+d1 = read from bank 2 - videoram
+d0 = read from bank 4 */
+ m_bankdata = data;
+ data ^= 0x8c; // make all lines active high
+ // do writes
+ m_wbyte = BITSWAP8(data, 0, 0, 0, 0, 4, 5, 6, 7) & 0x0f; // rearrange to 1,2,3,4
+ // do reads
+ UINT8 rbyte = BITSWAP8(data, 0, 0, 0, 0, 0, 1, 2, 3) & 0x0f; // rearrange to 0,1,2,4
+ if BIT(rbyte, 1)
+ rbyte &= 0x07; // remove 4 if 1 selected (AND gate in IC82)
+//printf("%s:%X:%X:%X\n", machine().describe_context(), data, rbyte, m_wbyte);
+ switch (rbyte)
{
- membank("bank11")->set_base(base + 0x20000);
- membank("bank12")->set_base(base + 0x22000);
- membank("bank13")->set_base(base + 0x24000);
- membank("bank14")->set_base(base + 0x26000);
- membank("bank15")->set_base(base + 0x28000);
- membank("bank16")->set_base(base + 0x2a000);
- membank("bank17")->set_base(base + 0x2c000);
- membank("bank18")->set_base(base + 0x2e000);
+ case 0x00:
+ case 0x01:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(3);
+ membank("bankr5")->set_entry(4);
+ membank("bankr6")->set_entry(5);
+ membank("bankr7")->set_entry(6);
+ membank("bankr8")->set_entry(7);
+ break;
+ case 0x02:
+ case 0x06:
+ case 0x0a:
+ case 0x0e:
+ membank("bankr1")->set_entry(8);
+ membank("bankr2")->set_entry(9);
+ membank("bankr3")->set_entry(10);
+ membank("bankr4")->set_entry(11);
+ membank("bankr5")->set_entry(12);
+ membank("bankr6")->set_entry(13);
+ membank("bankr7")->set_entry(14);
+ membank("bankr8")->set_entry(15);
+ break;
+ case 0x03:
+ case 0x07:
+ case 0x0b:
+ case 0x0f:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(11);
+ membank("bankr5")->set_entry(12);
+ membank("bankr6")->set_entry(13);
+ membank("bankr7")->set_entry(14);
+ membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7);
+ break;
+ case 0x04:
+ case 0x0c:
+ membank("bankr1")->set_entry(16);
+ membank("bankr2")->set_entry(17);
+ membank("bankr3")->set_entry(18);
+ membank("bankr4")->set_entry(19);
+ membank("bankr5")->set_entry(20);
+ membank("bankr6")->set_entry(21);
+ membank("bankr7")->set_entry(22);
+ membank("bankr8")->set_entry(23);
+ break;
+ case 0x05:
+ case 0x0d:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(19);
+ membank("bankr5")->set_entry(20);
+ membank("bankr6")->set_entry(21);
+ membank("bankr7")->set_entry(22);
+ membank("bankr8")->set_entry(23);
+ break;
+ case 0x08:
+ membank("bankr1")->set_entry(32);
+ membank("bankr2")->set_entry(33);
+ membank("bankr3")->set_entry(34);
+ membank("bankr4")->set_entry(35);
+ membank("bankr5")->set_entry(36);
+ membank("bankr6")->set_entry(37);
+ membank("bankr7")->set_entry(38);
+ membank("bankr8")->set_entry(39);
+ break;
+ case 0x09:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(35);
+ membank("bankr5")->set_entry(36);
+ membank("bankr6")->set_entry(37);
+ membank("bankr7")->set_entry(38);
+ membank("bankr8")->set_entry(39);
+ break;
+ default:
+ printf("Banking code %X not handled\n", m_bankdata);
}
- else
- logerror("%04X: Cannot understand bankswitch command %X\n",m_maincpu->pc(), data);
}
static ADDRESS_MAP_START( lynx48k_mem, AS_PROGRAM, 8, camplynx_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1") AM_WRITE(bank1_w)
- AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2") AM_WRITE(bank2_w)
- AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3") AM_WRITE(bank3_w)
- AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4") AM_WRITE(bank4_w)
+ AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1")
+ AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2")
+ AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3")
+ AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4")
AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5") AM_WRITE(bank5_w)
AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6") AM_WRITE(bank6_w)
AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7") AM_WRITE(bank7_w)
AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8") AM_WRITE(bank8_w)
+ AM_RANGE(0x0000,0x7fff) AM_WRITE(bank1_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( lynx128k_mem, AS_PROGRAM, 8, camplynx_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1")
+ AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2")
+ AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3")
+ AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4")
+ AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5")
+ AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6")
+ AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7")
+ AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8")
+ AM_RANGE(0x0000,0xffff) AM_WRITE(bank1_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( lynx48k_io, AS_IO, 8, camplynx_state )
@@ -406,7 +452,7 @@ static ADDRESS_MAP_START( lynx128k_io, AS_IO, 8, camplynx_state )
// AM_RANGE(0x007c,0x007c) AM_MIRROR(0xff80) AM_READ(lynx128k_printer_r)
// AM_RANGE(0x007d,0x007d) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_init_w) // this is rw
// AM_RANGE(0x007e,0x007e) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_w)
- AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(lynx128k_port80_w)
+ AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(port80_w)
AM_RANGE(0x0080,0x0080) AM_MIRROR(0xf000) AM_READ_PORT("LINE0")
AM_RANGE(0x0180,0x0180) AM_MIRROR(0xf000) AM_READ_PORT("LINE1")
AM_RANGE(0x0280,0x0280) AM_MIRROR(0xf000) AM_READ_PORT("LINE2")
@@ -417,8 +463,8 @@ static ADDRESS_MAP_START( lynx128k_io, AS_IO, 8, camplynx_state )
AM_RANGE(0x0780,0x0780) AM_MIRROR(0xf000) AM_READ_PORT("LINE7")
AM_RANGE(0x0880,0x0880) AM_MIRROR(0xf000) AM_READ_PORT("LINE8")
AM_RANGE(0x0980,0x0980) AM_MIRROR(0xf000) AM_READ_PORT("LINE9")
- AM_RANGE(0x0082,0x0082) AM_MIRROR(0xff00) AM_READWRITE(lynx128k_port82_r,lynx128k_bank_w) // read=serial buffer
- AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(lynx128k_port84_w)
+ AM_RANGE(0x0082,0x0082) AM_MIRROR(0xff00) AM_READWRITE(port82_r,port82_w) // read=serial buffer
+ AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(port84_w)
AM_RANGE(0x0086,0x0086) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
AM_RANGE(0x0087,0x0087) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
ADDRESS_MAP_END
@@ -511,36 +557,8 @@ WRITE8_MEMBER( camplynx_state::bank1_w )
m_p_ram[offset+0x20000] = data;
if ((m_wbyte & 0x44) == 0x04)
m_p_ram[offset+0x30000] = data;
-}
-
-WRITE8_MEMBER( camplynx_state::bank2_w )
-{
- if BIT(m_wbyte, 0)
- m_p_ram[offset+0x12000] = data;
- if ((m_wbyte & 0x22) == 0x02)
- m_p_ram[offset+0x22000] = data;
- if ((m_wbyte & 0x44) == 0x04)
- m_p_ram[offset+0x32000] = data;
-}
-
-WRITE8_MEMBER( camplynx_state::bank3_w )
-{
- if BIT(m_wbyte, 0)
- m_p_ram[offset+0x14000] = data;
- if ((m_wbyte & 0x22) == 0x02)
- m_p_ram[offset+0x24000] = data;
- if ((m_wbyte & 0x44) == 0x04)
- m_p_ram[offset+0x34000] = data;
-}
-
-WRITE8_MEMBER( camplynx_state::bank4_w )
-{
- if BIT(m_wbyte, 0)
- m_p_ram[offset+0x16000] = data;
- if ((m_wbyte & 0x22) == 0x02)
- m_p_ram[offset+0x26000] = data;
- if ((m_wbyte & 0x44) == 0x04)
- m_p_ram[offset+0x36000] = data;
+ if (m_is_128k && BIT(m_wbyte, 3))
+ m_p_ram[offset+0x40000] = data;
}
WRITE8_MEMBER( camplynx_state::bank5_w )
@@ -595,16 +613,24 @@ READ8_MEMBER( camplynx_state::port80_r )
return data;
}
-// during normal operation continually outputs E4,40,0
-// bit 1 is for the cassette motor. Other bits unknown.
+/* 128k:
+d7 = serial data out
+d6 = interline control
+d5 = cpu access
+d4 = alt green or normal green (afaik this only affects the display not the banking)
+d3 = cass motor on
+d2 = cass enable
+d1 = serial h/s out
+d0 = speaker */
WRITE8_MEMBER( camplynx_state::port80_w )
{
m_port80 = data;
- m_cass->change_state( BIT(data, 1) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
- port7f_w(space, 0, m_port7f);
+ m_cass->change_state( BIT(data, (m_is_128k) ? 3 : 1) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
+ if (!m_is_128k)
+ port7f_w(space, 0, m_bankdata);
}
-/* DAC port. If writing cassette, output goes to tape as a sine wave, otherwise it goes to speaker.
+/* DAC port (6-bit). If writing cassette, output goes to tape as a sine wave, otherwise it goes to speaker.
There is code below to write as a sine wave or a square wave, both work and can be loaded successfully.
However the PALE emulator cannot load either of them, although it loads its own output.
MESS can load PALE's wav files though.
@@ -612,7 +638,7 @@ WRITE8_MEMBER( camplynx_state::port80_w )
WRITE8_MEMBER( camplynx_state::port84_w )
{
- if BIT(m_port80, 1)
+ if BIT(m_port80, (m_is_128k) ? 3 : 1) // for 128k, bit 2 might be ok too
{
// Sine wave output
//float t = (float)(unsigned)data - 32.0f;
@@ -630,80 +656,34 @@ d7 = clock
d2 = cass-in
d1 = serial data in
d0 = serial h/s in */
-READ8_MEMBER( camplynx_state::lynx128k_port82_r )
+READ8_MEMBER( camplynx_state::port82_r )
{
UINT8 data = 0xfb; // guess
data |= (m_cass->input() > +0.02) ? 4 : 0;
return data;
}
-/*
-d7 = serial data out
-d6 = interline control
-d5 = cpu access
-d4 = alt green or normal green
-d3 = cass motor on
-d2 = cass enable
-d1 = serial h/s out
-d0 = speaker */
-WRITE8_MEMBER( camplynx_state::lynx128k_port80_w )
-{
- m_port80 = data;
- m_cass->change_state( BIT(data, 3) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
-}
-
-// DAC port (6-bit)
-WRITE8_MEMBER( camplynx_state::lynx128k_port84_w )
-{
- if BIT(m_port80, 3) // could be bit 2
- {
- // Square wave output
- m_cass->output(BIT(data, 5) ? -1.0 : +1.0);
- }
- else // speaker output
- m_dac->write_unsigned8(space, 0, data);
-}
-
MACHINE_RESET_MEMBER(camplynx_state, lynx48k)
{
address_space &mem = m_maincpu->space(AS_PROGRAM);
- port7f_w( mem, 0, 0 );
m_port58 = 0;
m_port80 = 0;
+ port7f_w( mem, 0, 0 );
m_maincpu->reset();
}
MACHINE_RESET_MEMBER(camplynx_state, lynx128k)
{
address_space &mem = m_maincpu->space(AS_PROGRAM);
- mem.install_read_bank (0x0000, 0x1fff, "bank1");
- mem.install_read_bank (0x2000, 0x3fff, "bank2");
- mem.install_read_bank (0x4000, 0x5fff, "bank3");
- mem.install_read_bank (0x6000, 0x7fff, "bank4");
- mem.install_read_bank (0x8000, 0x9fff, "bank5");
- mem.install_read_bank (0xa000, 0xbfff, "bank6");
- mem.install_read_bank (0xc000, 0xdfff, "bank7");
- mem.install_read_bank (0xe000, 0xffff, "bank8");
- mem.install_write_bank (0x0000, 0x1fff, "bank11");
- mem.install_write_bank (0x2000, 0x3fff, "bank12");
- mem.install_write_bank (0x4000, 0x5fff, "bank13");
- mem.install_write_bank (0x6000, 0x7fff, "bank14");
- mem.install_write_bank (0x8000, 0x9fff, "bank15");
- mem.install_write_bank (0xa000, 0xbfff, "bank16");
- mem.install_write_bank (0xc000, 0xdfff, "bank17");
- mem.install_write_bank (0xe000, 0xffff, "bank18");
-
- lynx128k_bank_w(mem, 0, 0);
-}
-
-WRITE8_MEMBER( camplynx_state::lynx128k_irq )
-{
- m_maincpu->set_input_line(0, data);
+ m_port58 = 0;
+ m_port80 = 0;
+ port82_w( mem, 0, 0 );
+ m_maincpu->reset();
}
MC6845_UPDATE_ROW( camplynx_state::lynx48k_update_row )
{
- UINT8 r=0,g=0,b=0,x;
+ UINT8 r,g,b,x;
UINT32 green_bank, *p = &bitmap.pix32(y);
UINT16 mem = ((ma << 2) + (ra << 5)) & 0x1fff;
@@ -732,7 +712,6 @@ MC6845_UPDATE_ROW( camplynx_state::lynx48k_update_row )
MC6845_UPDATE_ROW( camplynx_state::lynx128k_update_row )
{
- UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
UINT8 r,g,b,x;
UINT32 green_bank, *p = &bitmap.pix32(y);
UINT16 mem = ((ma << 2) + (ra << 6)) & 0x3fff;
@@ -744,9 +723,9 @@ MC6845_UPDATE_ROW( camplynx_state::lynx128k_update_row )
for (x = 0; x < x_count; x++)
{
- r = RAM[0x20000+mem+x];
- b = RAM[0x24000+mem+x];
- g = RAM[green_bank+x];
+ r = m_p_ram[0x20000+mem+x];
+ b = m_p_ram[0x24000+mem+x];
+ g = m_p_ram[green_bank+x];
*p++ = m_palette->pen_color((BIT(b, 7) << 2) | (BIT(g, 7) << 1) | (BIT(r, 7)));
*p++ = m_palette->pen_color((BIT(b, 6) << 2) | (BIT(g, 6) << 1) | (BIT(r, 6)));
@@ -773,7 +752,10 @@ d7 = 125ns or 250ns */
if (BIT(m_port58, 4) ^ BIT(data, 4))
{
m_port58 = data;
- port7f_w(space, 0, m_port7f);
+ if (m_is_128k)
+ port82_w(space, 0, m_bankdata);
+ else
+ port7f_w(space, 0, m_bankdata);
}
m_fdc->dden_w(BIT(data, 7));
@@ -797,6 +779,25 @@ static SLOT_INTERFACE_START( camplynx_floppies )
SLOT_INTERFACE( "drive1", FLOPPY_525_QD )
SLOT_INTERFACE_END
+static MACHINE_CONFIG_FRAGMENT( lynx_common )
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("dac", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.5)
+ MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.02)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( lynx_disk )
+ MCFG_FD1793_ADD("fdc", XTAL_24MHz / 3) // no idea what crystal, no schematic of fdc found
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", camplynx_floppies, "drive0", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", camplynx_floppies, "drive1", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_START( lynx48k, camplynx_state )
/* basic machine hardware */
@@ -814,14 +815,12 @@ static MACHINE_CONFIG_START( lynx48k, camplynx_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_ADD_3BIT_RGB("palette")
+ MCFG_FRAGMENT_ADD(lynx_common)
- /* sound hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.5)
- MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.02)
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(lynx48k_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ //MCFG_CASSETTE_INTERFACE("camplynx_cass")
/* devices */
MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_12MHz / 8 )
@@ -829,11 +828,6 @@ static MACHINE_CONFIG_START( lynx48k, camplynx_state )
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx48k_update_row)
MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
-
- MCFG_CASSETTE_ADD("cassette")
- MCFG_CASSETTE_FORMATS(lynx48k_cassette_formats)
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
- //MCFG_CASSETTE_INTERFACE("camplynx_cass")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( lynx96k, lynx48k )
@@ -841,14 +835,7 @@ static MACHINE_CONFIG_DERIVED( lynx96k, lynx48k )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(lynx96k_io)
- // floppy-disk
- MCFG_FD1793_ADD("fdc", XTAL_24MHz / 24) // no idea what crystal, no schematic of fdc found
- //MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(camplynx_state, fdc_intrq_w))
- //MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(camplynx_state, fdc_drq_w))
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", camplynx_floppies, "drive0", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD("fdc:1", camplynx_floppies, "drive1", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FRAGMENT_ADD(lynx_disk)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( lynx128k, camplynx_state )
@@ -858,7 +845,7 @@ static MACHINE_CONFIG_START( lynx128k, camplynx_state )
MCFG_CPU_PROGRAM_MAP(lynx128k_mem)
MCFG_CPU_IO_MAP(lynx128k_io)
- MCFG_MACHINE_RESET_OVERRIDE(camplynx_state,lynx128k)
+ MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx128k)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -868,14 +855,12 @@ static MACHINE_CONFIG_START( lynx128k, camplynx_state )
MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_ADD_3BIT_RGB("palette")
+ MCFG_FRAGMENT_ADD(lynx_common)
- /* sound hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.5)
- MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.02)
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(lynx128k_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ //MCFG_CASSETTE_INTERFACE("camplynx_cass")
/* devices */
MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_12MHz / 8 )
@@ -884,22 +869,12 @@ static MACHINE_CONFIG_START( lynx128k, camplynx_state )
MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx128k_update_row)
MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
- MCFG_CASSETTE_ADD("cassette")
- MCFG_CASSETTE_FORMATS(lynx128k_cassette_formats)
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
- //MCFG_CASSETTE_INTERFACE("camplynx_cass")
-
- MCFG_FD1793_ADD("fdc", XTAL_24MHz / 24) // no idea what crystal, no schematic of fdc found
- //MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(camplynx_state, fdc_intrq_w))
- //MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(camplynx_state, fdc_drq_w))
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", camplynx_floppies, "drive0", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
- MCFG_FLOPPY_DRIVE_ADD("fdc:1", camplynx_floppies, "drive1", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FRAGMENT_ADD(lynx_disk)
MACHINE_CONFIG_END
DRIVER_INIT_MEMBER(camplynx_state, lynx48k)
{
+ m_is_128k = false;
m_p_ram = memregion("maincpu")->base();
membank("bankr1")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
membank("bankr2")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
@@ -911,11 +886,24 @@ DRIVER_INIT_MEMBER(camplynx_state, lynx48k)
membank("bankr8")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
}
+DRIVER_INIT_MEMBER(camplynx_state, lynx128k)
+{
+ m_is_128k = true;
+ m_p_ram = memregion("maincpu")->base();
+ membank("bankr1")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr2")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr3")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr4")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr5")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr6")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr7")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr8")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+}
+
/* ROM definition */
ROM_START( lynx48k )
- ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASE00 )
- ROM_FILL( 0x4000, 0xc000, 0xff )
+ ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF )
ROM_SYSTEM_BIOS(0, "1", "Set1")
ROMX_LOAD( "lynx48-1.rom", 0x0000, 0x2000, CRC(56feec44) SHA1(7ded5184561168e159a30fa8e9d3fde5e52aa91a), ROM_BIOS(1) )
ROMX_LOAD( "lynx48-2.rom", 0x2000, 0x2000, CRC(d894562e) SHA1(c08a78ecb4eb05baa4c52488fce3648cd2688744), ROM_BIOS(1) )
@@ -945,4 +933,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
COMP( 1983, lynx48k, 0, 0, lynx48k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 48k", 0 )
COMP( 1983, lynx96k, lynx48k, 0, lynx96k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 96k", MACHINE_NOT_WORKING)
-COMP( 1983, lynx128k, lynx48k, 0, lynx128k, lynx48k, driver_device, 0, "Camputers", "Lynx 128k", MACHINE_NOT_WORKING)
+COMP( 1983, lynx128k, lynx48k, 0, lynx128k, lynx48k, camplynx_state, lynx128k, "Camputers", "Lynx 128k", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/peplus.c b/src/mame/drivers/peplus.c
index aab9c93120a..af60b1efb17 100644
--- a/src/mame/drivers/peplus.c
+++ b/src/mame/drivers/peplus.c
@@ -145,7 +145,7 @@ Super PE+
Data roms will not work with every Program rom. Incompatible combos report: Incompatible Data EPROM
X000055P is a good example, it works with 19 XP000xxx Program roms. Others may be as few as 2.
XMPnnnnn Multi-Poker Programs. Different options for each set, but all use the same XMnnnnnP data
- XMP00002 through XMP00006 & XMP00024 Use the XM000xxP Multi-Poker Data
+ XMP00002 through XMP00006, XMP00020 & XMP00024 Use the XM000xxP Multi-Poker Data
XMP00014, XMP00017 & XMP00030 Use the WING Board add-on and use the XnnnnnnP Poker Data (Not all are compatible!)
XMP00013, XMP00022 & XMP00026 Use the WING Board add-on & CG2346 + CAPX2346 for Spanish paytables
XMP00025 Uses the XM000xxP Multi-Poker Data roms and is for the International markets. Auto Hold always enabled.
@@ -1765,7 +1765,28 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
-ROM_START( pepp0042 ) /* Normal board : 10's or Better (PP0042) - Auto Hold & Progressive */
+ROM_START( pepp0042 ) /* Normal board : 10's or Better (PP0042) */
+/*
+PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
+----------------------------------------------------------
+ P7A 1 1 3 4 6 9 25 50 300 800
+ % Range: 86.8-88.8% Optimum: 90.8% Hit Frequency: 49.1%
+ Programs Available: PP0042, X000042P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0042_979-a0c.u68", 0x00000, 0x10000, CRC(2f4f4e59) SHA1(ba74de70cf455f7e0b13d4757632d27af64a573b) ) /* Game Version: 979, Library Version: A0C */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg740.u72", 0x00000, 0x8000, CRC(72667f6c) SHA1(89843f472cc0329317cfc643c63bdfd11234b194) )
+ ROM_LOAD( "mgo-cg740.u73", 0x08000, 0x8000, CRC(7437254a) SHA1(bba166dece8af58da217796f81117d0b05752b87) )
+ ROM_LOAD( "mbo-cg740.u74", 0x10000, 0x8000, CRC(92e8c33e) SHA1(05344664d6fdd3f4205c50fa4ca76fc46c18cf8f) )
+ ROM_LOAD( "mxo-cg740.u75", 0x18000, 0x8000, CRC(ce4cbe0b) SHA1(4bafcd68be94a5deaae9661584fa0fc940b834bb) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
+ROM_START( pepp0042a ) /* Normal board : 10's or Better (PP0042) - Auto Hold & Progressive */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
----------------------------------------------------------
@@ -1870,6 +1891,71 @@ PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
+ROM_START( pepp0045a ) /* Normal board : 10's or Better (PP0045) */
+/*
+PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
+----------------------------------------------------------
+ P8A 1 1 3 4 5 8 25 50 300 800
+ % Range: 84.6-86.6% Optimum: 88.6% Hit Frequency: 49.2%
+ Programs Available: PP0045, X000045P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0045_a45-a74.u68", 0x00000, 0x10000, CRC(9c7cf6d7) SHA1(3da9829678b853d85146b66b40800257a8eaa151) ) /* Game Version: A45, Library Version: A74 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1248.u72", 0x00000, 0x8000, CRC(4e2f9276) SHA1(25b84314e75408f9a057a89ac9154be7768813eb) ) /* Custom Gambler Downtown Reno card backs */
+ ROM_LOAD( "mgo-cg1248.u73", 0x08000, 0x8000, CRC(5ecfb257) SHA1(aebe9580434007cae52091eb1814ce201698a4b0) )
+ ROM_LOAD( "mbo-cg1248.u74", 0x10000, 0x8000, CRC(c4b84599) SHA1(e753537c4615b42aa726d19f19dfa934050ac54e) ) /* These graphics will work for many other standard poker sets */
+ ROM_LOAD( "mxo-cg1248.u75", 0x18000, 0x8000, CRC(ac2ddd3c) SHA1(ce76c77a3d8b5d71d272b9982d43a35e913b54de) ) /* However there is no support for Deuces Wild sets */
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1248.u50", 0x0000, 0x0100, CRC(be238287) SHA1(9bfe601df8d3e40307c15a6b871e79f12fab3169) )
+ROM_END
+
+ROM_START( pepp0045b ) /* Normal board : 10's or Better (PP0045) */
+/*
+PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
+----------------------------------------------------------
+ P8A 1 1 3 4 5 8 25 50 300 800
+ % Range: 84.6-86.6% Optimum: 88.6% Hit Frequency: 49.2%
+ Programs Available: PP0045, X000045P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0045_a45-a74.u68", 0x00000, 0x10000, CRC(9c7cf6d7) SHA1(3da9829678b853d85146b66b40800257a8eaa151) ) /* Game Version: A45, Library Version: A74 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1150.u72", 0x00000, 0x8000, CRC(91186809) SHA1(1fc91926cf854411738128cb82d1fce6a8f8c8fd) ) /* Custom Par-A-Dice Riverboat Casino card backs */
+ ROM_LOAD( "mgo-cg1150.u73", 0x08000, 0x8000, CRC(a1e66166) SHA1(6dfa3952636fb6cd24c725139624571ab279221c) )
+ ROM_LOAD( "mbo-cg1150.u74", 0x10000, 0x8000, CRC(8c2c3c0e) SHA1(fe1f1648ff7751e75b874db83f4ec5f54e95083e) ) /* These graphics will work for many other standard poker sets */
+ ROM_LOAD( "mxo-cg1150.u75", 0x18000, 0x8000, CRC(ece41352) SHA1(3c7afb98254c05ce139ca9675ecb415641552371) ) /* However there is no support for Deuces Wild sets */
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1150.u50", 0x0000, 0x0100, NO_DUMP )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
+ROM_START( pepp0045c ) /* Normal board : 10's or Better (PP0045) */
+/*
+PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
+----------------------------------------------------------
+ P8A 1 1 3 4 5 8 25 50 300 800
+ % Range: 84.6-86.6% Optimum: 88.6% Hit Frequency: 49.2%
+ Programs Available: PP0045, X000045P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0045_a45-a74.u68", 0x00000, 0x10000, CRC(9c7cf6d7) SHA1(3da9829678b853d85146b66b40800257a8eaa151) ) /* Game Version: A45, Library Version: A74 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1072.u72", 0x00000, 0x8000, CRC(8e5cf3bf) SHA1(a8c2fde9105a37eddc218ae1476cdbfb0271e314) ) /* Custom Annie Oakely's Central City graphics */
+ ROM_LOAD( "mgo-cg1072.u73", 0x08000, 0x8000, CRC(a3c85c1b) SHA1(9b810c5779dde21db6da5bac5cf797bad65c2c1b) )
+ ROM_LOAD( "mbo-cg1072.u74", 0x10000, 0x8000, CRC(833371e1) SHA1(5d7a994aee61a751f89171885423276b86e872b6) ) /* These graphics will work for many other standard poker sets */
+ ROM_LOAD( "mxo-cg1072.u75", 0x18000, 0x8000, CRC(0df703b3) SHA1(2042251cc9c11687ff7fd920213a448974ff3050) ) /* However there is no support for Deuces Wild sets */
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1072.u50", 0x0000, 0x0100, NO_DUMP )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
ROM_START( pepp0046 ) /* Normal board : 10's or Better (PP0046) */
/*
PayTable 10s+ 2PR 3K STR FL FH 4K SF RF (Bonus)
@@ -2053,6 +2139,28 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
% Range: 90.8-92.8% Optimum: 94.8% Hit Frequency: 45.1%
Programs Available: PP0055, X000055P, PP0723
*/
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 10/23/95 @IGT L95-2432 */
+ ROM_LOAD( "pp0055_a47-a76.u68", 0x00000, 0x10000, CRC(adff06ea) SHA1(098409bd4474a69217e3cd17ee8c650005cc3e17) ) /* Game Version: A47, Library Version: A76 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1276.u72", 0x00000, 0x8000, CRC(9ebc89f2) SHA1(983ace4a9269dea1ddc6b9837df0f0db6b2a1c91) ) /* Custom Skyline Casino card backs */
+ ROM_LOAD( "mgo-cg1276.u73", 0x08000, 0x8000, CRC(dc7ae9a0) SHA1(64384138a6eeb7adb27951fe9e8527f708872efb) )
+ ROM_LOAD( "mbo-cg1276.u74", 0x10000, 0x8000, CRC(145b39ad) SHA1(cea3835428f609c5830fc35e5ade63762f71954c) )
+ ROM_LOAD( "mxo-cg1276.u75", 0x18000, 0x8000, CRC(35e32287) SHA1(0cbea6f413c7cf76e343d9f7250fd6fcd87f6df9) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1276.u50", 0x0000, 0x0100, CRC(4ce5aef5) SHA1(e9a9f358aedeb9ed917162eafd6ffade66d460e8) )
+ROM_END
+
+ROM_START( pepp0055c ) /* Normal board : Deuces Wild Poker (PP0055) */
+/*
+ w/D w/oD
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
+------------------------------------------------------------
+ P32A 1 2 2 3 4 10 15 25 200 250 800
+ % Range: 90.8-92.8% Optimum: 94.8% Hit Frequency: 45.1%
+ Programs Available: PP0055, X000055P, PP0723
+*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "pp0055_600-550.u68", 0x00000, 0x8000, CRC(3c00285e) SHA1(b9028de6962619e438ef927f8223e04dde5c7f87) ) /* Game Version: 600, Library Version: 550, Video Lib Ver: 550 */
ROM_RELOAD( 0x08000, 0x8000) /* 32K version built using earlier gaming libraries */
@@ -2421,8 +2529,8 @@ PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg864.u72", 0x00000, 0x8000, CRC(f4ac28b9) SHA1(35c8a603120f35bd92905e0491e9ae5cd201e13f) ) /* 09/13/89 @ IGT L89-1706 */
ROM_LOAD( "mgo-cg864.u73", 0x08000, 0x8000, CRC(da8efcb9) SHA1(942c6b613074c52f6ed1c2fce78d46ef0f221c48) ) /* Custom Mirage casino card backs */
- ROM_LOAD( "mbo-cg864.u74", 0x10000, 0x8000, CRC(d48ac9cd) SHA1(a62d6c1daf199856aa1777d1d99fe81399215e36) )
- ROM_LOAD( "mxo-cg864.u75", 0x18000, 0x8000, CRC(04f81245) SHA1(055271c6c502fad3be5f2d694a94f96bf3176404) )
+ ROM_LOAD( "mbo-cg864.u74", 0x10000, 0x8000, CRC(d48ac9cd) SHA1(a62d6c1daf199856aa1777d1d99fe81399215e36) ) /* These graphics will work for many other standard poker sets */
+ ROM_LOAD( "mxo-cg864.u75", 0x18000, 0x8000, CRC(04f81245) SHA1(055271c6c502fad3be5f2d694a94f96bf3176404) ) /* However there is no support for Deuces Wild sets */
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "cap864.u50", 0x0000, 0x0100, CRC(c80e5743) SHA1(edf4e5a68905cc566077613d856bc90b8136a227) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
@@ -2662,18 +2770,21 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
P77A 1 2 3 4 5 8 25 40 80 50 250 800
% Range: 95.2-97.2% Optimum: 99.2% Hit Frequency: 45.5%
Programs Available: PP0158, X000158P
+
+NOTE: This set also found with CG2003+CAP904
+
*/
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "pp0158_a46-a75.u68", 0x00000, 0x10000, CRC(5976cd19) SHA1(6a461ea9ddf78dffa3cf8b65903ebf3127f23d45) ) /* Game Version: A46, Library Version: A75, Video Lib ver A0Y */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
- ROM_LOAD( "mgo-cg2003.u73", 0x08000, 0x8000, CRC(add0afc4) SHA1(0519bf2f36cb67140933b2c533e625544f27d16b) )
- ROM_LOAD( "mbo-cg2003.u74", 0x10000, 0x8000, CRC(8649dec0) SHA1(0024d3a8fd85279552910b14b69b225bda93957f) )
- ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
+ ROM_LOAD( "mro-cg1047.u72", 0x00000, 0x8000, CRC(a299d058) SHA1(ed090bacac07c4cf85eacc80f15489b4c18b33d3) ) /* Custom Skyline Casino card backs */
+ ROM_LOAD( "mgo-cg1047.u73", 0x08000, 0x8000, CRC(d9aa8951) SHA1(c42a256368871a38ceaca8b66256e235dbe2adad) )
+ ROM_LOAD( "mbo-cg1047.u74", 0x10000, 0x8000, CRC(5051fb59) SHA1(159559d6e40287e34b1538c51e779d22b910710d) ) /* These graphics will work for many other standard poker sets */
+ ROM_LOAD( "mxo-cg1047.u75", 0x18000, 0x8000, CRC(2f86cf5a) SHA1(0a271f3d2353303fbab80c61fec8e2dda877c42b) ) /* For Deuces Wild sets use CG1276 + CAP1276 */
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ ROM_LOAD( "cap1046.u50", 0x0000, 0x0100, CRC(883fa6a4) SHA1(76aa42912d3180dc0466be95f30d6d760996713b) ) /* Uses CAP1046 as stated or really CAP1047?? */
ROM_END
ROM_START( pepp0158b ) /* Normal board : 4 of a Kind Bonus Poker (PP0158) - 04/16/94 @ IGT L94-1044 */
@@ -3919,6 +4030,29 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
+ROM_START( pepp0430 ) /* Normal board : Deuces Joker Wild Poker (PP0430) */
+/*
+ With w/o w/o With
+ Wild JKR Wild JKR
+PayTable 3K STR FL FH 4K SF 5K RF 4D RF 4D (Bonus)
+---------------------------------------------------------------------
+ P73N 1 2 3 3 3 5 8 10 25 800 1000 2000
+ % Range: 93.2-95.2% Optimum: 97.2% Hit Frequency: 50.5%
+ Programs Available: PP0430, X000430P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0430_a0v-a2d.u68", 0x00000, 0x10000, CRC(afcc183a) SHA1(613608b27b730445379ee9312a625085dba942ae) ) /* Game Version: A0V, Library Version: A2D */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1215.u72", 0x00000, 0x8000, CRC(425f57be) SHA1(6d53ae86bec7189a35671a7f691e101a2ed4d8c4) ) /* 06/09/93 @ IGT L93-1585 */
+ ROM_LOAD( "mgo-cg1215.u73", 0x08000, 0x8000, CRC(0f66cd94) SHA1(9ac0cd01aca87e045c4fd6045ed907a092d6b2ee) )
+ ROM_LOAD( "mbo-cg1215.u74", 0x10000, 0x8000, CRC(10f89e44) SHA1(cdc34970b0325a24cfd5c187a4b4dbf42be8fc93) )
+ ROM_LOAD( "mxo-cg1215.u75", 0x18000, 0x8000, CRC(73c24e43) SHA1(f09beaf374ad371db2701767ce6ac5bdb13c445a) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1215.u50", 0x0000, 0x0100, CRC(294b7b10) SHA1(a405a4b8547b713c5c02dacb19e7354095a7b584) )
+ROM_END
+
ROM_START( pepp0431 ) /* Normal board : Deuces Joker Wild Poker (PP0431) - Multi Regional / Multi Currency - Tournament Mode capable */
/*
With w/o w/o With
@@ -4134,6 +4268,28 @@ PayTable As 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
ROM_END
+ROM_START( pepp0459 ) /* Normal board : Joker Poker (PP0459) */
+/*
+ w/J w/oJ
+PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
+----------------------------------------------------------------
+ P17A 1 1 2 3 4 5 20 40 100 200 500 800
+ % Range: 91.5-92.5% Optimum: 95.5% Hit Frequency: 44.7%
+ Programs Available: PP0459, X000459P & PP0428 - Non Double-up Only
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0459_979-a0c.u68", 0x00000, 0x10000, CRC(46182faf) SHA1(2ae8b78babd0ee348ae37c0738017a8353eca60c) ) /* Game Version: 979, Library Version: A0c */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2004.u72", 0x00000, 0x8000, CRC(e5e40ea5) SHA1(e0d9e50b30cc0c25c932b2bf444990df1fb2c38c) ) /* 08/31/94 @ IGT L95-0146 */
+ ROM_LOAD( "mgo-cg2004.u73", 0x08000, 0x8000, CRC(12607f1e) SHA1(248e1ecee4e735f5943c50f8c350ca95b81509a7) )
+ ROM_LOAD( "mbo-cg2004.u74", 0x10000, 0x8000, CRC(78c3fb9f) SHA1(2b9847c511888de507a008dec981778ca4dbcd6c) ) /* Supersedes CG740 */
+ ROM_LOAD( "mxo-cg2004.u75", 0x18000, 0x8000, CRC(5aaa4480) SHA1(353c4ce566c944406fce21f2c5045c856ef7a609) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap740.u50", 0x0000, 0x0100, CRC(6fe619c4) SHA1(49e43dafd010ce0fe9b2a63b96a4ddedcb933c6d) ) /* BPROM type DM74LS471 (compatible with N82S135N) verified */
+ROM_END
+
ROM_START( pepp0467 ) /* Normal board : Uknown Bonus Poker (PP0467) */
/*
PayTable Js+ 2P 3K STR FL FH 4K ?? SF RF (Bonus)
@@ -4316,7 +4472,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0515, X000515P & PP0539 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "pp0515_a0n-a23.u68", 0x00000, 0x10000, CRC(76389889) SHA1(992fb7d3f296d1cecab75ab4cf13fff1b7a5cc11) ) /* Game Version: A0N, Library Version: A23, Video Lib ver: A0Y */
+ ROM_LOAD( "pp0515_a46-a75.u68", 0x00000, 0x10000, CRC(ad76895d) SHA1(cb82ad7b05e8962076ceed9e3aa6ead867e95539) ) /* Game Version: A46, Library Version: A75, Video Lib ver: A0Y */
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
@@ -4338,7 +4494,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0515, X000515P & PP0539 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "pp0515_989-974.u68", 0x00000, 0x10000, CRC(bc9654ab) SHA1(ecf2401bfbfcfa22354cde517cf425a8db8ea961) ) /* Game Version: 989, Library Version: 974, Video Lib ver: A0Y */
+ ROM_LOAD( "pp0515_a0n-a23.u68", 0x00000, 0x10000, CRC(76389889) SHA1(992fb7d3f296d1cecab75ab4cf13fff1b7a5cc11) ) /* Game Version: A0N, Library Version: A23, Video Lib ver: A0Y */
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
@@ -4360,6 +4516,28 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0515, X000515P & PP0539 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "pp0515_989-974.u68", 0x00000, 0x10000, CRC(bc9654ab) SHA1(ecf2401bfbfcfa22354cde517cf425a8db8ea961) ) /* Game Version: 989, Library Version: 974, Video Lib ver: A0Y */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
+ ROM_LOAD( "mgo-cg2003.u73", 0x08000, 0x8000, CRC(add0afc4) SHA1(0519bf2f36cb67140933b2c533e625544f27d16b) )
+ ROM_LOAD( "mbo-cg2003.u74", 0x10000, 0x8000, CRC(8649dec0) SHA1(0024d3a8fd85279552910b14b69b225bda93957f) )
+ ROM_LOAD( "mxo-cg2003.u75", 0x18000, 0x8000, CRC(904631cd) SHA1(d280a2f16b51a04b3f601db3535980a765c60e6f) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap904.u50", 0x0000, 0x0100, CRC(0eec8336) SHA1(a6585c978dbc2f4f3818e3a5b92f8c28be23c4c0) ) /* BPROM type N82S135N verified */
+ROM_END
+
+ROM_START( pepp0515c ) /* Normal board : Double Bonus Poker (PP0515) */
+/*
+ 5-K 2-4
+PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
+-----------------------------------------------------------------
+ P324A 1 1 3 5 7 10 50 80 160 50 250 800
+ % Range: 96.2-98.2% Optimum: 100.2% Hit Frequency: 43.3%
+ Programs Available: PP0515, X000515P & PP0539 - Non Double-up Only
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "pp0515_813-824.u68", 0x00000, 0x10000, CRC(6c06b0ea) SHA1(7907d10d7290080c33e46c9644f24d1d2fc6b3ff) ) /* Game Version: 813, Library Version: 824 */
ROM_REGION( 0x020000, "gfx1", 0 )
@@ -4382,7 +4560,7 @@ PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
Programs Available: PP0516, X000516P & PP0540 - Non Double-up Only
*/
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "pp0516_a46-a75.u68", 0x00000, 0x10000, CRC(6e226711) SHA1(71930ec43c4b75ca50971242be79459976882546) ) /* Game Version: A46, Library Version: A75 */
+ ROM_LOAD( "pp0516_a46-a75.u68", 0x00000, 0x10000, CRC(6e226711) SHA1(71930ec43c4b75ca50971242be79459976882546) ) /* Game Version: A46, Library Version: A75, Video Lib ver: A0Y */
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "mro-cg2003.u72", 0x00000, 0x8000, CRC(0d425f48) SHA1(b60aaf3f4bd76f75f72f6e8dda724bdf795cb521) ) /* 08/30/94 @ IGT L95-0145 */
@@ -5553,6 +5731,20 @@ ROM_START( pebe0014a ) /* Normal board : Blackjack (BE0014) English / Spanish -
ROM_LOAD( "cap707.u50", 0x0000, 0x0100, CRC(9851ba36) SHA1(5a0a43c1e212ae8c173102ede9c57a3d95752f99) )
ROM_END
+ROM_START( peke0004 ) /* Normal board : Keno 1-10 Spot (KE0004) */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ke0004_566-a17.u68", 0x00000, 0x10000, CRC(dd3b8a70) SHA1(8e402fea9f2e055be309ba24f518b3b513d39ce8) ) /* Game Version: 566, Library Version: A17 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1273.u72", 0x00000, 0x8000, CRC(650f4af8) SHA1(e37d1d8c17924d21958420b5a94f12a415409091) )
+ ROM_LOAD( "mgo-cg1273.u73", 0x08000, 0x8000, CRC(e20d65de) SHA1(e78192314ce4864dd02c39f72d8d1c4bc70bb95e) )
+ ROM_LOAD( "mbo-cg1273.u74", 0x10000, 0x8000, CRC(61744af9) SHA1(1ab2a2b84dc1869fbb23e028c826490d39512ce7) )
+ ROM_LOAD( "mxo-cg1273.u75", 0x18000, 0x8000, CRC(fee165ed) SHA1(26f2c35f091a496bb61789c701795eabb3e5735e) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1267.u50", 0x0000, 0x0100, CRC(7051db57) SHA1(76751a3cc47d506983205decb07e99ca0c178a42) )
+ROM_END
+
ROM_START( peke0017 ) /* Normal board : Keno 1-10 Spot (KE0017) */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ke0017_560-a07.u68", 0x00000, 0x08000, CRC(a0f70116) SHA1(15808cd3245e2e5934f3365f95590da0be552e8b) ) /* Game Version: 560, Library Version: A07 */
@@ -5568,6 +5760,20 @@ ROM_START( peke0017 ) /* Normal board : Keno 1-10 Spot (KE0017) */
ROM_LOAD( "cap1016.u50", 0x0000, 0x0100, CRC(12e1be25) SHA1(501487bc729eb80fcf9e61705d3546de5e0d7cde) )
ROM_END
+ROM_START( peke1006 ) /* Normal board : Keno 1-10 Spot (KE1006) - Payout 87.61%, Paytable 87-C */
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ke1006_590-a77.u68", 0x00000, 0x10000, CRC(5f2a9aac) SHA1(67d24e376d0dcea30d68c3019919e02261c38d7d) ) /* Game Version: 590, Library Version: A77 */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1267.u72", 0x00000, 0x8000, CRC(16498b57) SHA1(9c22726299af7204c4be1c6d8afc4c1b512ad918) )
+ ROM_LOAD( "mgo-cg1267.u73", 0x08000, 0x8000, CRC(80847c5a) SHA1(8422cd13a91c3c462af5efcfca8615e7eeaa2e52) )
+ ROM_LOAD( "mbo-cg1267.u74", 0x10000, 0x8000, CRC(ce7af8a7) SHA1(38675122c764b8fa9260246ea99ac0f0750da277) )
+ ROM_LOAD( "mxo-cg1267.u75", 0x18000, 0x8000, CRC(a4394303) SHA1(30a07028de35f74cc4fb776b0505ca743c8d7b5b) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1267.u50", 0x0000, 0x0100, CRC(7051db57) SHA1(76751a3cc47d506983205decb07e99ca0c178a42) )
+ROM_END
+
ROM_START( peke1012 ) /* Normal board : Keno 1-10 Spot (KE1012) - Payout 90.27%, Paytable 90-P */
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ke1012_582-a77.u68", 0x00000, 0x10000, CRC(87f696ba) SHA1(de6cc7ff799218ae6fb75521243534484ef4b9a8) ) /* Game Version: 582, Library Version: A77 */
@@ -5598,6 +5804,20 @@ ROM_END
ROM_START( peke1013 ) /* Normal board : Keno 2-10 Spot (KE1013) - Payout 91.97%, Paytable 91-D */
ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "ke1013_686-a8r.u68", 0x00000, 0x10000, CRC(97ae2ee7) SHA1(df680ff46320e21a352406e2eaf92003f86434a4) ) /* Game Version: 686, Library Version: A8R */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg1267.u72", 0x00000, 0x8000, CRC(16498b57) SHA1(9c22726299af7204c4be1c6d8afc4c1b512ad918) )
+ ROM_LOAD( "mgo-cg1267.u73", 0x08000, 0x8000, CRC(80847c5a) SHA1(8422cd13a91c3c462af5efcfca8615e7eeaa2e52) )
+ ROM_LOAD( "mbo-cg1267.u74", 0x10000, 0x8000, CRC(ce7af8a7) SHA1(38675122c764b8fa9260246ea99ac0f0750da277) )
+ ROM_LOAD( "mxo-cg1267.u75", 0x18000, 0x8000, CRC(a4394303) SHA1(30a07028de35f74cc4fb776b0505ca743c8d7b5b) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "cap1267.u50", 0x0000, 0x0100, CRC(7051db57) SHA1(76751a3cc47d506983205decb07e99ca0c178a42) )
+ROM_END
+
+ROM_START( peke1013a ) /* Normal board : Keno 2-10 Spot (KE1013) - Payout 91.97%, Paytable 91-D */
+ ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "ke1013_590-a77.u68", 0x00000, 0x10000, CRC(3b178f94) SHA1(c601150a728d750b73f949ba6e2d2979c4c4be2e) ) /* Game Version: 590, Library Version: A77 */
ROM_REGION( 0x020000, "gfx1", 0 )
@@ -6268,7 +6488,7 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2389.u77", 0x00000, 0x8000, CRC(912d639f) SHA1(f66f5db847816754c4f1fbeb1171c4e6c1331039) ) /* The Wild Wild West Casino card backs */
+ ROM_LOAD( "mro-cg2389.u77", 0x00000, 0x8000, CRC(912d639f) SHA1(f66f5db847816754c4f1fbeb1171c4e6c1331039) ) /* Custom The Wild Wild West Casino card backs */
ROM_LOAD( "mgo-cg2389.u78", 0x08000, 0x8000, CRC(87de1a4e) SHA1(4f8524eba297771d3292dd2fca9008546d0e3066) )
ROM_LOAD( "mbo-cg2389.u79", 0x10000, 0x8000, CRC(7c248712) SHA1(4c2cfd7f46fa757438706095137ccf230c30f3a4) )
ROM_LOAD( "mxo-cg2389.u80", 0x18000, 0x8000, CRC(4fdb7daf) SHA1(131d0a5c33f75f859522a4307c0e23273d5d4cb6) )
@@ -6294,13 +6514,13 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "x000055p.u66", 0x00000, 0x10000, CRC(e06819df) SHA1(36590c4588b8036908e63714fbb3e77d23e60eae) ) /* Deuces Wild Poker */
ROM_REGION( 0x020000, "gfx1", 0 )
- ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
- ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
- ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
- ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+ ROM_LOAD( "mro-cg2354.u77", 0x00000, 0x8000, CRC(e7913f01) SHA1(43b99f347f0566949cad4172bdf1462dbc2ad860) ) /* Custom Sunset Station Hotel-Casino card backs */
+ ROM_LOAD( "mgo-cg2354.u78", 0x08000, 0x8000, CRC(317381b8) SHA1(196794335a7a85fd50f4e0da00ceb5ba6a93b36c) )
+ ROM_LOAD( "mbo-cg2354.u79", 0x10000, 0x8000, CRC(ccc643fa) SHA1(9ca9b35f2eed46824d11a8a3b937eb1b2afb639c) )
+ ROM_LOAD( "mxo-cg2354.u80", 0x18000, 0x8000, CRC(b06a49b8) SHA1(822ab7e53247e27feecbe96491bef0efea05212d) )
ROM_REGION( 0x200, "proms", 0 )
- ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
+ ROM_LOAD( "capx2354.u43", 0x0000, 0x0200, CRC(c16e03ed) SHA1(59c0e98b40353e012f2dc2ce25dd46433449e8cc) )
ROM_END
ROM_START( pex0055pf ) /* Superboard : Deuces Wild Poker (X000055P+XP000040) */
@@ -7025,6 +7245,31 @@ PayTable 3K STR FL FH 4K SF 5K RF 4D RF (Bonus)
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
ROM_END
+ROM_START( pex0426p ) /* Superboard : Joker Poker (X000426P+XP000038) */
+/*
+ w/J w/oJ
+PayTable Ks+ 2P 3K STR FL FH 4K SF RF 5K RF (Bonus)
+----------------------------------------------------------------
+ YD 1 1 1 3 5 7 15 50 100 200 400 940
+ % Range: 92.7-94.7% Optimum: 96.7% Hit Frequency: 44.1%
+ Programs Available: PP0426, X000426P
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000038.u67", 0x00000, 0x10000, CRC(8707ab9e) SHA1(3e00a2ad8017e1495c6d6fe900d0efa68a1772b8) ) /* 09/05/95 @ IGT L95-2452 */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x000426p.u66", 0x00000, 0x10000, CRC(84a7a946) SHA1(e1e8ff3f16b0c51f723afba35d8f2b1a1451fa22) ) /* Joker Poker */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2185.u77", 0x00000, 0x8000, CRC(7e64bd1a) SHA1(e988a380ee58078bf5bdc7747e83aed1393cfad8) ) /* 07/10/95 @ IGT L95-1506 */
+ ROM_LOAD( "mgo-cg2185.u78", 0x08000, 0x8000, CRC(d4127893) SHA1(75039c45ba6fd171a66876c91abc3191c7feddfc) )
+ ROM_LOAD( "mbo-cg2185.u79", 0x10000, 0x8000, CRC(17dba955) SHA1(5f77379c88839b3a04e235e4fb0120c77e17b60e) )
+ ROM_LOAD( "mxo-cg2185.u80", 0x18000, 0x8000, CRC(583eb3b1) SHA1(4a2952424969917fb1594698a779fe5a1e99bff5) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) )
+ROM_END
+
ROM_START( pex0430p ) /* Superboard : Dueces Joker Wild Poker (X000430P+XP000079) */
/*
With w/o w/o With
@@ -9006,6 +9251,43 @@ Designed and co-created by Best Bet Products
ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) /* Wrong!! Should be CAPX2325 */
ROM_END
+ROM_START( pex2287p ) /* Superboard : Pay the Aces NO Faces Bonus (X002287P+XP000057) */
+/*
+
+ 5-K 2-4
+PayTable Js+ 2PR 3K STR FL FH 4K 4K 4A SF RF (Bonus)
+------------------------------------------------------------------
+ ???? 1 1 2 4 5 8 25 40 80 50 250 800
+ % Range: 94.4-96.4% Optimum: 98.4% Hit Frequency: ??.?%
+ Programs Available: X002287P
+
+Bonus "Dealt" payouts per Coin bet are:
+ Dealt Royal Flush ..... 1000
+ Dealt 1 Ace no Faces ..... 1
+ Dealt 2 Aces no Faces ..... 2
+ Dealt 3 Aces no Faces ..... 50
+ Dealt 4 Aces no Faces ..... 1500
+
+Designed and co-created by Best Bet Products
+
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xp000057.u67", 0x00000, 0x10000, CRC(a1186020) SHA1(d42823aac1cb16521ecc0a09cba694374642cff7) )
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "x002287p.u66", 0x00000, 0x10000, CRC(f5a8f485) SHA1(4bf9ad2a75acd5445e97661efe8a39ceb8b97549) ) /* Pay the Acse NO Faces Bonus */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2325.u77", 0x00000, 0x8000, CRC(ae53d1f6) SHA1(bf28b8f784d6683bb352944b88d0b646d7313efd) )
+ ROM_LOAD( "mgo-cg2325.u78", 0x08000, 0x8000, CRC(a637679e) SHA1(4cb24f1f907ae482419981cac49af19ca1cdbc99) )
+ ROM_LOAD( "mbo-cg2325.u79", 0x10000, 0x8000, CRC(4a179b6d) SHA1(2ed51ed85444b939bbd48344f18fa97c146438ff) )
+ ROM_LOAD( "mxo-cg2325.u80", 0x18000, 0x8000, CRC(afae8fd5) SHA1(7c6380f21fe8444234ada8d88a46d3a4f1623b29) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2325.u43", 0x0000, 0x0200, NO_DUMP )
+ ROM_LOAD( "capx1321.u43", 0x0000, 0x0200, CRC(4b57569f) SHA1(fa29c0f627e7ce79951ec6dadec114864144f37d) ) /* Wrong!! Should be CAPX2325 */
+ROM_END
+
ROM_START( pex2297p ) /* Superboard : Jackpot Poker (X002297P+XP000053) */
/*
PayTable Js+ 2PR 3K STR FL FH 4K SF RF (Bonus)
@@ -10008,7 +10290,7 @@ Double Bonus Poker P325A 97.80%
ROM_LOAD( "mgo-cg2174.u78", 0x08000, 0x8000, CRC(cc46adb0) SHA1(6065aa5dcb9091ad80e499c7ee6dc629e79c865a) )
ROM_LOAD( "mbo-cg2174.u79", 0x10000, 0x8000, CRC(7291a0c8) SHA1(1068f35e6ef5fd88c584922860231840a90fb623) )
ROM_LOAD( "mxo-cg2174.u80", 0x18000, 0x8000, CRC(14f9480c) SHA1(59323f9fc5995277aea86d088893b6eb95b4e89b) )
-
+
ROM_REGION( 0x200, "proms", 0 )
ROM_LOAD( "capx2174.u43", 0x0000, 0x0200, CRC(50bdad55) SHA1(958d463c7effb3457c1f9c44c9b7822339c04e8b) )
ROM_END
@@ -10099,6 +10381,35 @@ Double Bonus Poker P323A 99.10%
ROM_LOAD( "capx2174.u43", 0x0000, 0x0200, CRC(50bdad55) SHA1(958d463c7effb3457c1f9c44c9b7822339c04e8b) )
ROM_END
+ROM_START( pexm006pa ) /* Superboard : Multi-Poker (XM00006P) - Bonus Poker, Bonus Poker Dlx, Deuces Wild Poker, Jacks or Better & Dbl Bonus Poker */
+/*
+Combined average payout percent: 99.04%
+
+Game Type PayTable Payout
+-------------------------------------
+Bonus Poker P77A 99.20%
+Bonus Poker Deluxe P200A 98.50%
+Deuces Wild Poker P62A 98.90%
+Jacks or Better CA 99.50%
+Double Bonus Poker P323A 99.10%
+*/
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "xmp00002.u67", 0x00000, 0x10000, CRC(d5624ac8) SHA1(6b778b0e7ddb81123c6038920b3447e05a0556b2) ) /* 09/07/95 @ IGT L95-2183 - Linkable Progressive */
+ /* Also known to be found with XMP00003, XMP00006, XMP00020 or XMP00024 programs */
+
+ ROM_REGION( 0x10000, "user1", 0 )
+ ROM_LOAD( "xm00006p.u66", 0x00000, 0x10000, CRC(b464ee79) SHA1(8768e52c66881c8f327055124ff31bcad79fd027) ) /* 03/08/96 @ IGT NV */
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD( "mro-cg2294.u77", 0x00000, 0x8000, CRC(2f707abc) SHA1(3ed14b165cc1c6ad1a0c8ceddbe6d10666de7a1e) ) /* Custom The Orleans graphics */
+ ROM_LOAD( "mgo-cg2294.u78", 0x08000, 0x8000, CRC(3dc48f1a) SHA1(d0c4861eba3f37064c6a1b62488764e18a762461) ) /* Compatible with XM00001P, XM00002P, XM00003P & XM00006P */
+ ROM_LOAD( "mbo-cg2294.u79", 0x10000, 0x8000, CRC(ce8aebdb) SHA1(0c08561016aeadee95e843299cccff3114d839e2) )
+ ROM_LOAD( "mxo-cg2294.u80", 0x18000, 0x8000, CRC(5fba4c90) SHA1(259359b11af9a554364ae90989a23fc2c848d16c) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "capx2294.u43", 0x0000, 0x0200, CRC(641b72c0) SHA1(22f940defceee579fce8547c3469765be730ec56) )
+ROM_END
+
ROM_START( pexm007p ) /* Superboard : Multi-Poker (XM00007P) - Bonus Poker, Dbl Dbl Bonus Poker, Deuces Wild Poker, Dbl Bonus Poker & Jacks or Better */
/*
Combined average payout percent: 97.38%
@@ -10512,11 +10823,15 @@ GAMEL(1987, pepp0040, pepp0002, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0040a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0040) Standard Draw Poker (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0040b, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0040) Standard Draw Poker (International)", 0, layout_pe_poker )
GAMEL(1987, pepp0041, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0041) Standard Draw Poker", 0, layout_pe_poker )
-GAMEL(1987, pepp0042, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0042) 10's or Better", 0, layout_pe_poker )
+GAMEL(1987, pepp0042, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0042) 10's or Better (set 1)", 0, layout_pe_poker )
+GAMEL(1987, pepp0042a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0042) 10's or Better (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0043, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better", 0, layout_pe_poker )
GAMEL(1987, pepp0043a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better (International, set 1)",0, layout_pe_poker )
GAMEL(1987, pepp0043b, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0043) 10's or Better (International, set 2)",0, layout_pe_poker )
GAMEL(1987, pepp0045, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0045) 10's or Better", 0, layout_pe_poker )
+GAMEL(1987, pepp0045a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0045) 10's or Better (Gambler Downtown Reno)", 0, layout_pe_poker )
+GAMEL(1987, pepp0045b, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0045) 10's or Better (Par-A-Dice Riverboat Casino)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAP1150 not dumped */
+GAMEL(1987, pepp0045c, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0045) 10's or Better (Annie Oakley's Central City)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAP1072 not dumped */
GAMEL(1987, pepp0046, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (set 1)", 0, layout_pe_poker )
GAMEL(1987, pepp0046a, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (International)",0, layout_pe_poker )
GAMEL(1987, pepp0046b, pepp0002, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0046) 10's or Better (set 2)", 0, layout_pe_poker )
@@ -10525,7 +10840,8 @@ GAMEL(1987, pepp0051, pepp0053, peplus, peplus_poker, peplus_state, nonplus,
GAMEL(1987, pepp0053, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0053) Joker Poker (Aces or Better)", 0, layout_pe_poker )
GAMEL(1987, pepp0055, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 1)", 0, layout_pe_poker )
GAMEL(1987, pepp0055a, pepp0055, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 2)", 0, layout_pe_poker )
-GAMEL(1987, pepp0055b, pepp0055, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 3)", 0, layout_pe_poker )
+GAMEL(1987, pepp0055b, pepp0055, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 2, Skyline Casino)", 0, layout_pe_poker )
+GAMEL(1987, pepp0055c, pepp0055, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 3)", 0, layout_pe_poker )
GAMEL(1987, pepp0057, pepp0055, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0057) Deuces Wild Poker (set 1)", 0, layout_pe_poker )
GAMEL(1987, pepp0057a, pepp0055, peplus, peplus_poker, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0057) Deuces Wild Poker (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0059, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0059) Two Pair or Better (set 1)", 0, layout_pe_poker )
@@ -10552,7 +10868,7 @@ GAMEL(1987, pepp0130, 0, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0132, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0132) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0150, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0150) Standard Draw Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0158, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1)", 0, layout_pe_poker )
-GAMEL(1987, pepp0158a, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2)", 0, layout_pe_poker )
+GAMEL(1987, pepp0158a, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2, Skyline Casino)", 0, layout_pe_poker )
GAMEL(1987, pepp0158b, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 3)", 0, layout_pe_poker )
GAMEL(1987, pepp0158c, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 4)", 0, layout_pe_poker )
GAMEL(1987, pepp0158d, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 5)", 0, layout_pe_poker )
@@ -10609,6 +10925,7 @@ GAMEL(1987, pepp0426, pepp0053, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0428, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0428) Joker Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0429, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0429) Joker Poker (Aces or Better, set 1)", 0, layout_pe_poker )
GAMEL(1987, pepp0429a, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0429) Joker Poker (Aces or Better, set 2)", 0, layout_pe_poker )
+GAMEL(1987, pepp0430, pepp0127, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0430) Deuces Joker Wild Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0431, pepp0127, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0431) Deuces Joker Wild Poker (International)", 0, layout_pe_poker )
GAMEL(1987, pepp0434, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0434) Bonus Poker Deluxe", 0, layout_pe_poker )
GAMEL(1987, pepp0447, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0447) Standard Draw Poker (set 1)", 0, layout_pe_poker )
@@ -10620,6 +10937,7 @@ GAMEL(1987, pepp0454, pepp0434, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0455, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0455) Joker Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0467, pepp0158, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0467) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
GAMEL(1987, pepp0458, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0458) Joker Poker (Aces or Better)", 0, layout_pe_poker )
+GAMEL(1987, pepp0459, pepp0053, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0459) Joker Poker", 0, layout_pe_poker )
GAMEL(1985, pepp0488, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0488) Standard Draw Poker (Arizona Charlie's)", 0, layout_pe_poker )
GAMEL(1987, pepp0508, 0, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker",0, layout_pe_poker )
GAMEL(1987, pepp0509, pepp0002, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0509) Standard Draw Poker", 0, layout_pe_poker )
@@ -10630,6 +10948,7 @@ GAMEL(1987, pepp0514b, pepp0514, peplus, peplus_poker, peplus_state, peplus,
GAMEL(1987, pepp0515, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0515) Double Bonus Poker (set 1)", 0, layout_pe_poker )
GAMEL(1987, pepp0515a, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0515) Double Bonus Poker (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0515b, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0515) Double Bonus Poker (set 3)", 0, layout_pe_poker )
+GAMEL(1987, pepp0515c, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0515) Double Bonus Poker (set 4)", 0, layout_pe_poker )
GAMEL(1987, pepp0516, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0516) Double Bonus Poker (set 1)", 0, layout_pe_poker )
GAMEL(1987, pepp0516a, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0516) Double Bonus Poker (set 2)", 0, layout_pe_poker )
GAMEL(1987, pepp0516b, pepp0514, peplus, peplus_poker, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PP0516) Double Bonus Poker (International)", 0, layout_pe_poker )
@@ -10688,10 +11007,13 @@ GAMEL(1994, pebe0014, 0, peplus, peplus_bjack, peplus_state, peplus,
GAMEL(1994, pebe0014a, pebe0014, peplus, peplus_bjack, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (BE0014) Blackjack (International English/Spanish)", MACHINE_IMPERFECT_GRAPHICS, layout_pe_bjack ) /* Needs CG1339 graphics roms */
/* Normal board : Keno */
-GAMEL(1994, peke0017, 0, peplus, peplus_keno, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE0017) Keno", MACHINE_NOT_WORKING, layout_pe_keno )
-GAMEL(1994, peke1012, 0, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno (set 1)", 0, layout_pe_keno )
-GAMEL(1994, peke1012a, peke1012, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno (set 2)", 0, layout_pe_keno )
-GAMEL(1994, peke1013, peke1012, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno", 0, layout_pe_keno )
+GAMEL(1994, peke0004, 0, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE0004) Keno", MACHINE_NOT_WORKING, layout_pe_keno )
+GAMEL(1994, peke0017, peke0004, peplus, peplus_keno, peplus_state, nonplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE0017) Keno", MACHINE_NOT_WORKING, layout_pe_keno )
+GAMEL(1994, peke1006, 0, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1006) Keno", 0, layout_pe_keno )
+GAMEL(1994, peke1012, peke1006, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno (set 1)", 0, layout_pe_keno )
+GAMEL(1994, peke1012a, peke1006, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1012) Keno (set 2)", 0, layout_pe_keno )
+GAMEL(1994, peke1013, peke1006, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno (set 1)", 0, layout_pe_keno )
+GAMEL(1994, peke1013a, peke1006, peplus, peplus_keno, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (KE1013) Keno (set 2)", 0, layout_pe_keno )
/* Normal board : Slots machine */
GAMEL(1996, peps0014, 0, peplus, peplus_slots, peplus_state, peplus, ROT0, "IGT - International Game Technology", "Player's Edge Plus (PS0014) Super Joker Slots", 0, layout_pe_slots )
@@ -10733,7 +11055,7 @@ GAMEL(1995, pex0055pa, pex0055p, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex0055pb, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker (The Fun Ships)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2399 not dumped */
GAMEL(1995, pex0055pc, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker (Horseshoe)", 0, layout_pe_poker )
GAMEL(1995, pex0055pd, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker (The Wild Wild West Casino)", MACHINE_WRONG_COLORS, layout_pe_poker ) /* CAPX2389 not dumped */
-GAMEL(1995, pex0055pe, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0055pe, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker (Sunset Station Hotel-Casino)", 0, layout_pe_poker )
GAMEL(1995, pex0055pf, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055pg, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0055ph, pex0055p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker", 0, layout_pe_poker )
@@ -10763,6 +11085,7 @@ GAMEL(1995, pex0242p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex0265p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000265P+XP000038) 4 of a Kind Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex0291p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000291P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
GAMEL(1995, pex0417p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker", 0, layout_pe_poker )
+GAMEL(1995, pex0426p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000426P+XP000038) Joker Poker", 0, layout_pe_poker )
GAMEL(1995, pex0430p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000430P+XP000079) Dueces Joker Wild Poker", 0,layout_pe_poker )
GAMEL(1995, pex0434p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
GAMEL(1995, pex0447p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X000447P+XP000038) Standard Draw Poker", 0, layout_pe_poker )
@@ -10840,6 +11163,7 @@ GAMEL(1995, pex2275p, 0, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pex2276p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002276P+XP000055) Black Jack Bonus Poker", 0, layout_pe_poker )
GAMEL(1995, pex2283p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAPX2325 but should have correct colors anyways */
GAMEL(1995, pex2284p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAPX2325 but should have correct colors anyways */
+GAMEL(1995, pex2287p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002287P+XP000057) Pay the Aces NO Faces Bonus Poker", 0, layout_pe_poker ) /* Undumped color CAPX2325 but should have correct colors anyways */
GAMEL(1995, pex2297p, 0, peplus, peplus_poker, peplus_state, pepluss64,ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002297P+XP000053) Jackpot Poker", 0, layout_pe_poker )
GAMEL(1995, pex2302p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", 0, layout_pe_poker )
GAMEL(1995, pex2303p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (X002303P+XP000112) White Hot Aces Poker", 0, layout_pe_poker )
@@ -10883,6 +11207,7 @@ GAMEL(1995, pexm003p, pexm001p, peplus, peplus_poker, peplus_state, peplussb,
GAMEL(1995, pexm004p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00004P+XMP00002) Multi-Poker", 0, layout_pe_poker )
GAMEL(1995, pexm005p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00005P+XMP00004) Multi-Poker", 0, layout_pe_poker )
GAMEL(1995, pexm006p, pexm001p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00006P+XMP00020) Multi-Poker", 0, layout_pe_poker )
+GAMEL(1995, pexm006pa, pexm001p, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00006P+XMP00002) Multi-Poker (The Orleans)", 0, layout_pe_poker )
GAMEL(1995, pexm007p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00007P+XMP00006) Multi-Poker", 0, layout_pe_poker )
GAMEL(1995, pexm008p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00008P+XMP00006) Multi-Poker", 0, layout_pe_poker )
GAMEL(1995, pexm009p, 0, peplus, peplus_poker, peplus_state, peplussb, ROT0, "IGT - International Game Technology", "Player's Edge Plus (XM00009P+XMP00002) Multi-Poker", MACHINE_IMPERFECT_GRAPHICS, layout_pe_poker ) /* Needs unknown CG2??? graphics roms for correct MENU game banners */
diff --git a/src/osd/osdcomm.h b/src/osd/osdcomm.h
index 3658fbc4814..4ec625878ab 100644
--- a/src/osd/osdcomm.h
+++ b/src/osd/osdcomm.h
@@ -225,6 +225,7 @@ typedef UINT32 FPTR;
#ifdef _MSC_VER
#include <malloc.h>
+typedef ptrdiff_t ssize_t;
#if _MSC_VER == 1900 // < VS2015
#define __LINE__Var 0
#endif
diff --git a/src/osd/osdcore.h b/src/osd/osdcore.h
index c7ae389db03..982cfbf2234 100644
--- a/src/osd/osdcore.h
+++ b/src/osd/osdcore.h
@@ -165,6 +165,25 @@ file_error osd_read(osd_file *file, void *buffer, UINT64 offset, UINT32 length,
-----------------------------------------------------------------------------*/
file_error osd_write(osd_file *file, const void *buffer, UINT64 offset, UINT32 length, UINT32 *actual);
+/*-----------------------------------------------------------------------------
+ osd_openpty: create a new PTY pair
+
+ Parameters:
+
+ file - pointer to an osd_file * to receive the handle of the master
+ side of the newly-created PTY; this is only valid if the function
+ returns FILERR_NONE
+
+ name - pointer to memory where slave filename will be stored
+
+ name_len - space allocated for name
+
+ Return value:
+
+ a file_error describing any error that occurred while creating the
+ PTY, or FILERR_NONE if no error occurred
+-----------------------------------------------------------------------------*/
+file_error osd_openpty(osd_file **file, char *name, size_t name_len);
/*-----------------------------------------------------------------------------
osd_truncate: change the size of an open file
diff --git a/src/osd/osdmini/minifile.c b/src/osd/osdmini/minifile.c
index 52ddc3a2503..2883b81c731 100644
--- a/src/osd/osdmini/minifile.c
+++ b/src/osd/osdmini/minifile.c
@@ -101,6 +101,14 @@ file_error osd_write(osd_file *file, const void *buffer, UINT64 offset, UINT32 l
return FILERR_NONE;
}
+//============================================================
+// osd_openpty
+//============================================================
+
+file_error osd_openpty(osd_file **file, char *name, size_t name_len)
+{
+ return FILERR_FAILURE;
+}
//============================================================
// osd_truncate
diff --git a/src/osd/sdl/sdlfile.c b/src/osd/sdl/sdlfile.c
index 74779252641..a93d5623412 100644
--- a/src/osd/sdl/sdlfile.c
+++ b/src/osd/sdl/sdlfile.c
@@ -359,6 +359,25 @@ file_error osd_write(osd_file *file, const void *buffer, UINT64 offset, UINT32 c
}
}
+//============================================================
+// osd_openpty
+//============================================================
+
+file_error osd_openpty(osd_file **file, char *name, size_t name_len)
+{
+ file_error res;
+ UINT64 filesize;
+
+ if ((res = osd_open(sdlfile_ptty_identifier , 0 , file , &filesize)) != FILERR_NONE) {
+ return res;
+ }
+
+ if ((res = sdl_slave_name_ptty(*file , name , name_len)) != FILERR_NONE) {
+ osd_close(*file);
+ }
+
+ return res;
+}
//============================================================
// osd_truncate
diff --git a/src/osd/sdl/sdlfile.h b/src/osd/sdl/sdlfile.h
index d5f72bfc2ca..4bd1b2a6292 100644
--- a/src/osd/sdl/sdlfile.h
+++ b/src/osd/sdl/sdlfile.h
@@ -46,5 +46,6 @@ file_error sdl_open_ptty(const char *path, UINT32 openflags, osd_file **file, UI
file_error sdl_read_ptty(osd_file *file, void *buffer, UINT64 offset, UINT32 count, UINT32 *actual);
file_error sdl_write_ptty(osd_file *file, const void *buffer, UINT64 offset, UINT32 count, UINT32 *actual);
file_error sdl_close_ptty(osd_file *file);
+file_error sdl_slave_name_ptty(osd_file *file , char *name , size_t name_len);
file_error error_to_file_error(UINT32 error);
diff --git a/src/osd/sdl/sdlptty_os2.c b/src/osd/sdl/sdlptty_os2.c
index 800b3d9a16b..e7d76965238 100644
--- a/src/osd/sdl/sdlptty_os2.c
+++ b/src/osd/sdl/sdlptty_os2.c
@@ -32,3 +32,8 @@ file_error sdl_close_ptty(osd_file *file)
{
return FILERR_ACCESS_DENIED;
}
+
+file_error sdl_slave_name_ptty(osd_file *file)
+{
+ return FILERR_ACCESS_DENIED;
+}
diff --git a/src/osd/sdl/sdlptty_unix.c b/src/osd/sdl/sdlptty_unix.c
index 804b0ddae3e..6b618314d72 100644
--- a/src/osd/sdl/sdlptty_unix.c
+++ b/src/osd/sdl/sdlptty_unix.c
@@ -2,7 +2,7 @@
// copyright-holders:Olivier Galibert, R. Belmont
//============================================================
//
-// sdlptty_unix.c - SDL psuedo tty access functions
+// sdlptty_unix.c - SDL pseudo tty access functions
//
// SDLMAME by Olivier Galibert and R. Belmont
//
@@ -28,6 +28,7 @@
#elif defined(SDLMAME_HAIKU)
# include <bsd/pty.h>
#endif
+#include <stdlib.h>
#include "sdlfile.h"
@@ -39,68 +40,91 @@ const char *sdlfile_ptty_identifier = "/dev/pts";
file_error sdl_open_ptty(const char *path, UINT32 openflags, osd_file **file, UINT64 *filesize)
{
- int master;
- int aslave;
- char name[100];
-
- if (openpty(&master, &aslave, name, NULL, NULL) >= 0)
- {
- printf("Slave of device %s is %s\n", path, name );
- fcntl(master, F_SETFL, O_NONBLOCK);
- (*file)->handle = master;
- *filesize = 0;
- }
- else
- {
- return FILERR_ACCESS_DENIED;
- }
-
- return FILERR_NONE;
+ int master;
+ int aslave;
+ struct termios tios;
+ int oldflags;
+
+ memset(&tios , 0 , sizeof(tios));
+ cfmakeraw(&tios);
+
+ if (openpty(&master, &aslave, NULL, &tios, NULL) >= 0)
+ {
+ oldflags = fcntl(master, F_GETFL, 0);
+ if (oldflags == -1) {
+ close(master);
+ return FILERR_FAILURE;
+ }
+
+ fcntl(master, F_SETFL, oldflags | O_NONBLOCK);
+ close(aslave);
+ (*file)->handle = master;
+ *filesize = 0;
+ }
+ else
+ {
+ return FILERR_ACCESS_DENIED;
+ }
+
+ return FILERR_NONE;
}
file_error sdl_read_ptty(osd_file *file, void *buffer, UINT64 offset, UINT32 count, UINT32 *actual)
{
- ssize_t result;
+ ssize_t result;
- result = read(file->handle, buffer, count);
+ result = read(file->handle, buffer, count);
- if (result < 0)
- {
- return error_to_file_error(errno);
- }
+ if (result < 0)
+ {
+ return error_to_file_error(errno);
+ }
- if (actual != NULL )
- {
- *actual = result;
- }
+ if (actual != NULL )
+ {
+ *actual = result;
+ }
- return FILERR_NONE;
+ return FILERR_NONE;
}
file_error sdl_write_ptty(osd_file *file, const void *buffer, UINT64 offset, UINT32 count, UINT32 *actual)
{
- ssize_t result;
- result = write(file->handle, buffer, count);
+ ssize_t result;
+ result = write(file->handle, buffer, count);
- if (result < 0)
- {
- return error_to_file_error(errno);
- }
+ if (result < 0)
+ {
+ return error_to_file_error(errno);
+ }
- if (actual != NULL )
- {
- *actual = result;
- }
+ if (actual != NULL )
+ {
+ *actual = result;
+ }
- return FILERR_NONE;
+ return FILERR_NONE;
}
file_error sdl_close_ptty(osd_file *file)
{
- close(file->handle);
- osd_free(file);
+ close(file->handle);
+ osd_free(file);
- return FILERR_NONE;
+ return FILERR_NONE;
+}
+
+file_error sdl_slave_name_ptty(osd_file *file , char *name , size_t name_len)
+{
+ const char *slave_name = ptsname(file->handle);
+
+ if (slave_name == NULL || strlen(slave_name) >= name_len) {
+ return FILERR_INVALID_ACCESS;
+ }
+
+ strcpy(name , slave_name);
+
+ return FILERR_NONE;
}
#else
@@ -110,21 +134,27 @@ const char *sdlfile_ptty_identifier = "";
file_error sdl_open_ptty(const char *path, UINT32 openflags, osd_file **file, UINT64 *filesize)
{
- return FILERR_ACCESS_DENIED;
+ return FILERR_ACCESS_DENIED;
}
file_error sdl_read_ptty(osd_file *file, void *buffer, UINT64 offset, UINT32 count, UINT32 *actual)
{
- return FILERR_ACCESS_DENIED;
+ return FILERR_ACCESS_DENIED;
}
file_error sdl_write_ptty(osd_file *file, const void *buffer, UINT64 offset, UINT32 count, UINT32 *actual)
{
- return FILERR_ACCESS_DENIED;
+ return FILERR_ACCESS_DENIED;
}
file_error sdl_close_ptty(osd_file *file)
{
- return FILERR_ACCESS_DENIED;
+ return FILERR_ACCESS_DENIED;
}
+
+file_error sdl_slave_name_ptty(osd_file *file)
+{
+ return FILERR_ACCESS_DENIED;
+}
+
#endif
diff --git a/src/osd/windows/winfile.c b/src/osd/windows/winfile.c
index 3663a4a7c3e..2ac5cddaee3 100644
--- a/src/osd/windows/winfile.c
+++ b/src/osd/windows/winfile.c
@@ -235,6 +235,14 @@ file_error osd_write(osd_file *file, const void *buffer, UINT64 offset, UINT32 l
return FILERR_NONE;
}
+//============================================================
+// osd_openpty
+//============================================================
+
+file_error osd_openpty(osd_file **file, char *name, size_t name_len)
+{
+ return FILERR_FAILURE;
+}
//============================================================
// osd_truncate