summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author RobertoFresca <robertofresca@recreativas.org>2021-05-16 07:31:26 +0200
committer RobertoFresca <robertofresca@recreativas.org>2021-05-16 07:31:26 +0200
commit57b376c56b3fd7a3b0e2cce60238d9e6a9ad82fb (patch)
treedd84aebef346b7ad920d283dfdc1a3bd6aa7503a
parent907ebe0d739b1339b1c7e0aa5d33cc3d980ab414 (diff)
Calomega driver major improvements. [Roberto Fresca, Grull Osgo]
- Worked the analogic color system, adding the three R-G-B presets. - Added the PORT_ADJUST for RGB in all games, defining the default values. - Redumped the Cal Omega - Game 20.8 (Winner's Choice). Reworked proper inputs. - Inputs from the scratch for all the Pixels, Keno and Hotline games. Promoted to WORKING. - Specific inputs for games 12.8, 15.7, 15.9, 17.2, and 20.4. Promoted to WORKING. - Fixed Pixels games colors. - Connected System 903/904 PIA #0 IRQB line to CPU IRQ. - Set a handler for System 903/904 PIA #0 CB1 line, as IRQ ack. - Added external keyboard controller (i8035 + i8251) for Keno Games, system 903. - Added virtual clickable keyboard layout to keno games, necessary to get them working. - Added hopper support to Cal Omega - Game 7.4 (Gaming Poker, W.Export). - Added the following System 903 counters: coin in, coin out, and optional (per game). Machines promoted to working ---------------------------- Cal Omega - Game 9.4 (Keno) [Roberto Fresca, Grull Osgo] Cal Omega - Game 10.7c (Big Game) [Roberto Fresca, Grull Osgo] Cal Omega - Game 12.5 (Bingo) [Roberto Fresca, Grull Osgo] Cal Omega - Game 12.7 (Keno) [Roberto Fresca, Grull Osgo] Cal Omega - Game 14.5 (Pixels) [Roberto Fresca, Grull Osgo] Cal Omega - Game 16.8 (Keno) [Roberto Fresca, Grull Osgo] Cal Omega - Game 18.3 (Pixels) [Roberto Fresca, Grull Osgo] Cal Omega - Game 18.4 (Pixels) [Roberto Fresca, Grull Osgo] Cal Omega - Game 18.5 (Pixels) [Roberto Fresca, Grull Osgo] Cal Omega - Game 18.6 (Pixels) [Roberto Fresca, Grull Osgo] Cal Omega - Game 20.4 (Super Blackjack) [Roberto Fresca, Grull Osgo] Cal Omega - Game 20.8 (Winner's Choice) [Roberto Fresca, Grull Osgo] Cal Omega - Game 23.6 (Hotline) [Roberto Fresca, Grull Osgo] Cal Omega - Game 24.6 (Hotline) [Roberto Fresca, Grull Osgo] Cal Omega - Game 27.2 (Keno, amusement) [Roberto Fresca, Grull Osgo] Cal Omega - Game 27.2 (Keno, gaming) [Roberto Fresca, Grull Osgo] Cal Omega - System 903 Diag.PROM [Roberto Fresca, Grull Osgo] Cal Omega - System 905 Diag.PROM [Roberto Fresca, Grull Osgo]
-rw-r--r--src/mame/drivers/calomega.cpp1538
-rw-r--r--src/mame/includes/calomega.h54
-rw-r--r--src/mame/layout/kenokb.lay195
-rw-r--r--src/mame/mame.lst1
-rw-r--r--src/mame/video/calomega.cpp36
5 files changed, 1543 insertions, 281 deletions
diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp
index 68514f5b391..651dcc49acd 100644
--- a/src/mame/drivers/calomega.cpp
+++ b/src/mame/drivers/calomega.cpp
@@ -7,7 +7,7 @@
| CAL OMEGA / CEI / UCMC |
| SYSTEMS 903 / 904 / 905 / 906-III |
| |
- | Driver by Roberto Fresca. |
+ | Driver by Roberto Fresca & Grull Osgo |
| |
'-----------------------------------------'
@@ -447,7 +447,20 @@
[2021-05]
- General improvements...
+ Major improvements...
+ - Worked the analogic color system, adding the three R-G-B presets.
+ - Added the PORT_ADJUST for RGB in all games, defining the default values.
+ - Redumped the Cal Omega - Game 20.8 (Winner's Choice). Reworked proper inputs.
+ - Inputs from the scratch for all the Pixels, Keno and Hotline games. Promoted to WORKING.
+ - Specific inputs for games 12.8, 15.7, 15.9, 17.2, and 20.4. Promoted to WORKING.
+ - Fixed Pixels games colors.
+ - Connected System 903/904 PIA #0 IRQB line to CPU IRQ.
+ - Set a handler for System 903/904 PIA #0 CB1 line, as IRQ ack.
+ - Added external keyboard controller (i8035 + i8251) for Keno Games, system 903.
+ - Added virtual clickable keyboard layout to keno games, critical to get them working.
+ - Added hopper support to Cal Omega - Game 7.4 (Gaming Poker, W.Export).
+ - Added the following System 903 counters: coin in, coin out, and optional (per game).
+ - Fixed inputs on Cal Omega - Game 8.0 (Arcade Black Jack).
- Fixed inputs on Cal Omega - Game 12.5 (Bingo).
- Inputs for Cal Omega - Game 13.4 (Nudge). Promoted to WORKING.
- Inputs for Cal Omega - Game 17.6 (Nudge). Promoted to WORKING.
@@ -712,6 +725,8 @@
#include "emu.h"
#include "includes/calomega.h"
+#include "kenokb.lh"
+
#define MASTER_CLOCK XTAL(10'000'000)
#define CPU_CLOCK (MASTER_CLOCK/16)
#define UART_CLOCK (MASTER_CLOCK/16)
@@ -744,13 +759,13 @@ uint8_t calomega_state::s903_mux_port_r()
void calomega_state::s903_mux_w(uint8_t data)
{
- // bit 7 - bit 6 -bit 5 -bit 4 -> Mux. Scan Lines
+ // bit 7 - bit 6 -bit 5 -bit 4 -> Mux. Scan Lines
m_s903_mux_data = data ^ 0xf0; // inverted
- // bit 0 - bit 1 -> Hopper
+ // bit 0 - bit 1 -> Hopper
m_hopper->motor_w(BIT(~data, 0) && BIT(~data, 1));
- // bit2 - bit3 -> No connected
+ // bit2 - bit3 -> No connected
}
uint8_t calomega_state::s905_mux_port_r()
@@ -762,7 +777,6 @@ uint8_t calomega_state::s905_mux_port_r()
case 0x04: return m_in0_2->read();
case 0x08: return m_in0_3->read();
}
-
return 0xff;
}
@@ -772,10 +786,10 @@ void calomega_state::s905_mux_w(uint8_t data)
m_s905_mux_data = data ^ 0x0f; // inverted
/* Upper nibble
- PIA_1_PB_4 - Hopper1.
- PIA_1_PB_5 - Hopper2.
- PIA_1_PB_6 - Not Connected.
- PIA_1_PB_7 - Lockout.
+ PIA_1_PB_4 - Hopper1.
+ PIA_1_PB_5 - Hopper2.
+ PIA_1_PB_6 - Not Connected.
+ PIA_1_PB_7 - Lockout.
*/
m_hopper->motor_w(BIT(~data, 4) && BIT(~data, 5));
m_lockout = BIT(data, 7);
@@ -801,12 +815,10 @@ void calomega_state::pia0_bout_w(uint8_t data)
m_diverter = BIT(data, 3);
m_lockout = BIT(data, 5);
m_hopper->motor_w(BIT(~data, 6) && BIT(~data, 7));
- // if(m_hopper) popmessage("HOPPER : %x", data);
}
uint8_t calomega_state::pia1_ain_r()
{
- //popmessage("hopper out: %x", m_in0_1->read() & 0x80);
switch( m_s905_mux_data & 0x03 ) // bits 0-3
{
case 0x00: return m_in0_0->read();
@@ -827,7 +839,6 @@ uint8_t calomega_state::pia1_bin_r()
void calomega_state::pia1_aout_w(uint8_t data)
{
m_s905_mux_data = data >> 6;
- // logerror("PIA1: Port A out (906-III mux): %02X\n", m_s905_mux_data);
}
void calomega_state::pia1_bout_w(uint8_t data)
@@ -854,22 +865,21 @@ void calomega_state::pia1_bout_w(uint8_t data)
m_lamps[6] = BIT(~data, 6); // L7 (unknown)
m_lamps[7] = BIT(~data, 7); // L8 (unknown)
- // logerror("PIA1: Port B out: %02X\n", data);
+ // logerror("PIA1: Port B out: %02X\n", data);
}
TIMER_DEVICE_CALLBACK_MEMBER( calomega_state::timer_0 )
{
m_timer = !m_timer;
m_pia[0]->ca1_w(m_timer);
- m_pia[0]->read(1); //CRA
- // logerror("Timer_0 event : state=%d\n", m_timer);
+ // logerror("Timer_0 event : state=%d\n", m_timer);
}
TIMER_DEVICE_CALLBACK_MEMBER( calomega_state::timer_1 )
{
m_timer = !m_timer;
m_pia[1]->cb1_w(m_timer);
- // logerror("Timer_1 event (TIMER) : state=%d\n", m_timer);
+ // logerror("Timer_1 event (TIMER) : state=%d\n", m_timer);
}
TIMER_DEVICE_CALLBACK_MEMBER( calomega_state::timer_2 )
@@ -877,12 +887,12 @@ TIMER_DEVICE_CALLBACK_MEMBER( calomega_state::timer_2 )
m_timer =! m_timer;
m_pia[1]->ca1_w(m_timer);
m_pia[1]->read(1); // CRA
- // logerror("Timer_2 event : state=%d\n", m_timer);
+ // logerror("Timer_2 event : state=%d\n", m_timer);
}
READ_LINE_MEMBER(calomega_state::timer_r)
{
- // logerror("timer_1 read : state=%d\n", m_timer);
+ // logerror("timer_1 read : state=%d\n", m_timer);
return m_timer;
}
@@ -892,8 +902,8 @@ WRITE_LINE_MEMBER(calomega_state::vblank0_w)
m_pia[0]->read(0);
m_pia[0]->read(0);
m_pia[1]->cb1_w(state);
- // m_pia[1]->read(3); // CRB
- // logerror("V_BLANK_0 event : state=%d\n", m_vblank);
+ // m_pia[1]->read(3); // CRB
+ // logerror("V_BLANK_0 event : state=%d\n", m_vblank);
}
WRITE_LINE_MEMBER(calomega_state::vblank1_w)
@@ -901,7 +911,7 @@ WRITE_LINE_MEMBER(calomega_state::vblank1_w)
m_vblank = state;
m_pia[0]->read(2);
m_pia[0]->cb1_w(state);
- // logerror("V_BLANK_1 event (sale ): state=%d\n", m_vblank);
+ // logerror("V_BLANK_1 event (sale ): state=%d\n", m_vblank);
}
WRITE_LINE_MEMBER(calomega_state::vblank2_w)
@@ -910,20 +920,21 @@ WRITE_LINE_MEMBER(calomega_state::vblank2_w)
m_pia[1]->read(0);
m_pia[1]->read(0);
m_pia[1]->cb1_w(state);
- // logerror("V_BLANK_2 event : state=%d\n", m_vblank);
+
+ // logerror("V_BLANK_2 event : state=%d\n", m_vblank);
}
READ_LINE_MEMBER(calomega_state::vblank_r)
{
- // logerror("V_BLANK read : state=%d\n", m_vblank);
+ // logerror("V_BLANK read : state=%d\n", m_vblank);
return m_vblank;
}
WRITE_LINE_MEMBER(calomega_state::pia1_cb2_w)
{
- // Output to L9
+ // Output to L9
m_lamps[8] = ~state; // L9 (Door?)
- // logerror("PIA1: CB2: %02X\n", state);
+ // logerror("PIA1: CB2: %02X\n", state);
}
// Dummy callbacks
@@ -969,12 +980,15 @@ WRITE_LINE_MEMBER(calomega_state::dummy_pia_line_w)
*/
void calomega_state::lamps_903a_w(uint8_t data)
{
- // First 5 bits of PIA0 port B
+ // Whole 8 bits of PIA0 port B
m_lamps[0] = BIT(~data, 0); // L1 (Hold 1)
m_lamps[1] = BIT(~data, 1); // L2 (Hold 2)
m_lamps[2] = BIT(~data, 2); // L3 (Hold 3)
m_lamps[3] = BIT(~data, 3); // L4 (Hold 4)
m_lamps[4] = BIT(~data, 4); // L5 (Hold 5)
+ machine().bookkeeping().coin_counter_w(0, BIT(~data, 5)); // M1 - Coins in.
+ machine().bookkeeping().coin_counter_w(1, BIT(~data, 6)); // M2 - Coins Out( 1 x 10 coins).
+ machine().bookkeeping().coin_counter_w(2, BIT(~data, 7)); // M3 - Optional (Per game).
}
void calomega_state::lamps_903b_w(uint8_t data)
@@ -999,6 +1013,14 @@ void calomega_state::lamps_905_w(uint8_t data)
m_lamps[7] = BIT(~data, 7); // L8 (unknown)
}
+uint8_t calomega_state::keyb_903_r()
+{
+ if(m_kbscan == 0x0d ) m_uart->write_cts(0);
+ if(m_kbscan == 0x0e ) m_uart->write_cts(1);
+ m_pia[1]->read(2); // TODO: Troubleshooting with vblank irq flag stuck
+ return m_key_row[m_kbscan]->read();
+}
+
/*************************************************
* Memory map information *
@@ -1013,7 +1035,7 @@ void calomega_state::sys903_map(address_map &map)
map(0x0881, 0x0881).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
map(0x08c4, 0x08c7).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x08c8, 0x08cb).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x08d0, 0x08d1).rw(m_acia6850_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x08d0, 0x08d1).rw("acia6850_0", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
map(0x1000, 0x13ff).ram().w(FUNC(calomega_state::calomega_videoram_w)).share("videoram");
map(0x1400, 0x17ff).ram().w(FUNC(calomega_state::calomega_colorram_w)).share("colorram");
map(0x1800, 0x3fff).rom();
@@ -1051,7 +1073,7 @@ void calomega_state::sys906_map(address_map &map)
{
map(0x0000, 0x1fff).ram().share("nvram");
map(0x280c, 0x280f).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x2810, 0x2811).rw(m_acia6850_0, FUNC(acia6850_device::read), FUNC(acia6850_device::write));
+ map(0x2810, 0x2811).rw("acia6850_0", FUNC(acia6850_device::read), FUNC(acia6850_device::write));
map(0x2824, 0x2827).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x2c04, 0x2c04).w("crtc", FUNC(mc6845_device::address_w));
map(0x2c05, 0x2c05).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
@@ -1061,6 +1083,16 @@ void calomega_state::sys906_map(address_map &map)
map(0x6000, 0xffff).rom();
}
+void calomega_state::kstec_mem_map(address_map &map)
+{
+ map(0x0000, 0x07ff).rom();
+}
+
+void calomega_state::kstec_io_map(address_map &map)
+{
+ map(0x00, 0x00).rw(m_uart, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
+ map(0x01, 0x01).rw(m_uart, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
+}
/*************************************************
* Input ports *
@@ -1195,48 +1227,60 @@ static INPUT_PORTS_START( stand903 )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
-#ifdef UNREFERENCED_CODE
-static INPUT_PORTS_START( stand904 )
+
+static INPUT_PORTS_START( keno_903 )
PORT_START("IN0-0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-1") PORT_CODE(KEYCODE_1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-2") PORT_CODE(KEYCODE_2)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-3") PORT_CODE(KEYCODE_3)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-4") PORT_CODE(KEYCODE_4)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-5") PORT_CODE(KEYCODE_5)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("0-6") PORT_CODE(KEYCODE_6)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // "5"
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-1") PORT_CODE(KEYCODE_Q)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-2") PORT_CODE(KEYCODE_W)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-3") PORT_CODE(KEYCODE_E)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-4") PORT_CODE(KEYCODE_R)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-5") PORT_CODE(KEYCODE_T)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1-6") PORT_CODE(KEYCODE_Y)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode") // "F2"
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-1") PORT_CODE(KEYCODE_A)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-2") PORT_CODE(KEYCODE_S)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-3") PORT_CODE(KEYCODE_D)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-4") PORT_CODE(KEYCODE_F)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-5") PORT_CODE(KEYCODE_G)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("2-6") PORT_CODE(KEYCODE_H)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-1") PORT_CODE(KEYCODE_Z)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-2") PORT_CODE(KEYCODE_X)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-3") PORT_CODE(KEYCODE_C)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-4") PORT_CODE(KEYCODE_V)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-5") PORT_CODE(KEYCODE_B)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("3-6") PORT_CODE(KEYCODE_N)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_8) // "8"
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
/* SW1-5 should be wired to PIA0 portA, bit 6.
@@ -1261,7 +1305,7 @@ static INPUT_PORTS_START( stand904 )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("SW2") // baud (serial 6850-4024), SW1 in schematics
+ PORT_START("SW2") // baud (serial 6850-4024), SW1 in schematics...
PORT_DIPNAME( 0x3f, 0x08, "Baud Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4,5,6")
PORT_DIPSETTING( 0x01, "300" )
PORT_DIPSETTING( 0x02, "600" )
@@ -1276,7 +1320,33 @@ static INPUT_PORTS_START( stand904 )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("FRQ") // settings (PIA0)
+ PORT_START("SW3") // unknown (ay8912), SW3 in schematics
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("FRQ") // settings (PIA0)
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -1301,8 +1371,172 @@ static INPUT_PORTS_START( stand904 )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// Keyboard matrix
+
+ PORT_START("KB_0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) // #81 0X51 BET "M"
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) // #82 0X52 START "2"
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_NAME("30")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_NAME("40")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_NAME("39")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("20")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("19")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("29")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("28")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("38")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("10")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("09")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("18")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("17")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("27")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("37")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("08")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("07")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("06")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("16")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("26")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("36")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("03")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("04")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("05")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("15")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("25")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("35")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_5")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("02")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("13")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("14")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("24")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("34")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_6")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("01")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("12")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("22")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("23")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("33")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_7")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("11")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("21")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("31")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("32")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_8")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("72")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("73")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("74")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("75")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("65")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("55")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("45")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_9")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("71")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("61")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("62")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("63")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("64")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("54")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("44")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_10")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("51")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("41")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("52")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("53")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("42")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("43")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_11")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Exit") PORT_CODE(KEYCODE_X) // #84 0x54 TEST EXIT
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) // #83 0x53 CANCEL "N"
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("60")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("50")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("49")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_12")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("70")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("69")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("59")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("58")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("48")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_13")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("80")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("79")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("68")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("67")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("57")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("47")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KB_14")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("78")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("77")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("76")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("66")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("56")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("46")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
-#endif
+
static INPUT_PORTS_START( stand905 )
PORT_START("IN0-0")
@@ -1348,58 +1582,45 @@ static INPUT_PORTS_START( stand905 )
// For System 905, SW1 uses the whole PIA1 portA.
PORT_START("SW1") // settings (PIA1)
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:5")
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:6")
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7")
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8")
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("FRQ") // settings (PIA0)
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
- PORT_DIPSETTING( 0x40, "60Hz." )
- PORT_DIPSETTING( 0x00, "50Hz." )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( gdrwpkrd )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // credits
@@ -1412,23 +1633,22 @@ static INPUT_PORTS_START( gdrwpkrd )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-1")
- //PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Door Open")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode") // in some games you need to open the door first
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hand Pay") PORT_CODE(KEYCODE_W)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Dispute") PORT_CODE(KEYCODE_0) // in some games you need to open the door first
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode") // in some games you need to open the door first
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hand Pay") PORT_CODE(KEYCODE_W)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Dispute") PORT_CODE(KEYCODE_0) // in some games you need to open the door first
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1436,8 +1656,8 @@ static INPUT_PORTS_START( gdrwpkrd )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("WT.Switch") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("WT.Switch") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1528,8 +1748,21 @@ static INPUT_PORTS_START( gdrwpkrd )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( gdrwpkrh )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
@@ -1545,19 +1778,19 @@ static INPUT_PORTS_START( gdrwpkrh )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Door Open")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode") // in some games you need to open the door first
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode") // in some games you need to open the door first
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hand Pay") PORT_CODE(KEYCODE_W)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Dispute") PORT_CODE(KEYCODE_0) // in some games you need to open the door first
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hold 1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Hold 3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Hold 5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1565,8 +1798,8 @@ static INPUT_PORTS_START( gdrwpkrh )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("WT.Switch") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("WT.Switch") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1657,11 +1890,105 @@ static INPUT_PORTS_START( gdrwpkrh )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( comg208 )
+ PORT_START("IN0-0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Learn") PORT_CODE(KEYCODE_7)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service/Clear") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Data / Audit") PORT_CODE(KEYCODE_9)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play (Bet)")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Draw")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel Discards")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Tilt (Clr.Credits)") PORT_CODE(KEYCODE_T)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ // For System 905, SW1 uses the whole PIA1 portA.
+
+ PORT_START("SW1") // settings (PIA1)
+ PORT_DIPNAME( 0x01, 0x01, "Black Jack" ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, "Craps" ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, "Red Dog" ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, "Dup" ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x30, 0x30, "Pay Table / Win Pair / BJ Wins" ) PORT_DIPLOCATION("SW1:5,6")
+ PORT_DIPSETTING( 0x00, "250-50-20-8-6-4-3-2-1 / Jacks / Dealer Keeps Tier" )
+ PORT_DIPSETTING( 0x10, "250-50-25-10-8-5-3-2-1 / Aces" )
+ PORT_DIPSETTING( 0x20, "200-40-10-8-5-4-3-2-1 / Queens/ 2 to 1" )
+ PORT_DIPSETTING( 0x30, "200-40-10-8-5-4-3-2-1 / Kings / 3 to 1" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Lockout" ) PORT_DIPLOCATION("SW1:7,8")
+ PORT_DIPSETTING( 0xc0, "No Lockout" )
+ PORT_DIPSETTING( 0x80, "No Lockout" )
+ PORT_DIPSETTING( 0x40, "1 Coin Lockout" )
+ PORT_DIPSETTING( 0x00, "2 Coin Lockout" )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 25, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 25, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 25, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( arcadebj )
PORT_START("IN0-0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1671,12 +1998,12 @@ static INPUT_PORTS_START( arcadebj )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1691,7 +2018,7 @@ static INPUT_PORTS_START( arcadebj )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service/Clear") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service/Clear") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1787,8 +2114,21 @@ static INPUT_PORTS_START( arcadebj )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( comg074 )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // credits
@@ -1796,37 +2136,37 @@ static INPUT_PORTS_START( comg074 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Draw")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_CANCEL ) PORT_NAME("Cancel Discards")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("IN0-0-6")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Hand Pay") PORT_CODE(KEYCODE_W)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN0-1-2") PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR ) PORT_NAME("Door Open")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode") // in some games you need to open the door first
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("IN0-1-5")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("IN0-1-6")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("IN0-3-1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("IN0-3-5")
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("IN0-3-6")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -1917,11 +2257,24 @@ static INPUT_PORTS_START( comg074 )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( comg076 )
PORT_START("IN0-0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // credits
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // credits
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Draw")
@@ -1941,21 +2294,21 @@ static INPUT_PORTS_START( comg076 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN0-3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_8)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -2045,8 +2398,165 @@ static INPUT_PORTS_START( comg076 )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
+static INPUT_PORTS_START( biggame )
+ PORT_START("IN0-0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // 5 credits by coin.
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) // 10 credits by coin.
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play/Bet")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START ) PORT_NAME("Start")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Select 1") PORT_CODE(KEYCODE_Z)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Select 2") PORT_CODE(KEYCODE_X)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Select 3") PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Clear Credits") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+/* SW1-5 should be wired to PIA0 portA, bit 6.
+ SW1-6 should be wired to H-POL.
+ SW1-7 should be wired to V-POL.
+*/
+ PORT_START("SW1") // settings (PIA1), SW2 in schematics
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L6
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L7
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L8
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L9
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPSETTING( 0x00, "Coin A: 1; Coin B: 10" )
+ PORT_DIPSETTING( 0x80, "Coin A: 5; Coin B: 10" )
+
+ PORT_START("SW2") // baud (serial 6850-4024), SW1 in schematics...
+ PORT_DIPNAME( 0x3f, 0x08, "Baud Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4,5,6")
+ PORT_DIPSETTING( 0x01, "300" )
+ PORT_DIPSETTING( 0x02, "600" )
+ PORT_DIPSETTING( 0x04, "1200" )
+ PORT_DIPSETTING( 0x08, "2400" )
+ PORT_DIPSETTING( 0x10, "4800" )
+ PORT_DIPSETTING( 0x20, "9600" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("SW3") // unknown (ay8912), SW3 in schematics
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("FRQ") // settings (PIA0)
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
+ PORT_DIPSETTING( 0x80, "60Hz." )
+ PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 50, "BLUE Preset" )
+
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( nudgensw ) // nudge bingo
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Nudge 1 Up") PORT_CODE(KEYCODE_A)
@@ -2176,8 +2686,21 @@ static INPUT_PORTS_START( nudgensw ) // nudge bingo
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 0, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( nudgesw )
PORT_INCLUDE( nudgensw )
@@ -2191,6 +2714,150 @@ static INPUT_PORTS_START( nudgesw )
INPUT_PORTS_END
+static INPUT_PORTS_START( hotline ) // nudge bingo
+ PORT_START("IN0-0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Up 1") PORT_CODE(KEYCODE_A)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Up 2") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Up 3") PORT_CODE(KEYCODE_D)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Up 4") PORT_CODE(KEYCODE_F)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Up 5") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Credits") PORT_IMPULSE(2)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Learn") PORT_CODE(KEYCODE_0)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Clear Data") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Audit") PORT_CODE(KEYCODE_9)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Down 1") PORT_CODE(KEYCODE_Z)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Down 2") PORT_CODE(KEYCODE_X)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Down 3") PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Down 4") PORT_CODE(KEYCODE_V)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Move Down 5") PORT_CODE(KEYCODE_B)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Tilt") PORT_CODE(KEYCODE_T)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play (Bet)")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) // connected to SW2-5
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+/* SW1-5 should be wired to PIA0 portA, bit 6.
+ SW1-6 should be wired to H-POL.
+ SW1-7 should be wired to V-POL.
+*/
+ PORT_START("SW1") // settings (PIA1), SW2 in schematics
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L6
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L7
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L8
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // L9
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:4")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("SW2") // baud (serial 6850-4024), SW1 in schematics...
+ PORT_DIPNAME( 0x3f, 0x08, "Baud Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4,5,6")
+ PORT_DIPSETTING( 0x01, "300" )
+ PORT_DIPSETTING( 0x02, "600" )
+ PORT_DIPSETTING( 0x04, "1200" )
+ PORT_DIPSETTING( 0x08, "2400" )
+ PORT_DIPSETTING( 0x10, "4800" )
+ PORT_DIPSETTING( 0x20, "9600" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("SW3") // unknown (ay8912), SW3 in schematics
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("FRQ") // settings (PIA0)
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
+ PORT_DIPSETTING( 0x80, "60Hz." )
+ PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 0, "BLUE Preset" )
+
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( comg128 )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // credits
@@ -2319,8 +2986,21 @@ static INPUT_PORTS_START( comg128 )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( comg157 )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_NAME("Coin-In A")
@@ -2422,8 +3102,21 @@ static INPUT_PORTS_START( comg157 )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( comg159 )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
@@ -2490,8 +3183,21 @@ static INPUT_PORTS_START( comg159 )
PORT_DIPSETTING( 0x80, "Queens" )
PORT_DIPSETTING( 0xc0, "Kings" )
PORT_DIPSETTING( 0x40, "Aces" )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( comg172 )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1")
@@ -2558,6 +3264,18 @@ static INPUT_PORTS_START( comg172 )
PORT_DIPSETTING( 0x40, "No Lockout" )
PORT_DIPSETTING( 0x80, "1-Coin Lockout" )
PORT_DIPSETTING( 0x00, "2-Coin Lockout" )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
@@ -2653,8 +3371,21 @@ static INPUT_PORTS_START( elgrande )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 0, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( jjpoker )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
@@ -2747,8 +3478,21 @@ static INPUT_PORTS_START( jjpoker )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 0, "BLUE Preset" )
+
INPUT_PORTS_END
+
static INPUT_PORTS_START( ssipkr )
PORT_START("IN0-0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
@@ -2841,6 +3585,100 @@ static INPUT_PORTS_START( ssipkr )
PORT_DIPNAME( 0x80, 0x80, "Frequency" ) PORT_DIPLOCATION("FRQ:1")
PORT_DIPSETTING( 0x80, "60Hz." )
PORT_DIPSETTING( 0x00, "50Hz." )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 0, "BLUE Preset" )
+
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( comg204 )
+ PORT_START("IN0-0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play (Bet)")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Deal / Draw")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Hit (Pedir)") PORT_CODE(KEYCODE_V)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_STAND ) PORT_NAME("Stand")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) PORT_NAME("Double")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_START("IN0-1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Learn") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Clr Data") PORT_CODE(KEYCODE_0)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Audit") PORT_CODE(KEYCODE_9)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin-In A") PORT_IMPULSE(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coin-In B") PORT_IMPULSE(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Tilt") PORT_CODE(KEYCODE_T)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ // For System 905, SW1 uses the whole PIA1 portA.
+
+ PORT_START("SW1") // settings (PIA1)
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
@@ -2938,6 +3776,18 @@ static INPUT_PORTS_START( stand906 )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
@@ -3034,6 +3884,18 @@ static INPUT_PORTS_START( cas21iwc )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
INPUT_PORTS_END
@@ -3130,6 +3992,101 @@ static INPUT_PORTS_START( pokeriwc )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 0, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 0, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 75, "BLUE Preset" )
+
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( pixels )
+ PORT_START("IN0-0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Bounce 1")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Bounce 2")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Bounce 3")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Bounce 4")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Bounce 5")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play/Bet")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Go/Start")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Learn") PORT_CODE(KEYCODE_0)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Clear Data") PORT_CODE(KEYCODE_8)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Audit") PORT_CODE(KEYCODE_9)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Mode")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Return") PORT_CODE(KEYCODE_R)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Stay") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("IN0-3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Tilt") PORT_CODE(KEYCODE_T)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Female") PORT_CODE(KEYCODE_F)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Male") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ // For System 905, SW1 uses the whole PIA1 portA.
+
+ PORT_START("SW1") // settings (PIA1)
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+// RGB analogic pots (defaults are in %)
+
+ PORT_START("POT1_RED")
+ PORT_ADJUSTER( 100, "RED Preset" )
+
+ PORT_START("POT2_GREEN")
+ PORT_ADJUSTER( 50, "GREEN Preset" )
+
+ PORT_START("POT3_BLUE")
+ PORT_ADJUSTER( 50, "BLUE Preset" )
+
INPUT_PORTS_END
@@ -3372,20 +4329,22 @@ GFXDECODE_END
* ACIA Interface *
*************************************************/
-WRITE_LINE_MEMBER(calomega_state::write_acia_tx)
+WRITE_LINE_MEMBER(calomega_state::write_acia_clock)
{
- m_tx_line = state;
+ m_acia6850[0]->write_txc(state);
+ m_acia6850[0]->write_rxc(state);
+ update_aciabaud_scale(0);
}
-WRITE_LINE_MEMBER(calomega_state::write_acia_clock)
+WRITE_LINE_MEMBER(calomega_state::w_903kb_acia_clock)
{
- m_acia6850_0->write_txc(state);
- m_acia6850_0->write_rxc(state);
-
+ m_acia6850[0]->write_txc(state);
+ m_acia6850[0]->write_rxc(state);
+ m_uart->write_txc(state);
+ m_uart->write_rxc(state);
update_aciabaud_scale(0);
}
-
/*************************************************
* Machine Drivers *
*************************************************/
@@ -3404,15 +4363,17 @@ void calomega_state::sys903(machine_config &config)
m_pia[0]->writepa_handler().set(FUNC(calomega_state::dummy_pia_w)); // Debug: to assign lamps/counters/solenids/hopper????
m_pia[0]->writepb_handler().set(FUNC(calomega_state::lamps_903a_w));
m_pia[0]->readca1_handler().set(FUNC(calomega_state::timer_r)); // Timer Interrupt Ack. (CPU -> PIA)
+ m_pia[0]->readcb1_handler().set(FUNC(calomega_state::timer_r)); // Timer Interrupt Ack. (CPU -> PIA)
m_pia[0]->irqa_handler().set_inputline("maincpu", M6502_IRQ_LINE); // Timer Interrupt Event. (PIA -> CPU)
+ m_pia[0]->irqb_handler().set_inputline("maincpu", M6502_IRQ_LINE); // Timer Interrupt Event. (PIA -> CPU)
PIA6821(config, m_pia[1], 0);
m_pia[1]->readpa_handler().set_ioport("SW1");
- m_pia[1]->readpb_handler().set(FUNC(calomega_state::dummy_pia_r)); // Debug: so much need to read????? :)
+ m_pia[1]->readpb_handler().set(FUNC(calomega_state::dummy_pia_r)); // Debug: unknown reads.
m_pia[1]->writepa_handler().set(FUNC(calomega_state::lamps_903b_w));
m_pia[1]->writepb_handler().set(FUNC(calomega_state::s903_mux_w)); // Mux. Scan Lines.(Upper nibble) - Hopper b0-b1 (Lower Nibble).
- m_pia[1]->ca2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); //
- m_pia[1]->cb2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); //
+ m_pia[1]->ca2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // M4 pulsed out
+ m_pia[1]->cb2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // M5 pulsed out
m_pia[1]->readcb1_handler().set(FUNC(calomega_state::vblank_r)); // V_BLANK Interrupt Ack. (CPU -> PIA)
m_pia[1]->irqb_handler().set_inputline("maincpu", M6502_IRQ_LINE); // V_BLANK Interrupt Event. (PIA -> CPU)
@@ -3440,9 +4401,9 @@ void calomega_state::sys903(machine_config &config)
ay8912.port_a_read_callback().set_ioport("SW3"); // from schematics
ay8912.add_route(ALL_OUTPUTS, "mono", 0.75);
- // acia
- ACIA6850(config, m_acia6850_0, 0);
- m_acia6850_0->txd_handler().set(FUNC(calomega_state::write_acia_tx));
+ // acia 0
+ ACIA6850(config, m_acia6850[0], 0);
+ m_acia6850[0]->irq_handler().set_inputline("maincpu", M6502_IRQ_LINE);
clock_device &aciabaud(CLOCK(config, "aciabaud", UART_CLOCK));
aciabaud.signal_handler().set(FUNC(calomega_state::write_acia_clock));
@@ -3453,12 +4414,89 @@ void calomega_state::sys903(machine_config &config)
}
+void calomega_state::sys903kb(machine_config &config)
+{
+ // basic machine hardware
+ M6502(config, m_maincpu, CPU_CLOCK); // confirmed
+ m_maincpu->set_addrmap(AS_PROGRAM, &calomega_state::sys903_map);
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+
+ I8035(config, m_kstec, XTAL(5'185'000)); // from schematics
+ m_kstec->set_addrmap(AS_PROGRAM, &calomega_state::kstec_mem_map);
+ m_kstec->set_addrmap(AS_IO, &calomega_state::kstec_io_map);
+ m_kstec->p2_out_cb().set([this] (int data) { calomega_state::m_kbscan = (data & 0xf0) >> 4; }); // set keyboard scan lines
+ m_kstec->p1_in_cb().set(FUNC(calomega_state::keyb_903_r)); // get keyboard input lines
+ m_kstec->t0_in_cb().set("uart", FUNC(i8251_device::txrdy_r)); // uart tx handshake
+ m_kstec->t1_in_cb().set([this] () { return calomega_state::m_rxrdy; }); // uart rx handshake
+
+ PIA6821(config, m_pia[0], 0);
+ m_pia[0]->readpa_handler().set(FUNC(calomega_state::s903_mux_port_r));
+ m_pia[0]->readpb_handler().set(FUNC(calomega_state::dummy_pia_r)); // Debug: some dipsw maybe???
+ m_pia[0]->writepa_handler().set(FUNC(calomega_state::dummy_pia_w)); // Debug: to assign lamps/counters/solenids/hopper????
+ m_pia[0]->writepb_handler().set(FUNC(calomega_state::lamps_903a_w));
+ m_pia[0]->readca1_handler().set(FUNC(calomega_state::timer_r)); // Timer Interrupt Ack. (CPU -> PIA)
+ m_pia[0]->readcb1_handler().set(FUNC(calomega_state::timer_r)); // Timer Interrupt Ack. (CPU -> PIA)
+ m_pia[0]->irqa_handler().set_inputline("maincpu", M6502_IRQ_LINE); // Timer Interrupt Event. (PIA -> CPU)
+ m_pia[0]->irqb_handler().set_inputline("maincpu", M6502_IRQ_LINE); // Timer Interrupt Event. (PIA -> CPU)
+
+ PIA6821(config, m_pia[1], 0);
+ m_pia[1]->readpa_handler().set_ioport("SW1");
+ m_pia[1]->readpb_handler().set(FUNC(calomega_state::dummy_pia_r)); // Debug: unknown reads.
+ m_pia[1]->writepa_handler().set(FUNC(calomega_state::lamps_903b_w));
+ m_pia[1]->writepb_handler().set(FUNC(calomega_state::s903_mux_w)); // Mux. Scan Lines.(Upper nibble) - Hopper b0-b1 (Lower Nibble).
+ m_pia[1]->ca2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // M4 pulsed out
+ m_pia[1]->cb2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // M5 pulsed out
+ m_pia[1]->readcb1_handler().set(FUNC(calomega_state::vblank_r)); // V_BLANK Interrupt Ack. (CPU -> PIA)
+ m_pia[1]->irqb_handler().set_inputline("maincpu", M6502_IRQ_LINE); // V_BLANK Interrupt Event. (PIA -> CPU)
+
+ // video hardware
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(100));
+ screen.set_size((39+1)*8, (31+1)*8); // Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1).
+ screen.set_visarea(0*8, 32*8-1, 0*8, 31*8-1); // Taken from MC6845 init, registers 01 & 06.
+ screen.set_screen_update(FUNC(calomega_state::screen_update_calomega));
+
+ screen.screen_vblank().set(FUNC(calomega_state::vblank0_w));
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_calomega);
+ PALETTE(config, m_palette, FUNC(calomega_state::calomega_palette), 256);
+
+ mc6845_device &crtc(MC6845(config, "crtc", CPU_CLOCK)); // 6845 @ CPU clock
+ crtc.set_screen("screen");
+ crtc.set_show_border_area(false);
+ crtc.set_char_width(8);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ ay8912_device &ay8912(AY8912(config, "ay8912", SND_CLOCK)); // confirmed
+ ay8912.port_a_read_callback().set_ioport("SW3"); // from schematics
+ ay8912.add_route(ALL_OUTPUTS, "mono", 0.75);
+
+ // acia 0
+ ACIA6850(config, m_acia6850[0], 0);
+ m_acia6850[0]->txd_handler().set("uart", FUNC(i8251_device::write_rxd));
+ m_acia6850[0]->irq_handler().set_inputline("maincpu", M6502_IRQ_LINE);
+
+ I8251(config, m_uart, 5'185'000);
+ m_uart->txd_handler().set("acia6850_0", FUNC(acia6850_device::write_rxd));
+ m_uart->rxrdy_handler().set([this] (int state) { calomega_state::m_rxrdy = state;});
+
+ clock_device &aciabaud(CLOCK(config, "aciabaud", UART_CLOCK));
+ aciabaud.signal_handler().set(FUNC(calomega_state::w_903kb_acia_clock));
+
+ TIMER(config, "timer_0").configure_periodic(FUNC(calomega_state::timer_0), attotime::from_hz(550*2)); // (time*2) - Each timer pulse -> half period
+
+ HOPPER(config, m_hopper, attotime::from_msec(50), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH );
+}
+
+
void calomega_state::s903mod(machine_config &config)
{
sys903(config);
// basic machine hardware
-
m_maincpu->set_addrmap(AS_PROGRAM, &calomega_state::s903mod_map);
// sound hardware
@@ -3474,7 +4512,6 @@ void calomega_state::sys905(machine_config &config)
sys903(config);
// basic machine hardware
-
m_maincpu->set_addrmap(AS_PROGRAM, &calomega_state::sys905_map);
// video hardware
@@ -3488,20 +4525,13 @@ void calomega_state::sys905(machine_config &config)
screen.screen_vblank().set(FUNC(calomega_state::vblank1_w));
PIA6821(config.replace(), m_pia[0], 0);
- m_pia[0]->readpa_handler().set(FUNC(calomega_state::s905_mux_port_r)); // Mux. Button read.
- m_pia[0]->writepa_handler().set(FUNC(calomega_state::dummy_pia_w)); // Bit 7 & 6 as output. (Watchdog & Bat. Test control) - Ignored
+ m_pia[0]->readpa_handler().set(FUNC(calomega_state::s905_mux_port_r)); // Muxed inputs read.
m_pia[0]->writepb_handler().set(FUNC(calomega_state::lamps_905_w)); // Full Lamps - OK.
- m_pia[0]->readcb1_handler().set(FUNC(calomega_state::vblank_r)); // V_BLANK Interrupt Ack. (CPU -> PIA)
- m_pia[0]->cb2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // No connected (from schematics).
m_pia[0]->irqb_handler().set_inputline("maincpu", M6502_IRQ_LINE); // V_BLANK Interrupt Event. (PIA -> CPU)
PIA6821(config.replace(), m_pia[1], 0);
m_pia[1]->readpa_handler().set_ioport("SW1"); // Full port.
- //m_pia[1]->readpb_handler().set(FUNC(calomega_state::dummy_pia_r)); // Debug: so much need to read????? :)
- //m_pia[1]->writepa_handler().set(FUNC(calomega_state::dummy_pia_w)); // Debug: to assign lamps/counters/solenids/hopper????
m_pia[1]->writepb_handler().set(FUNC(calomega_state::s905_mux_w)); // Mux. Scan Lines.(Lower Nibble). Hopper & Coin Lockout (Upper nibble).
- m_pia[1]->readcb1_handler().set(FUNC(calomega_state::timer_r)); // Timer Interrupt Ack. (CPU -> PIA)
- m_pia[1]->cb2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // No connected (from schematics).
m_pia[1]->irqb_handler().set_inputline("maincpu", M6502_IRQ_LINE); // Timer Interrupt Event. (PIA -> CPU)
// sound hardware
@@ -3513,6 +4543,7 @@ void calomega_state::sys905(machine_config &config)
config.device_remove("aciabaud");
}
+
void calomega_state::sys906(machine_config &config)
{
sys903(config);
@@ -3531,7 +4562,6 @@ void calomega_state::sys906(machine_config &config)
screen.screen_vblank().set(FUNC(calomega_state::vblank2_w));
PIA6821(config.replace(), m_pia[0], 0);
m_pia[0]->readpa_handler().set_ioport("SW1"); // Bit 7 - CGBANK ???? input?-output?
- //m_pia[0]->readpb_handler().set(FUNC(calomega_state::pia0_bin_r)); // No inputs on port_B
m_pia[0]->ca2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // Ignored
m_pia[0]->cb2_handler().set(FUNC(calomega_state::dummy_pia_line_w)); // Diverter
m_pia[0]->writepa_handler().set(FUNC(calomega_state::pia0_aout_w)); // Bit 7 - CGBANK ???? input?-output?
@@ -3586,8 +4616,8 @@ ROM_START( comg074 ) // Cal Omega v7.4 (Gaming Poker)
ROM_LOAD( "poker_cg2b.u69", 0x0800, 0x0800, CRC(6bbb1e2d) SHA1(51ee282219bf84218886ad11a24bc6a8e7337527) )
ROM_LOAD( "poker_cg2a.u68", 0x1000, 0x0800, CRC(6e3e9b1d) SHA1(14eb8d14ce16719a6ad7d13db01e47c8f05955f0) )
- ROM_REGION( 0x100, "proms", 0 ) // from other set
- ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, BAD_DUMP CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
ROM_END
ROM_START( comg076 ) // Cal Omega v7.6 (Arcade Poker)
@@ -3673,6 +4703,9 @@ ROM_START( comg094 ) // Cal Omega v9.4 (Keno)
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
+
+ ROM_REGION(0x1000, "kstec", 0)
+ ROM_LOAD( "903kstec.0", 0x0000, 0x0800, CRC(c1636ab5) SHA1(5a3ad24918751ca6a6640807e421e80f6b4cc844) )
ROM_END
ROM_START( comg107 ) // Cal Omega v10.7c (Big Game)
@@ -3691,11 +4724,8 @@ ROM_START( comg107 ) // Cal Omega v10.7c (Big Game)
ROM_LOAD( "lotcgb.u69", 0x1000, 0x1000, CRC(5bda0f42) SHA1(d4b3340e9c8ca49483fa846103f0bd81d57a5ab3) )
ROM_LOAD( "lotcga.u68", 0x2000, 0x1000, CRC(0975e360) SHA1(7b9dbbae50c43ad99ee11798ada0a44e71c611f9) )
- ROM_REGION( 0x0800, "user1", 0 ) // keyboard interfase ROM
- ROM_LOAD( "lotkbd.sub", 0x0000, 0x0800, CRC(c1636ab5) SHA1(5a3ad24918751ca6a6640807e421e80f6b4cc844) )
-
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "bclr.u28", 0x0000, 0x0100, CRC(0ec45d01) SHA1(da73ae7e1c74913921dc378a97795c6da47dcbfb) )
+ ROM_LOAD( "bgclr.u28", 0x0000, 0x0100, CRC(6c2d44c5) SHA1(01412dbb9e8e30f01cc24fbf900c02eaf8956622) )
ROM_END
ROM_START( comg123 ) // Cal Omega v12.3 (Ticket Poker)
@@ -3756,6 +4786,9 @@ ROM_START( comg127 ) // Cal Omega v12.7 (Keno)
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
+
+ ROM_REGION(0x1000, "kstec", 0)
+ ROM_LOAD( "903kstec.0", 0x0000, 0x0800, CRC(c1636ab5) SHA1(5a3ad24918751ca6a6640807e421e80f6b4cc844) )
ROM_END
ROM_START( comg128 ) // Cal Omega v12.8 (Arcade Game)
@@ -3876,6 +4909,9 @@ ROM_START( comg164 ) // Cal Omega v16.4 (Keno)
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
+
+ ROM_REGION(0x1000, "kstec", 0)
+ ROM_LOAD( "903kstec.0", 0x0000, 0x0800, CRC(c1636ab5) SHA1(5a3ad24918751ca6a6640807e421e80f6b4cc844) )
ROM_END
ROM_START( comg168 ) // Cal Omega v16.8 (Keno)
@@ -3896,6 +4932,9 @@ ROM_START( comg168 ) // Cal Omega v16.8 (Keno)
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
+
+ ROM_REGION(0x1000, "kstec", 0)
+ ROM_LOAD( "903kstec.0", 0x0000, 0x0800, CRC(c1636ab5) SHA1(5a3ad24918751ca6a6640807e421e80f6b4cc844) )
ROM_END
ROM_START( comg172 ) // Cal Omega v17.2 (Double Double Poker)
@@ -3998,6 +5037,26 @@ ROM_START( comg183 ) // Cal Omega v18.3 (Pixels)
ROM_LOAD( "pixclr.u28", 0x0000, 0x0100, CRC(67d23e76) SHA1(826cf77ca5a4d492d66e45ee96a7780a94fbe634) )
ROM_END
+ROM_START( comg184 ) // Cal Omega v18.4 (Pixels)
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_FILL( 0x3000, 0x1000, 0xff ) // empty socket
+ ROM_LOAD( "18-42.u6", 0x4000, 0x1000, CRC(b80f6912) SHA1(8675ebb57aa9f7d9dfa38920e31bc9d0824eeaac) )
+ ROM_LOAD( "18-43.u7", 0x5000, 0x1000, CRC(bb68fabc) SHA1(35b4bd0b1a9aa432fe1e341c63d839c3834b8684) )
+ ROM_LOAD( "18-44.u8", 0x6000, 0x1000, CRC(5ef0b953) SHA1(6da595404505fe50bf52bcb720ec46ca020dec97) )
+ ROM_LOAD( "18-45.u9", 0x7000, 0x1000, CRC(bc56398d) SHA1(9c6e328f2c81b57d797e9db4b083d1974fa1d159) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "pxcg0.u67", 0x0000, 0x0800, CRC(4b487d88) SHA1(ae8bf1c84c475a70ea98eb8419a920389bac1761) )
+
+ ROM_REGION( 0x3000, "gfx2", 0 )
+ ROM_LOAD( "pxcgc.u70", 0x0000, 0x1000, CRC(9750eea2) SHA1(4f8b04a161501840ad2576379f23e8be2d46a488) )
+ ROM_LOAD( "pxcgb.u69", 0x1000, 0x1000, CRC(a3bed6b1) SHA1(078cface4af9720bee3288f5f0236725c8bfb575) )
+ ROM_LOAD( "pxcga.u68", 0x2000, 0x1000, CRC(d80f064a) SHA1(1b22ca3e446ed3c6fb49a90c463394dec96bc4ec) )
+
+ ROM_REGION( 0x100, "proms", 0 )
+ ROM_LOAD( "pixclr.u28", 0x0000, 0x0100, CRC(67d23e76) SHA1(826cf77ca5a4d492d66e45ee96a7780a94fbe634) )
+ROM_END
+
ROM_START( comg185 ) // Cal Omega v18.5 (Pixels)
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_FILL( 0x3000, 0x1000, 0xff ) // empty socket
@@ -4080,7 +5139,7 @@ ROM_END
ROM_START( comg208 ) // Cal Omega v20.8 (Winner's Choice)
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "20-81.u5", 0x3000, 0x1000, CRC(938be03a) SHA1(606252b5160a7af340faa3d4ed6af9dff849c9ac) )
+ ROM_LOAD( "20-81.u5", 0x3000, 0x1000, CRC(b042de4d) SHA1(6de8e5ca45fe8159d30da2754fab818e84bbcc0c) )
ROM_LOAD( "20-82.u6", 0x4000, 0x1000, CRC(7d42257c) SHA1(f1487bcc2475d1bcdfbc9bf866adcb0d510acef5) )
ROM_LOAD( "20-83.u7", 0x5000, 0x1000, CRC(b3b25958) SHA1(096f010db3164579ba81851a3f1062df0f46fc0f) )
ROM_LOAD( "20-84.u8", 0x6000, 0x1000, CRC(0bfb9f9d) SHA1(4a3c1e88faa90a9f4a483b053beb2c8af688d52d) )
@@ -4095,14 +5154,14 @@ ROM_START( comg208 ) // Cal Omega v20.8 (Winner's Choice)
ROM_LOAD( "mlt2cga.u68", 0x2000, 0x1000, CRC(b7397d3a) SHA1(f35607a4cd60e4467e27474e8063b7a7a4a65d9f) )
ROM_REGION( 0x100, "proms", 0 )
- ROM_LOAD( "mltclr.u28", 0x0000, 0x0100, CRC(fefb0fa8) SHA1(66d86aa19d9d37ffd2840d6653fcec667bc716d4) )
+ ROM_LOAD( "mltclr.u28", 0x0000, 0x0100, CRC(ab8960a6) SHA1(2414b445739860a0c3e533f2992291ff8a471d76) )
ROM_END
ROM_START( comg227 ) // Cal Omega v22.7 (Amusement Poker (Double Double))
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_FILL( 0x3000, 0x1000, 0xff ) // empty socket
ROM_FILL( 0x4000, 0x1000, 0xff ) // empty socket
- ROM_LOAD( "22-73.u7", 0x5000, 0x1000, CRC(152d1ff9) SHA1(8bbfea1bae9e4fe2a2ac52507dc8dd0e33fbbd06) )
+ ROM_LOAD( "22-73.u7", 0x5000, 0x1000, BAD_DUMP CRC(152d1ff9) SHA1(8bbfea1bae9e4fe2a2ac52507dc8dd0e33fbbd06) )
ROM_LOAD( "22-74.u8", 0x6000, 0x1000, CRC(3af0f69d) SHA1(c34a0eab3ad4e4db310727805ba1ddc73533bfa6) )
ROM_LOAD( "22-75.u9", 0x7000, 0x1000, CRC(d1f3fe24) SHA1(8b43b521fb1be8ef4286b4bfee99b654c49cf9de) )
@@ -4269,6 +5328,9 @@ ROM_START( comg272a ) // Cal Omega v27.2 (Keno (amusement))
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
+
+ ROM_REGION(0x1000, "kstec", 0)
+ ROM_LOAD( "903kstec.0", 0x0000, 0x0800, CRC(c1636ab5) SHA1(5a3ad24918751ca6a6640807e421e80f6b4cc844) )
ROM_END
ROM_START( comg272b ) // Cal Omega v27.2 (Keno (gaming))
@@ -4289,6 +5351,9 @@ ROM_START( comg272b ) // Cal Omega v27.2 (Keno (gaming))
ROM_REGION( 0x100, "proms", 0 )
ROM_LOAD( "pokclr.u28", 0x0000, 0x0100, CRC(a8191ef7) SHA1(d6f777980179ab091e2713ee815d46bf9c0ac486) )
+
+ ROM_REGION(0x1000, "kstec", 0)
+ ROM_LOAD( "903kstec.0", 0x0000, 0x0800, CRC(c1636ab5) SHA1(5a3ad24918751ca6a6640807e421e80f6b4cc844) )
ROM_END
/*
@@ -4610,22 +5675,6 @@ ROM_END
* Driver Init *
*************************************************/
-void calomega_state::init_sys903()
-{
- save_item(NAME(m_tx_line));
- save_item(NAME(m_s903_mux_data));
-}
-
-void calomega_state::init_s903mod()
-{
- save_item(NAME(m_s903_mux_data));
-}
-
-void calomega_state::init_sys905()
-{
- save_item(NAME(m_s905_mux_data));
-}
-
void calomega_state::init_comg079()
{
uint8_t *PRGROM = memregion( "maincpu" )->base();
@@ -4755,8 +5804,6 @@ void calomega_state::init_comg079()
void calomega_state::init_comg080()
{
- init_sys903();
-
/* Injecting missing Start and NMI vectors...
Start = $2042; NMI = $26f8;
Also a fake vector at $3ff8-$3ff9. The code checks these values to continue.
@@ -4783,67 +5830,68 @@ void calomega_state::init_comg176()
void calomega_state::init_any()
{
uint8_t *PRGROM = memregion( "maincpu" )->base();
- PRGROM[0x0000] = 0x00;
-}
+ PRGROM[0x0000] = 0x00;
+}
/*************************************************
* Game Drivers *
*************************************************/
-// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1981, comg074, 0, sys903, comg074, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.4 (Gaming Poker, W.Export)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, comg076, 0, sys903, comg076, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.6 (Arcade Poker)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, comg079, 0, sys903, comg076, calomega_state, init_comg079, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.9 (Arcade Poker)", MACHINE_SUPPORTS_SAVE ) // bad dump
-GAME( 1981, comg080, 0, sys903, arcadebj, calomega_state, init_comg080, ROT0, "Cal Omega Inc.", "Cal Omega - Game 8.0 (Arcade Black Jack)", MACHINE_SUPPORTS_SAVE ) // bad dump
-GAME( 1981, comg094, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 9.4 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg107, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 10.7c (Big Game)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg123, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.3 (Ticket Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
-GAME( 1982, comg125, 0, sys903, nudgesw, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.5 (Bingo)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg127, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.7 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg128, 0, sys903, comg128, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.8 (Arcade Game)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg134, 0, sys903, nudgensw, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 13.4 (Nudge)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg145, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 14.5 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg157, 0, sys903, comg157, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.7 (Double-Draw Poker)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg159, 0, sys905, comg159, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.9 (Wild Double-Up)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg164, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.4 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // incomplete dump
-GAME( 1983, comg168, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.8 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg172, 0, sys905, comg172, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.2 (Double Double Poker)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, comg175, 0, sys903, gdrwpkrd, calomega_state, init_sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 17.51 (Gaming Draw Poker)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg176, 0, sys903, nudgensw, calomega_state, init_comg176, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.6 (Nudge)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, comg181, 0, sys903, nudgesw, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.1 (Nudge)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg183, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.3 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg185, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.5 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg186, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.6 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1983, comg187, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.7 (Amusement Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
-GAME( 1984, comg204, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.4 (Super Blackjack)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1984, comg208, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.8 (Winner's Choice)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1984, comg227, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 22.7 (Amusement Poker, d/d)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1984, comg230, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.0 (FC Bingo (4-card))", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
-GAME( 1984, comg236, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.6 (Hotline)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1985, comg239, 0, sys903, gdrwpkrd, calomega_state, init_sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 23.9 (Gaming Draw Poker)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, comg240, 0, sys903, gdrwpkrh, calomega_state, init_sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 24.0 (Gaming Draw Poker, hold)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, comg246, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 24.6 (Hotline)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1985, comg272a, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, amusement)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1985, comg272b, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, gaming)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUTS */
+GAME( 1981, comg074, 0, sys903, comg074, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.4 (Gaming Poker, W.Export)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, comg076, 0, sys903, comg076, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.6 (Arcade Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, comg079, 0, sys903, comg076, calomega_state, init_comg079, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.9 (Arcade Poker)", MACHINE_SUPPORTS_SAVE ) // bad dump
+GAME( 1981, comg080, 0, sys903, arcadebj, calomega_state, init_comg080, ROT0, "Cal Omega Inc.", "Cal Omega - Game 8.0 (Arcade Black Jack)", MACHINE_SUPPORTS_SAVE ) // bad dump
+GAMEL( 1981, comg094, 0, sys903kb, keno_903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 9.4 (Keno)", MACHINE_SUPPORTS_SAVE, layout_kenokb )
+GAME( 1982, comg107, 0, sys903, biggame, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 10.7c (Big Game)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg123, 0, sys903, stand903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.3 (Ticket Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
+GAME( 1982, comg125, 0, sys903, nudgesw, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.5 (Bingo)", MACHINE_SUPPORTS_SAVE )
+GAMEL( 1982, comg127, 0, sys903kb, keno_903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.7 (Keno)", MACHINE_SUPPORTS_SAVE, layout_kenokb )
+GAME( 1982, comg128, 0, sys903, comg128, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.8 (Arcade Game)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg134, 0, sys903, nudgensw, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 13.4 (Nudge)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg145, 0, sys903, pixels, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 14.5 (Pixels)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg157, 0, sys903, comg157, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.7 (Double-Draw Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg159, 0, sys905, comg159, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.9 (Wild Double-Up)", MACHINE_SUPPORTS_SAVE )
+GAMEL( 1983, comg164, 0, sys903kb, keno_903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.4 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_kenokb ) // incomplete dump
+GAMEL( 1983, comg168, 0, sys903kb, keno_903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.8 (Keno)", MACHINE_SUPPORTS_SAVE, layout_kenokb )
+GAME( 1983, comg172, 0, sys905, comg172, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.2 (Double Double Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, comg175, 0, sys903, gdrwpkrd, calomega_state, empty_init, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 17.51 (Gaming Draw Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg176, 0, sys903, nudgensw, calomega_state, init_comg176, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.6 (Nudge)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg181, 0, sys903, nudgesw, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.1 (Nudge)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg183, 0, sys905, pixels, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.3 (Pixels)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg184, 0, sys905, pixels, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.4 (Pixels)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg185, 0, sys905, pixels, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.5 (Pixels)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg186, 0, sys905, pixels, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.6 (Pixels)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg187, 0, sys905, stand905, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.7 (Amusement Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
+GAME( 1984, comg204, 0, sys905, comg204, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.4 (Super Blackjack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, comg208, 0, sys905, comg208 , calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.8 (Winner's Choice)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, comg227, 0, sys905, stand905, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 22.7 (Amusement Poker, d/d)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
+GAME( 1984, comg230, 0, sys905, stand905, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.0 (FC Bingo (4-card))", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
+GAME( 1984, comg236, 0, sys905, hotline, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.6 (Hotline)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg239, 0, sys903, gdrwpkrd, calomega_state, empty_init, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 23.9 (Gaming Draw Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg240, 0, sys903, gdrwpkrh, calomega_state, empty_init, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 24.0 (Gaming Draw Poker, hold)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg246, 0, sys905, hotline, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 24.6 (Hotline)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAMEL( 1985, comg272a, 0, sys903kb, keno_903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, amusement)", MACHINE_SUPPORTS_SAVE, layout_kenokb )
+GAMEL( 1985, comg272b, 0, sys903kb, keno_903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, gaming)", MACHINE_SUPPORTS_SAVE, layout_kenokb )
//************ Diagnostic Sets ************
-GAME( 198?, comg903d, 0, sys903, stand903, calomega_state, init_sys903, ROT0, "Cal Omega Inc.", "Cal Omega - System 903 Diag.PROM", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 198?, comg905d, 0, sys905, stand905, calomega_state, init_sys905, ROT0, "Cal Omega Inc.", "Cal Omega - System 905 Diag.PROM", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 198?, comg903d, 0, sys903, stand903, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - System 903 Diag.PROM", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, comg905d, 0, sys905, stand905, calomega_state, empty_init, ROT0, "Cal Omega Inc.", "Cal Omega - System 905 Diag.PROM", MACHINE_SUPPORTS_SAVE )
//************* 906-III games **************
-GAME( 1988, comg5107, 0, sys906, stand906, calomega_state, empty_init, ROT0, "Casino Electronics Inc.", "CEI 51.07 (CEI 906-III Poker)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, comg5108, 0, sys906, stand906, calomega_state, empty_init, ROT0, "Casino Electronics Inc.", "CEI 51.08 (CEI 906-III Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, comg5107, 0, sys906, stand906, calomega_state, empty_init, ROT0, "Casino Electronics Inc.", "CEI 51.07 (CEI 906-III Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, comg5108, 0, sys906, stand906, calomega_state, empty_init, ROT0, "Casino Electronics Inc.", "CEI 51.08 (CEI 906-III Poker)", MACHINE_SUPPORTS_SAVE )
//****** Unofficial 903/904/905 3rd part games *******
-GAME( 1982, elgrande, 0, s903mod, elgrande, calomega_state, init_s903mod, ROT0, "Enter-Tech, Ltd. / Tuni Electro Service", "El Grande - 5 Card Draw (New)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, jjpoker, 0, s903mod, jjpoker, calomega_state, init_s903mod, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, jjpokerb, jjpoker, s903mod, jjpoker, calomega_state, init_s903mod, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, ssipkr24, 0, s903mod, ssipkr, calomega_state, init_s903mod, ROT0, "SSI", "SSI Poker (v2.4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, ssipkr30, ssipkr24, s903mod, ssipkr, calomega_state, init_s903mod, ROT0, "SSI", "SSI Poker (v3.0)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, ssipkr40, ssipkr24, s903mod, ssipkr, calomega_state, init_s903mod, ROT0, "SSI", "SSI Poker (v4.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, elgrande, 0, s903mod, elgrande, calomega_state, empty_init, ROT0, "Enter-Tech, Ltd. / Tuni Electro Service", "El Grande - 5 Card Draw (New)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jjpoker, 0, s903mod, jjpoker, calomega_state, empty_init, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jjpokerb, jjpoker, s903mod, jjpoker, calomega_state, empty_init, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ssipkr24, 0, s903mod, ssipkr, calomega_state, empty_init, ROT0, "SSI", "SSI Poker (v2.4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ssipkr30, ssipkr24, s903mod, ssipkr, calomega_state, empty_init, ROT0, "SSI", "SSI Poker (v3.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ssipkr40, ssipkr24, s903mod, ssipkr, calomega_state, empty_init, ROT0, "SSI", "SSI Poker (v4.0)", MACHINE_SUPPORTS_SAVE )
//****** Unofficial 906-III family 3rd part games *******
-GAME( 1990, cas21iwc, 0, sys906, cas21iwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Casino 21 UCMC/IWC (ver 30.08)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, pokeriwc, 0, sys906, pokeriwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, pokiwc162, pokeriwc, sys906, pokeriwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03 20-6-91)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cas21iwc, 0, sys906, cas21iwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Casino 21 UCMC/IWC (ver 30.08)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, pokeriwc, 0, sys906, pokeriwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, pokiwc162, pokeriwc, sys906, pokeriwc, calomega_state, empty_init, ROT0, "UCMC/IWC", "Poker UCMC/IWC (ver 162.03 20-6-91)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/calomega.h b/src/mame/includes/calomega.h
index 43ee91a0ff9..48009a22010 100644
--- a/src/mame/includes/calomega.h
+++ b/src/mame/includes/calomega.h
@@ -8,17 +8,19 @@
#include "cpu/m6502/m6502.h"
#include "cpu/m6502/r65c02.h"
-#include "machine/nvram.h"
-#include "machine/timer.h"
+#include "cpu/mcs48/mcs48.h"
#include "machine/6821pia.h"
#include "machine/6850acia.h"
#include "machine/clock.h"
+#include "machine/i8251.h"
+#include "machine/nvram.h"
#include "machine/ticket.h"
+#include "machine/timer.h"
#include "sound/ay8910.h"
#include "video/mc6845.h"
+#include "emupal.h"
#include "screen.h"
#include "speaker.h"
-#include "emupal.h"
#include "tilemap.h"
class calomega_state : public driver_device
@@ -28,7 +30,10 @@ public:
driver_device(mconfig, type, tag),
m_pia(*this, "pia%u", 0U),
m_maincpu(*this, "maincpu"),
- m_acia6850_0(*this, "acia6850_0"),
+ m_kstec(*this, "kstec"),
+ m_uart(*this, "uart"),
+ m_key_row(*this, "KB_%u", 0),
+ m_acia6850(*this, "acia6850_%u", 0U),
m_aciabaud(*this, "aciabaud"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
@@ -42,22 +47,24 @@ public:
m_in0_3(*this, "IN0-3"),
m_frq(*this, "FRQ"),
m_sw2(*this, "SW2"),
- m_lamps(*this, "lamp%u", 1U)
+ m_lamps(*this, "lamp%u", 1U),
+ m_red(*this, "POT1_RED"),
+ m_grn(*this, "POT2_GREEN"),
+ m_blu(*this, "POT3_BLUE")
+
{
}
- void init_sys903();
- void init_s903mod();
- void init_sys905();
void init_comg079();
void init_comg080();
void init_comg176();
void init_any();
- void sys905(machine_config &config);
+ void sys903(machine_config &config);
void s903mod(machine_config &config);
+ void sys903kb(machine_config &config);
+ void sys905(machine_config &config);
void sys906(machine_config &config);
- void sys903(machine_config &config);
protected:
virtual void machine_start() override { m_lamps.resolve(); }
@@ -82,6 +89,7 @@ private:
void lamps_903b_w(uint8_t data);
void lamps_905_w(uint8_t data);
void dummy_pia_w(uint8_t data);
+ uint8_t keyb_903_r();
DECLARE_READ_LINE_MEMBER(timer_r);
DECLARE_READ_LINE_MEMBER(vblank_r);
@@ -92,8 +100,8 @@ private:
DECLARE_WRITE_LINE_MEMBER(vblank1_w);
DECLARE_WRITE_LINE_MEMBER(vblank2_w);
DECLARE_WRITE_LINE_MEMBER(dummy_pia_line_w);
- DECLARE_WRITE_LINE_MEMBER(write_acia_tx);
DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
+ DECLARE_WRITE_LINE_MEMBER(w_903kb_acia_clock);
DECLARE_WRITE_LINE_MEMBER(update_aciabaud_scale);
TIMER_DEVICE_CALLBACK_MEMBER(timer_0);
@@ -105,20 +113,23 @@ private:
uint32_t screen_update_calomega(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void calomega_palette(palette_device &palette) const;
- void s903mod_map(address_map &map);
void sys903_map(address_map &map);
+ void s903mod_map(address_map &map);
void sys905_map(address_map &map);
void sys906_map(address_map &map);
+ void kstec_mem_map(address_map &map);
+ void kstec_io_map(address_map &map);
optional_device_array<pia6821_device, 2> m_pia;
-
required_device<m6502_device> m_maincpu;
- optional_device<acia6850_device> m_acia6850_0;
+ optional_device<i8035_device> m_kstec;
+ optional_device<i8251_device> m_uart;
+ optional_ioport_array<16> m_key_row;
+ optional_device_array<acia6850_device, 1> m_acia6850; // keep array mode for future implementations
optional_device<clock_device> m_aciabaud;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
-
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
@@ -129,16 +140,27 @@ private:
optional_ioport m_in0_1;
optional_ioport m_in0_2;
optional_ioport m_in0_3;
+
optional_ioport m_frq;
optional_ioport m_sw2;
+
output_finder<9> m_lamps;
+ required_ioport m_red;
+ required_ioport m_grn;
+ required_ioport m_blu;
- uint8_t m_vblank, m_timer, m_tx_line;
+ uint8_t m_vblank, m_timer;
int m_s903_mux_data;
int m_s905_mux_data;
int m_pia_data;
bool m_lockout = false;
bool m_diverter;
+ int m_kbscan;
+ int m_rxrdy;
+ int r_pot;
+ int g_pot;
+ int b_pot;
+
tilemap_t *m_bg_tilemap;
};
diff --git a/src/mame/layout/kenokb.lay b/src/mame/layout/kenokb.lay
new file mode 100644
index 00000000000..85e472153da
--- /dev/null
+++ b/src/mame/layout/kenokb.lay
@@ -0,0 +1,195 @@
+<?xml version="1.0"?>
+<!--
+license:CC0
+-->
+<mamelayout version="2">
+
+ <element name="bet" defstate="1">
+ <rect state="0">
+ <color red="0.75" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="1">
+ <color red="0.25" green="0.0" blue="0.0" />
+ </rect>
+ <text string="BET">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.3" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="start" defstate="1">
+ <rect state="0">
+ <color red="0.75" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="1">
+ <color red="0.25" green="0.0" blue="0.0" />
+ </rect>
+ <text string="START">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.3" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="cancel" defstate="1">
+ <rect state="0">
+ <color red="0.75" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="1">
+ <color red="0.25" green="0.0" blue="0.0" />
+ </rect>
+ <text string="CANCEL">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.3" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="exit" defstate="1">
+ <rect state="0">
+ <color red="0.75" green="0.0" blue="0.0" />
+ </rect>
+ <rect state="1">
+ <color red="0.25" green="0.0" blue="0.0" />
+ </rect>
+ <text string="EXIT">
+ <color red="0.0" green="0.0" blue="0.0" />
+ <bounds x="0" y="0.3" width="1" height="0.4" />
+ </text>
+ </element>
+
+ <element name="stand">
+ <rect state="0">
+ <color red="0.40" green="0.40" blue="0.40" />
+ </rect>
+ </element>
+
+ <element name="num" defstate="1">
+ <rect state="0">
+ <color alpha="0.00" />
+ </rect>
+ <rect state="1">
+ <color alpha="0.50" red="1.00" green="0.50" blue="0.50" />
+ </rect>
+ </element>
+
+ <view name="Keyboard Buttons">
+ <screen index="0">
+ <bounds left="0" top="0" right="4" bottom="3" />
+ </screen>
+<!-- 30, 40, 49 -->
+ <element ref="num" inputtag="KB_0" inputmask="0x04"><bounds x="2.50" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_0" inputmask="0x08"><bounds x="2.50" y="0.87065" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_0" inputmask="0x10"><bounds x="2.25" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 20, 19, 29, 28, 38 -->
+ <element ref="num" inputtag="KB_1" inputmask="0x02"><bounds x="2.50" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_1" inputmask="0x04"><bounds x="2.25" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_1" inputmask="0x08"><bounds x="2.25" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_1" inputmask="0x10"><bounds x="2.00" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_1" inputmask="0x20"><bounds x="2.00" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 10, 9, 18, 17, 27, 37 -->
+ <element ref="num" inputtag="KB_2" inputmask="0x01"><bounds x="2.50" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_2" inputmask="0x02"><bounds x="2.25" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_2" inputmask="0x08"><bounds x="2.00" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_2" inputmask="0x10"><bounds x="1.75" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_2" inputmask="0x20"><bounds x="1.75" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_2" inputmask="0x40"><bounds x="1.75" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 8, 7, 6, 16, 26, 36 -->
+ <element ref="num" inputtag="KB_3" inputmask="0x02"><bounds x="2.00" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_3" inputmask="0x04"><bounds x="1.75" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_3" inputmask="0x08"><bounds x="1.50" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_3" inputmask="0x10"><bounds x="1.50" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_3" inputmask="0x20"><bounds x="1.50" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_3" inputmask="0x40"><bounds x="1.50" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 3, 4, 5, 15, 25, 35 -->
+ <element ref="num" inputtag="KB_4" inputmask="0x02"><bounds x="0.75" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_4" inputmask="0x04"><bounds x="1.00" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_4" inputmask="0x08"><bounds x="1.25" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_4" inputmask="0x10"><bounds x="1.25" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_4" inputmask="0x20"><bounds x="1.25" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_4" inputmask="0x40"><bounds x="1.25" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 2, 13, 14, 24, 34 -->
+ <element ref="num" inputtag="KB_5" inputmask="0x01"><bounds x="0.50" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_5" inputmask="0x08"><bounds x="0.75" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_5" inputmask="0x10"><bounds x="1.00" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_5" inputmask="0x20"><bounds x="1.00" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_5" inputmask="0x40"><bounds x="1.00" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 1, 12, 22, 23, 33 -->
+ <element ref="num" inputtag="KB_6" inputmask="0x01"><bounds x="0.25" y="0.29000" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_6" inputmask="0x04"><bounds x="0.50" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_6" inputmask="0x10"><bounds x="0.50" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_6" inputmask="0x20"><bounds x="0.75" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_6" inputmask="0x40"><bounds x="0.75" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 11, 21, 31, 32 -->
+ <element ref="num" inputtag="KB_7" inputmask="0x02"><bounds x="0.25" y="0.48355" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_7" inputmask="0x04"><bounds x="0.25" y="0.67710" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_7" inputmask="0x08"><bounds x="0.25" y="0.87065" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_7" inputmask="0x40"><bounds x="0.50" y="0.87065" width="0.25" height="0.19355" /></element>
+<!-- 72, 73, 74, 75, 65, 55, 45 -->
+ <element ref="num" inputtag="KB_8" inputmask="0x01"><bounds x="0.50" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_8" inputmask="0x02"><bounds x="0.75" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_8" inputmask="0x04"><bounds x="1.00" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_8" inputmask="0x08"><bounds x="1.25" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_8" inputmask="0x10"><bounds x="1.25" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_8" inputmask="0x20"><bounds x="1.25" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_8" inputmask="0x40"><bounds x="1.25" y="1.06420" width="0.25" height="0.19355" /></element>
+<!-- 71, 61, 62, 63, 64, 54, 44 -->
+ <element ref="num" inputtag="KB_9" inputmask="0x01"><bounds x="0.25" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_9" inputmask="0x02"><bounds x="0.25" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_9" inputmask="0x04"><bounds x="0.50" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_9" inputmask="0x08"><bounds x="0.75" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_9" inputmask="0x10"><bounds x="1.00" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_9" inputmask="0x20"><bounds x="1.00" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_9" inputmask="0x40"><bounds x="1.00" y="1.06420" width="0.25" height="0.19355" /></element>
+<!-- 51, 41, 52, 53, 42, 43 -->
+ <element ref="num" inputtag="KB_10" inputmask="0x02"><bounds x="0.25" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_10" inputmask="0x04"><bounds x="0.25" y="1.06420" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_10" inputmask="0x08"><bounds x="0.50" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_10" inputmask="0x10"><bounds x="0.75" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_10" inputmask="0x20"><bounds x="0.50" y="1.06420" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_10" inputmask="0x40"><bounds x="0.75" y="1.06420" width="0.25" height="0.19355" /></element>
+<!-- 60, 50, 49 -->
+ <element ref="num" inputtag="KB_11" inputmask="0x04"><bounds x="2.50" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_11" inputmask="0x08"><bounds x="2.50" y="1.06420" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_11" inputmask="0x10"><bounds x="2.25" y="1.06420" width="0.25" height="0.19355" /></element>
+<!-- 70, 69, 59, 58, 48 -->
+ <element ref="num" inputtag="KB_12" inputmask="0x02"><bounds x="2.50" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_12" inputmask="0x04"><bounds x="2.25" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_12" inputmask="0x08"><bounds x="2.25" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_12" inputmask="0x10"><bounds x="2.00" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_12" inputmask="0x20"><bounds x="2.00" y="1.06420" width="0.25" height="0.19355" /></element>
+<!-- 80, 79, 68, 67, 57, 47 -->
+ <element ref="num" inputtag="KB_13" inputmask="0x01"><bounds x="2.50" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_13" inputmask="0x02"><bounds x="2.25" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_13" inputmask="0x08"><bounds x="2.00" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_13" inputmask="0x10"><bounds x="1.75" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_13" inputmask="0x20"><bounds x="1.75" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_13" inputmask="0x40"><bounds x="1.75" y="1.06420" width="0.25" height="0.19355" /></element>
+<!-- 78, 77, 76, 66, 56, 46 -->
+ <element ref="num" inputtag="KB_14" inputmask="0x02"><bounds x="2.00" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_14" inputmask="0x04"><bounds x="1.75" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_14" inputmask="0x08"><bounds x="1.50" y="1.64485" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_14" inputmask="0x10"><bounds x="1.50" y="1.45130" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_14" inputmask="0x20"><bounds x="1.50" y="1.25775" width="0.25" height="0.19355" /></element>
+ <element ref="num" inputtag="KB_14" inputmask="0x40"><bounds x="1.50" y="1.06420" width="0.25" height="0.19355" /></element>
+
+ <element ref="stand">
+ <bounds x="0" y="3.0" width="4.0" height="0.45" />
+ </element>
+
+ <element ref="bet" inputtag="KB_0" inputmask="0x01">
+ <bounds x="1" y="3.1" width="0.40" height="0.25" />
+ </element>
+
+ <element ref="start" inputtag="KB_0" inputmask="0x02">
+ <bounds x="1.5" y="3.1" width="0.40" height="0.25" />
+ </element>
+
+ <element ref="cancel" inputtag="KB_11" inputmask="0x02">
+ <bounds x="2" y="3.1" width="0.40" height="0.25" />
+ </element>
+
+ <element ref="exit" inputtag="KB_11" inputmask="0x01">
+ <bounds x="2.5" y="3.1" width="0.40" height="0.25" />
+ </element>
+
+ </view>
+</mamelayout>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 3c0f023a786..5f0882b9ab2 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -9833,6 +9833,7 @@ comg175 // (c) 1984 Cal Omega / Casino Electronics Inc.
comg176 // (c) 1982 Cal Omega Inc.
comg181 // (c) 1983 Cal Omega Inc.
comg183 // (c) 1983 Cal Omega Inc.
+comg184 // (c) 1983 Cal Omega Inc.
comg185 // (c) 1983 Cal Omega Inc.
comg186 // (c) 1983 Cal Omega Inc.
comg187 // (c) 1983 Cal Omega Inc.
diff --git a/src/mame/video/calomega.cpp b/src/mame/video/calomega.cpp
index 6d58d21f52e..b5a1c3a9e78 100644
--- a/src/mame/video/calomega.cpp
+++ b/src/mame/video/calomega.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders: Roberto Fresca
+// copyright-holders: Roberto Fresca, Grull Osgo
/***********************************************
.-----------------------------------------.
@@ -7,7 +7,7 @@
| CAL OMEGA / CEI / UCMC |
| SYSTEMS 903 / 904 / 905 / 906-III |
| |
- | Driver by Roberto Fresca. |
+ | Driver by Roberto Fresca & Grull Osgo |
| |
'-----------------------------------------'
@@ -39,12 +39,12 @@ TILE_GET_INFO_MEMBER(calomega_state::get_bg_tile_info)
--xx xx-- tiles color.
---- --x- tiles bank.
x--- ---x extended tiles addressing.
- -x-- ---- seems unused. */
-
+ -x-- ---- seems unused.
+*/
int attr = m_colorram[tile_index];
- int code = ((attr & 1) << 8) | m_videoram[tile_index]; // bit 0 extends the the tiles addressing
- int bank = (attr & 0x02) >> 1; // bit 1 switch the gfx banks
- int color = (attr & 0x3c) >> 2; // bits 2-3-4-5 for color
+ int code = ((attr & 1) << 8) | m_videoram[tile_index]; // bit 0 extends the the tiles addressing.
+ int bank = (attr & 0x02) >> 1; // bit 1 switch the gfx banks.
+ int color = (attr & 0x3c) >> 2; // bits 2-3-4-5 for color.
tileinfo.set(bank, code, color, 0);
}
@@ -57,13 +57,17 @@ void calomega_state::video_start()
uint32_t calomega_state::screen_update_calomega(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
+ if(r_pot != m_red->read()) { r_pot = m_red->read() * 2.55; calomega_palette(*m_palette);}
+ if(g_pot != m_grn->read()) { g_pot = m_grn->read() * 2.55; calomega_palette(*m_palette);}
+ if(b_pot != m_blu->read()) { b_pot = m_blu->read() * 2.55; calomega_palette(*m_palette);}
+
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0;
}
void calomega_state::calomega_palette(palette_device &palette) const
{
-/* the proms are 256x4 bit, but the games only seem to need the first 128 entries,
+/* The proms are 256 x 4 bits, but the games only seem to need the first 128 entries,
and the rest of the PROM data looks like junk rather than valid colors
prom bits
@@ -72,17 +76,9 @@ void calomega_state::calomega_palette(palette_device &palette) const
--x- green component
-x-- blue component
x--- foreground (colors with this bit set are full brightness,
- colors with it clear are attenuated by the background color pots)
+ colors with it clear are attenuated by the analogic color pots)
*/
- // TODO: hook pots up as PORT_ADJUSTERs instead of hard coding them here
-
- // let's make the BG a little darker than FG blue
- constexpr int r_pot = 0x00;
- constexpr int g_pot = 0x00;
- constexpr int b_pot = 0xc0;
-
- // 00000BGR
uint8_t const *const color_prom = memregion("proms")->base();
if (!color_prom)
return;
@@ -93,13 +89,13 @@ void calomega_state::calomega_palette(palette_device &palette) const
int const fg = BIT(nibble, 3);
- // red component
+ // red component
int const r = BIT(nibble, 0) * (fg ? 0xff : r_pot);
- // green component
+ // green component
int const g = BIT(nibble, 1) * (fg ? 0xff : g_pot);
- // blue component
+ // blue component
int const b = BIT(nibble, 2) * (fg ? 0xff : b_pot);
palette.set_pen_color(i, rgb_t(r, g, b));