summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/gei.cpp
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2017-10-31 18:34:20 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2017-10-31 18:34:20 +0100
commitbbf0beddf557ded33431ef043e6133c741e8c0d8 (patch)
treea0430294084f333cbc9e64781c040f0ac2c73859 /src/mame/drivers/gei.cpp
parent38870cbb7947561cea90b053f10c9593348f2c40 (diff)
gei.cpp: misc refactoring: (nw)
* moved 'signatures' out of the source and into a ROM, as suggested; * switched to configured banking; * added save state support; * added default nvrams to some of the sets to avoid errors on first boot.
Diffstat (limited to 'src/mame/drivers/gei.cpp')
-rw-r--r--src/mame/drivers/gei.cpp471
1 files changed, 253 insertions, 218 deletions
diff --git a/src/mame/drivers/gei.cpp b/src/mame/drivers/gei.cpp
index 0844d33f977..6df05a898d7 100644
--- a/src/mame/drivers/gei.cpp
+++ b/src/mame/drivers/gei.cpp
@@ -66,7 +66,7 @@ U.S.A. Trivia New Sports General Facts
or alt: Adult Sex 2 or alt: Adult Sex 3 or alt: Gay Times
NOTE: Trivia Question rom names are the internal names used. IE: read from the file with
- a Hex Editor. Any "_alt" extention is used to separate different roms with the same
+ a Hex Editor. Any "_alt" extension is used to separate different roms with the same
label or internal name.
*/
@@ -90,26 +90,12 @@ public:
m_maincpu(*this, "maincpu"),
m_dac(*this, "dac"),
m_ticket(*this, "ticket"),
- m_screen(*this, "screen") { }
-
- required_device<cpu_device> m_maincpu;
- required_device<dac_bit_interface> m_dac;
- optional_device<ticket_dispenser_device> m_ticket;
- required_device<screen_device> m_screen;
-
- virtual void video_start() override;
+ m_screen(*this, "screen"),
+ m_signature(*this, "signature"),
+ m_rombank(*this, "rombank") { }
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- bitmap_ind16 m_bitmap;
-
- uint8_t m_drawctrl[3];
- uint8_t m_color[8];
- int m_prevoffset;
- int m_yadd;
- int m_signature_answer;
- int m_signature_pos;
- uint8_t m_nmi_mask;
DECLARE_WRITE8_MEMBER(gei_drawctrl_w);
DECLARE_WRITE8_MEMBER(gei_bitmap_w);
DECLARE_READ8_MEMBER(catchall);
@@ -137,51 +123,83 @@ public:
DECLARE_READ8_MEMBER(banksel_5_r);
DECLARE_READ8_MEMBER(signature_r);
DECLARE_WRITE8_MEMBER(signature_w);
- DECLARE_WRITE8_MEMBER(signature2_w);
- DECLARE_WRITE8_MEMBER(signature3_w);
DECLARE_WRITE8_MEMBER(lamps_w);
DECLARE_WRITE8_MEMBER(sound_w);
DECLARE_WRITE8_MEMBER(sound2_w);
DECLARE_WRITE8_MEMBER(lamps2_w);
DECLARE_WRITE8_MEMBER(nmi_w);
DECLARE_READ8_MEMBER(portC_r);
- DECLARE_DRIVER_INIT(geimulti);
+
DECLARE_DRIVER_INIT(setbank);
+ DECLARE_DRIVER_INIT(bank2k);
+ DECLARE_DRIVER_INIT(bank8k);
+ DECLARE_DRIVER_INIT(geimulti);
+
INTERRUPT_GEN_MEMBER(vblank_irq);
+
+protected:
+ virtual void video_start() override;
+
+private:
+ bitmap_ind16 m_bitmap;
+
+ uint8_t m_drawctrl[3];
+ uint8_t m_color[8];
+ int m_prevoffset;
+ int m_yadd;
+ int m_signature_answer;
+ int m_signature_pos;
+ uint8_t m_nmi_mask;
+
+ required_device<cpu_device> m_maincpu;
+ required_device<dac_bit_interface> m_dac;
+ optional_device<ticket_dispenser_device> m_ticket;
+ required_device<screen_device> m_screen;
+ optional_region_ptr<uint8_t> m_signature;
+ optional_memory_bank m_rombank;
};
WRITE8_MEMBER(gei_state::gei_drawctrl_w)
{
m_drawctrl[offset] = data;
+
if (offset == 2)
{
- int i;
- for (i = 0; i < 8; i++)
- if (BIT(m_drawctrl[1],i)) m_color[i] = m_drawctrl[0] & 7;
+ for (int i = 0; i < 8; i++)
+ if (BIT(m_drawctrl[1], i)) m_color[i] = m_drawctrl[0] & 7;
}
}
WRITE8_MEMBER(gei_state::gei_bitmap_w)
{
- int sx,sy;
- int i;
-
- m_yadd = (offset==m_prevoffset) ? (m_yadd+1):0;
+ m_yadd = (offset == m_prevoffset) ? (m_yadd + 1) : 0;
m_prevoffset = offset;
- sx = 8 * (offset % 64);
- sy = offset / 64;
+ int sx = 8 * (offset % 64);
+ int sy = offset / 64;
sy = (sy + m_yadd) & 0xff;
-
- for (i = 0; i < 8; i++)
- m_bitmap.pix16(sy, sx+i) = m_color[8-i-1];
+ for (int i = 0; i < 8; i++)
+ m_bitmap.pix16(sy, sx + i) = m_color[8 - i - 1];
}
void gei_state::video_start()
{
m_screen->register_screen_bitmap(m_bitmap);
+
+ save_item(NAME(m_drawctrl));
+ save_item(NAME(m_color));
+ save_item(NAME(m_prevoffset));
+ save_item(NAME(m_yadd));
+ save_item(NAME(m_nmi_mask));
+ save_item(NAME(m_bitmap));
+
+ if (m_signature.found())
+ {
+ save_item(NAME(m_signature_answer));
+ save_item(NAME(m_signature_pos));
+ }
}
uint32_t gei_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
@@ -193,28 +211,28 @@ uint32_t gei_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c
WRITE8_MEMBER(gei_state::lamps_w)
{
/* 5 button lamps */
- output().set_led_value(0,data & 0x01);
- output().set_led_value(1,data & 0x02);
- output().set_led_value(2,data & 0x04);
- output().set_led_value(3,data & 0x08);
- output().set_led_value(4,data & 0x10);
+ output().set_led_value(0, data & 0x01);
+ output().set_led_value(1, data & 0x02);
+ output().set_led_value(2, data & 0x04);
+ output().set_led_value(3, data & 0x08);
+ output().set_led_value(4, data & 0x10);
/* 3 button lamps for deal, cancel, stand in poker games;
lamp order verified in poker and selection self tests */
- output().set_led_value(7,data & 0x20);
- output().set_led_value(5,data & 0x40);
- output().set_led_value(6,data & 0x80);
+ output().set_led_value(7, data & 0x20);
+ output().set_led_value(5, data & 0x40);
+ output().set_led_value(6, data & 0x80);
}
WRITE8_MEMBER(gei_state::sound_w)
{
/* bit 3 - coin lockout, lamp10 in poker / lamp6 in trivia test modes */
machine().bookkeeping().coin_lockout_global_w(~data & 0x08);
- output().set_led_value(9,data & 0x08);
+ output().set_led_value(9, data & 0x08);
/* bit 5 - ticket out in trivia games */
if (m_ticket != nullptr)
- m_ticket->write(machine().dummy_space(), 0, (data & 0x20)<< 2);
+ m_ticket->write(machine().dummy_space(), 0, (data & 0x20) << 2);
/* bit 6 enables NMI */
m_nmi_mask = data & 0x40;
@@ -225,16 +243,16 @@ WRITE8_MEMBER(gei_state::sound_w)
WRITE8_MEMBER(gei_state::sound2_w)
{
- /* bit 3,6 - coin lockout, lamp10+11 in selection test mode */
+ /* bit 3,6 - coin lockout, lamp 10 + 11 in selection test mode */
machine().bookkeeping().coin_lockout_w(0, ~data & 0x08);
machine().bookkeeping().coin_lockout_w(1, ~data & 0x40);
- output().set_led_value(9,data & 0x08);
- output().set_led_value(10,data & 0x40);
+ output().set_led_value(9, data & 0x08);
+ output().set_led_value(10, data & 0x40);
/* bit 4,5 - lamps 12, 13 in selection test mode;
12 lights up if dsw maximum bet = 30 an bet > 15 or if dsw maximum bet = 10 an bet = 10 */
- output().set_led_value(11,data & 0x10);
- output().set_led_value(12,data & 0x20);
+ output().set_led_value(11, data & 0x10);
+ output().set_led_value(12, data & 0x20);
/* bit 7 goes directly to the sound amplifier */
m_dac->write(BIT(data, 7));
@@ -243,13 +261,13 @@ WRITE8_MEMBER(gei_state::sound2_w)
WRITE8_MEMBER(gei_state::lamps2_w)
{
/* bit 4 - play/raise button lamp, lamp 9 in poker test mode */
- output().set_led_value(8,data & 0x10);
+ output().set_led_value(8, data & 0x10);
}
WRITE8_MEMBER(gei_state::nmi_w)
{
/* bit 4 - play/raise button lamp, lamp 9 in selection test mode */
- output().set_led_value(8,data & 0x10);
+ output().set_led_value(8, data & 0x10);
/* bit 6 enables NMI */
m_nmi_mask = data & 0x40;
@@ -272,68 +290,68 @@ READ8_MEMBER(gei_state::portC_r)
WRITE8_MEMBER(gei_state::banksel_main_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x8000);
+ m_rombank->set_entry(0);
}
WRITE8_MEMBER(gei_state::banksel_1_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000);
+ m_rombank->set_entry(1);
}
WRITE8_MEMBER(gei_state::banksel_2_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x18000);
+ m_rombank->set_entry(2);
}
WRITE8_MEMBER(gei_state::banksel_3_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x20000);
+ m_rombank->set_entry(3);
}
WRITE8_MEMBER(gei_state::banksel_4_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x28000);
+ m_rombank->set_entry(4);
}
WRITE8_MEMBER(gei_state::banksel_5_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x30000);
+ m_rombank->set_entry(5);
}
WRITE8_MEMBER(gei_state::banksel_1_1_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000);
+ m_rombank->set_entry(0);
}
WRITE8_MEMBER(gei_state::banksel_2_1_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x14000);
+ m_rombank->set_entry(2);
}
WRITE8_MEMBER(gei_state::banksel_3_1_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x18000);
+ m_rombank->set_entry(4);
}
WRITE8_MEMBER(gei_state::banksel_4_1_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x1c000);
+ m_rombank->set_entry(6);
}
WRITE8_MEMBER(gei_state::banksel_5_1_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x20000);
+ m_rombank->set_entry(8);
}
WRITE8_MEMBER(gei_state::banksel_1_2_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x12000);
+ m_rombank->set_entry(1);
}
WRITE8_MEMBER(gei_state::banksel_2_2_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x16000);
+ m_rombank->set_entry(3);
}
WRITE8_MEMBER(gei_state::banksel_3_2_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x1a000);
+ m_rombank->set_entry(5);
}
WRITE8_MEMBER(gei_state::banksel_4_2_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x1e000);
+ m_rombank->set_entry(7);
}
WRITE8_MEMBER(gei_state::banksel_5_2_w)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x22000);
+ m_rombank->set_entry(9);
}
WRITE8_MEMBER(gei_state::geimulti_bank_w)
@@ -361,36 +379,36 @@ WRITE8_MEMBER(gei_state::geimulti_bank_w)
}
if (bank != -1)
- membank("bank1")->set_base(memregion("bank")->base() + bank*0x8000);
+ m_rombank->set_entry(bank);
}
READ8_MEMBER(gei_state::banksel_1_r)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000);
+ m_rombank->set_entry(1);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_2_r)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x18000);
+ m_rombank->set_entry(2);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_3_r)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x20000);
+ m_rombank->set_entry(3);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_4_r)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x28000);
+ m_rombank->set_entry(4);
return 0x03;
}
READ8_MEMBER(gei_state::banksel_5_r)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x30000);
+ m_rombank->set_entry(5);
return 0x03;
}
@@ -404,46 +422,18 @@ READ8_MEMBER(gei_state::signature_r)
WRITE8_MEMBER(gei_state::signature_w)
{
if (data == 0) m_signature_pos = 0;
- else
- {
- static const uint8_t signature[8] = { 0xff, 0x01, 0xfd, 0x05, 0xf5, 0x15, 0xd5, 0x55 }; // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
-
- m_signature_answer = signature[m_signature_pos++];
-
- m_signature_pos &= 7; /* safety; shouldn't happen */
- }
-}
-
-WRITE8_MEMBER(gei_state::signature2_w)
-{
- if (data == 0) m_signature_pos = 0;
- else
- {
- static const uint8_t signature[8] = { 0xff, 0x01, 0xf7, 0x11, 0xd7, 0x51, 0x57, 0x51 }; // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
-
- m_signature_answer = signature[m_signature_pos++];
-
- m_signature_pos &= 7; /* safety; shouldn't happen */
- }
-}
-WRITE8_MEMBER(gei_state::signature3_w)
-{
- if (data == 0) m_signature_pos = 0;
else
{
- static const uint8_t signature[8] = { 0x4d, 0x3c, 0x88, 0x4e, 0x24, 0x8d, 0x1e, 0x00 }; // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
-
- m_signature_answer = signature[m_signature_pos++];
+ m_signature_answer = m_signature[m_signature_pos++];
m_signature_pos &= 7; /* safety; shouldn't happen */
}
}
-
static ADDRESS_MAP_START( getrivia_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
@@ -465,7 +455,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gselect_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x40ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_1_2_w)
@@ -480,7 +470,7 @@ ADDRESS_MAP_END
// TODO: where are mapped the lower 0x2000 bytes of the banks?
static ADDRESS_MAP_START( amuse_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
@@ -496,7 +486,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( gepoker_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
@@ -513,7 +503,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( amuse1_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1")
+ AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank")
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4400, 0x4400) AM_WRITE(banksel_1_1_w)
AM_RANGE(0x4401, 0x4401) AM_WRITE(banksel_2_1_w)
@@ -543,28 +533,7 @@ static ADDRESS_MAP_START( findout_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w)
AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
- AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( bigjoke_map, AS_PROGRAM, 8, gei_state )
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- /* banked ROMs are enabled by low 6 bits of the address */
- AM_RANGE(0x601f, 0x601f) AM_WRITE(banksel_main_w)
- AM_RANGE(0x602f, 0x602f) AM_WRITE(banksel_5_w)
- AM_RANGE(0x6037, 0x6037) AM_WRITE(banksel_4_w)
- AM_RANGE(0x603b, 0x603b) AM_WRITE(banksel_3_w)
- AM_RANGE(0x603d, 0x603d) AM_WRITE(banksel_2_w)
- AM_RANGE(0x603e, 0x603e) AM_WRITE(banksel_1_w)
- AM_RANGE(0x6200, 0x6200) AM_WRITE(signature3_w)
- AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
- AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
+ AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
@@ -582,7 +551,7 @@ static ADDRESS_MAP_START( quizvid_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x603d, 0x603d) AM_READ(banksel_2_r)
AM_RANGE(0x603e, 0x603e) AM_READ(banksel_1_r)
AM_RANGE(0x7800, 0x7fff) AM_ROM /*space for diagnostic ROM?*/
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
+ AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
AM_RANGE(0x0000, 0xffff) AM_READ(catchall)
@@ -593,7 +562,7 @@ static ADDRESS_MAP_START( suprpokr_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x4800, 0x4803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
- AM_RANGE(0x6200, 0x6200) AM_WRITE(signature2_w)
+ AM_RANGE(0x6200, 0x6200) AM_WRITE(signature_w)
AM_RANGE(0x6400, 0x6400) AM_READ(signature_r)
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
AM_RANGE(0xc000, 0xffff) AM_WRITE(gei_bitmap_w)
@@ -609,7 +578,7 @@ static ADDRESS_MAP_START( geimulti_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w)
AM_RANGE(0x6000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
+ AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
ADDRESS_MAP_END
@@ -623,7 +592,7 @@ static ADDRESS_MAP_START( sprtauth_map, AS_PROGRAM, 8, gei_state )
AM_RANGE(0x5a00, 0x5cff) AM_WRITE(geimulti_bank_w)
AM_RANGE(0x6000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x8002) AM_WRITE(gei_drawctrl_w)
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
+ AM_RANGE(0x8000, 0xffff) AM_ROMBANK("rombank")
AM_RANGE(0xc000, 0xffff) AM_RAM_WRITE(gei_bitmap_w)
ADDRESS_MAP_END
@@ -1018,7 +987,7 @@ static INPUT_PORTS_START(geimulti)
PORT_INCLUDE(gselect)
PORT_MODIFY("DSWA")
- PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
+ PORT_DIPNAME( 0x0f, 0x09, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x07, DEF_STR( 7C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 6C_1C ) )
@@ -1053,7 +1022,7 @@ static INPUT_PORTS_START(sprtauth)
PORT_INCLUDE(trivia_standard)
PORT_START("DSWA")
- PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
+ PORT_DIPNAME( 0x0f, 0x09, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x07, DEF_STR( 7C_1C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 6C_1C ) )
@@ -1087,7 +1056,7 @@ INPUT_PORTS_END
INTERRUPT_GEN_MEMBER(gei_state::vblank_irq)
{
- if(m_nmi_mask)
+ if (m_nmi_mask)
device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
@@ -1095,7 +1064,7 @@ INTERRUPT_GEN_MEMBER(gei_state::vblank_irq)
static MACHINE_CONFIG_START( getrivia )
MCFG_CPU_ADD("maincpu",Z80,4000000) /* 4 MHz */
MCFG_CPU_PROGRAM_MAP(getrivia_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", gei_state, vblank_irq)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", gei_state, vblank_irq)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1224,11 +1193,6 @@ static MACHINE_CONFIG_DERIVED( sprtauth, getrivia )
MCFG_CPU_PROGRAM_MAP(sprtauth_map)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( bigjoke, getrivia )
-
- MCFG_CPU_MODIFY("maincpu")
- MCFG_CPU_PROGRAM_MAP(bigjoke_map)
-MACHINE_CONFIG_END
/***************************************************
Rom board is UVM-1A
@@ -1273,7 +1237,7 @@ Rom board is UVM-1B
Contains:
4 2732 eproms (Program Code)
- Battery (3.5V litium battery) backed up NEC 8444XF301
+ Battery (3.5V lithium battery) backed up NEC 8444XF301
DM7408N
****************************************************/
@@ -1292,7 +1256,7 @@ Rom board is UVM 10 B
Contains:
2 2764 eproms (Program Code)
5 27128 eproms (Question roms)
- Battery (3V litium battery) backed up HM6117P-4
+ Battery (3V lithium battery) backed up HM6117P-4
SN74LS374
MMI PAL10L8
@@ -1301,7 +1265,7 @@ Sets will be listed by "series" - the program code version
is not as important as maintaining the correct questions
sets as per known series
Missing sets will be filled as dumped, as question roms
- are interchangeable, operators did thier own swaps
+ are interchangeable, operators did their own swaps
Note: Question roms that contain "#1" (or 2 ect)
are corrected roms (spelling and / or answers)
@@ -1430,7 +1394,7 @@ Rom board is UVM-4B
Contains 5 2764 eproms, MMI PAL16R4CN
-Battery (3V litium battery) backed up HM6117P-4
+Battery (3V lithium battery) backed up HM6117P-4
Roms labeled as:
@@ -1481,7 +1445,7 @@ PAL16R4
Roms in this order on the UMV 10 C board:
-Label Normaly in the slot
+Label Normally in the slot
--------------------------------
High
Control
@@ -1529,7 +1493,7 @@ ROM_START( gepoker1 ) /* v50.02 with roms for ICB dated 9-30-86 */
ROM_LOAD( "blackjack_icb_9-30-86", 0x12000, 0x2000, CRC(82804184) SHA1(2e2e6a80c99c8eb226dc54c1d32d0bf24de300a4) )
ROM_LOAD( "casinoslots_icb_9-30-86", 0x14000, 0x2000, CRC(713c3963) SHA1(a9297c04fc44522ca6891516a2c744712132896a) )
ROM_LOAD( "beatthespread_icb_9-30-86", 0x16000, 0x2000, CRC(93654d2a) SHA1(3aa5a54b91867c03182e93a7f1607545503a33f7) )
- ROM_LOAD( "instantbingo_t24_10-07-86", 0x18000, 0x2000, CRC(de87ed0a) SHA1(4a26d93368c1a39dd38aabe450c34203101f0ef7) ) /* Found with this set, is it compatible or an operater swap? */
+ ROM_LOAD( "instantbingo_t24_10-07-86", 0x18000, 0x2000, CRC(de87ed0a) SHA1(4a26d93368c1a39dd38aabe450c34203101f0ef7) ) /* Found with this set, is it compatible or an operator swap? */
ROM_END
ROM_START( gepoker2 ) /* v50.02 with control dated 9-30-84 */
@@ -1582,7 +1546,7 @@ Rom board is "GEI, inc UVM-8B" with a date code of "8339"
Contains 1 AM2732A eprom, 5 HN4827128G eproms, 1 MMI PAL16R4CN, 1 7474N
-Battery (3V litium battery) backed up HM6117P-4
+Battery (3V lithium battery) backed up HM6117P-4
Roms labeled as:
@@ -1612,6 +1576,12 @@ ROM_START( suprpokr ) /* Super Poker Version 10.19S BOBC. Rom board UMV-7C */
ROM_LOAD( "supr_pokr_10.19s_#1", 0x00000, 0x4000, CRC(50662b4d) SHA1(967161a755db43d2cfd5ce92e14c5284f1f1f8ad) )
ROM_LOAD( "supr_pokr_10.19s_#2", 0x08000, 0x4000, CRC(22b45aeb) SHA1(006c3072cc44c6fde9b4d15163dc70707bbd5a9c) )
ROM_RELOAD( 0x0c000, 0x4000 )
+
+ ROM_REGION( 0x0800, "nvram", 0 )
+ ROM_LOAD( "suprpokr.nvram", 0x0000, 0x0800, CRC(0e716e23) SHA1(15e35bfbab9a6778834df1c85c25643010054cdb) )
+
+ ROM_REGION( 0x0008, "signature", 0 )
+ ROM_LOAD( "suprpokr.sig", 0x0000, 0x0008, CRC(8f622afe) SHA1(8c1c8cee444c88211760a0f5c3adcfd887da5bb7) )
ROM_END
ROM_START( suprpokra ) /* Super Poker Version 10.15S BOBC. Rom board UMV-7C */
@@ -1619,6 +1589,12 @@ ROM_START( suprpokra ) /* Super Poker Version 10.15S BOBC. Rom board UMV-7C */
ROM_LOAD( "supr_pokr_10.15s_#1", 0x00000, 0x4000, CRC(5cc7c1e0) SHA1(1cdca32c4df7227dab77574abe344b291741139e) )
ROM_LOAD( "supr_pokr_10.15s_#2", 0x08000, 0x4000, CRC(e47d6e2a) SHA1(9cabc42275dad8be6cd5b167e381ddb5bf08276d) )
ROM_RELOAD( 0x0c000, 0x4000 )
+
+ ROM_REGION( 0x0800, "nvram", 0 )
+ ROM_LOAD( "suprpokr.nvram", 0x0000, 0x0800, CRC(0e716e23) SHA1(15e35bfbab9a6778834df1c85c25643010054cdb) )
+
+ ROM_REGION( 0x0008, "signature", 0 )
+ ROM_LOAD( "suprpokr.sig", 0x0000, 0x0008, CRC(8f622afe) SHA1(8c1c8cee444c88211760a0f5c3adcfd887da5bb7) )
ROM_END
ROM_START( suprpokrb ) /* Super Poker Version 10.10 BOBC. Rom board UMV-7C */
@@ -1626,6 +1602,12 @@ ROM_START( suprpokrb ) /* Super Poker Version 10.10 BOBC. Rom board UMV-7C */
ROM_LOAD( "supr_pokr_10.10_#1", 0x00000, 0x4000, CRC(8324471f) SHA1(c38b7a735ef06feea3e8d4ba6dd963e24d38c792) )
ROM_LOAD( "supr_pokr_10.10_#2", 0x08000, 0x4000, CRC(a82ca9c5) SHA1(3b0f4ad7d53370dc1f00dec696e993359147a496) )
ROM_RELOAD( 0x0c000, 0x4000 )
+
+ ROM_REGION( 0x0800, "nvram", 0 )
+ ROM_LOAD( "suprpokr.nvram", 0x0000, 0x0800, CRC(0e716e23) SHA1(15e35bfbab9a6778834df1c85c25643010054cdb) )
+
+ ROM_REGION( 0x0008, "signature", 0 )
+ ROM_LOAD( "suprpokr.sig", 0x0000, 0x0008, CRC(8f622afe) SHA1(8c1c8cee444c88211760a0f5c3adcfd887da5bb7) )
ROM_END
@@ -1638,6 +1620,12 @@ ROM_START( reelfun ) /* v7.03 */
ROM_LOAD( "reelfun-3-phrase", 0x20000, 0x8000, CRC(199e36b0) SHA1(d9dfe39c9a4fca1169150f8941f8ebc499dfbaf5) )
ROM_LOAD( "reelfun-4-person", 0x28000, 0x8000, CRC(49b0710b) SHA1(a38b3251bcb8683d43bdb903036970140a9735e6) )
ROM_LOAD( "reelfun-5-song_title", 0x30000, 0x8000, CRC(cce01c45) SHA1(c484f5828928edf39335cedf21acab0b9e2a6881) )
+
+ ROM_REGION( 0x0800, "nvram", 0 )
+ ROM_LOAD( "reelfun.nvram", 0x0000, 0x0800, CRC(fbb791ce) SHA1(0db77cbc42b5362b3d2ecde46a4289619e8f59a6) ) /* Defaults */
+
+ ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
+ ROM_LOAD( "reelfun.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( reelfun1 ) /* v7.01 */
@@ -1649,6 +1637,12 @@ ROM_START( reelfun1 ) /* v7.01 */
ROM_LOAD( "reelfun-3-phrase", 0x20000, 0x8000, CRC(199e36b0) SHA1(d9dfe39c9a4fca1169150f8941f8ebc499dfbaf5) )
ROM_LOAD( "reelfun-4-person", 0x28000, 0x8000, CRC(49b0710b) SHA1(a38b3251bcb8683d43bdb903036970140a9735e6) )
ROM_LOAD( "reelfun-5-song_title", 0x30000, 0x8000, CRC(cce01c45) SHA1(c484f5828928edf39335cedf21acab0b9e2a6881) )
+
+ ROM_REGION( 0x0800, "nvram", 0 )
+ ROM_LOAD( "reelfun.nvram", 0x0000, 0x0800, CRC(fbb791ce) SHA1(0db77cbc42b5362b3d2ecde46a4289619e8f59a6) ) /* Defaults */
+
+ ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
+ ROM_LOAD( "reelfun.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( findout )
@@ -1663,6 +1657,12 @@ ROM_START( findout )
ROM_REGION( 0x0200, "gfx2", 0 )
ROM_LOAD( "82s147.bin", 0x0000, 0x0200, CRC(f3b663bb) SHA1(5a683951c8d3a2baac4b49e379d6e10e35465c8a) ) /* unknown */
+
+ ROM_REGION( 0x0800, "nvram", 0 )
+ ROM_LOAD( "findout.nvram", 0x0000, 0x0800, CRC(b6950ffc) SHA1(ecc08904b208fb87c7a47d2f6081652405bf73b4) ) /* Defaults */
+
+ ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
+ ROM_LOAD( "findout.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( gt507uk )
@@ -1672,7 +1672,7 @@ ROM_START( gt507uk )
ROM_LOAD( "aerospace", 0x10000, 0x8000, CRC(cb555d46) SHA1(559ae05160d7893ff96311a2177eba039a4cf186) ) /* Also found in Series #11 set */
ROM_LOAD( "english_sport_4", 0x18000, 0x8000, CRC(6ae8a63d) SHA1(c6018141d8bbe0ed7619980bf7da89dd91d7fcc2) )
ROM_LOAD( "general_facts", 0x20000, 0x8000, CRC(f921f108) SHA1(fd72282df5cee0e6ab55268b40785b3dc8e3d65b) ) /* Also found in Series #11 set */
- ROM_LOAD( "horrors", 0x28000, 0x8000, CRC(5f7b262a) SHA1(047480d6bf5c6d0603d538b84c996bd226f07f77) ) /* Possiblely Series #13 rom */
+ ROM_LOAD( "horrors", 0x28000, 0x8000, CRC(5f7b262a) SHA1(047480d6bf5c6d0603d538b84c996bd226f07f77) ) /* Possibly Series #13 rom */
ROM_LOAD( "pop_music", 0x30000, 0x8000, CRC(884fec7c) SHA1(b389216c17f516df4e15eee46246719dd4acb587) )
ROM_END
@@ -1768,6 +1768,9 @@ ROM_START( gtsers15 ) /* v5.06, From a TRIV3D romboard */
ROM_LOAD( "nfl_football", 0x28000, 0x8000, CRC(42eb2849) SHA1(c24e681a508ef8350f7e5d50aea2c31cf70ce5c9) )
ROM_LOAD( "adult_sex_6", 0x30000, 0x8000, CRC(d66f35f7) SHA1(81b56756230b27b0903d0c5df30439726526afe2) )
/* Missing unknown question rom (and alternate question?) */
+
+ ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
+ ROM_LOAD( "gtsers15.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
ROM_START( gt103a1 ) /* Need to verify which series these belong to */
@@ -1875,6 +1878,13 @@ ROM_START( bigjoke ) /* TRIV3D PCB, stickered THE JOKE 11/87 */
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "bigjoke.nvram", 0x0000, 0x0800, CRC(89e0e325) SHA1(c2398c64f938e8ed036e72a5ba0b703513f31a6d) )
+
+ ROM_REGION( 0x0400, "pld", 0 ) // probably one of the two GALs provides the "signature"
+ ROM_LOAD( "gal16v8", 0x0000, 0x0117, NO_DUMP ) /* read protected */
+ ROM_LOAD( "gal18v8", 0x0200, 0x0117, NO_DUMP ) /* read protected */
+
+ ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
+ ROM_LOAD( "bigjoke.sig", 0x0000, 0x0008, CRC(bfa5388b) SHA1(876bf954116fcc14d0bed017a9bec42038c5f89a) )
ROM_END
ROM_START( sexappl ) /* TRIV3D PCB, stickered SEX APPL 6.02 5/92 */
@@ -1889,6 +1899,13 @@ ROM_START( sexappl ) /* TRIV3D PCB, stickered SEX APPL 6.02 5/92 */
ROM_REGION( 0x0800, "nvram", 0 )
ROM_LOAD( "sexappl.nvram", 0x0000, 0x0800, CRC(be65737c) SHA1(5b8a603a9ddecdad4aaef0b9e8ef373885b236c0) ) /* Defaults but with card dispenser OFF! */
+
+ ROM_REGION( 0x0400, "pld", 0 ) // probably one of the two GALs provides the "signature"
+ ROM_LOAD( "gal16v8", 0x0000, 0x0117, NO_DUMP ) /* read protected */
+ ROM_LOAD( "gal18v8", 0x0200, 0x0117, NO_DUMP ) /* read protected */
+
+ ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
+ ROM_LOAD( "sexappl.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
/*
@@ -1964,80 +1981,98 @@ ROM_START( sprtauth )
ROM_LOAD( "sprt-auth-supr-bowl.bank9", 0x40000, 0x8000, CRC(3a548fe5) SHA1(6ad35516651a8a878b512cb3eff697952e194dd0) )
ROM_LOAD( "sprt-auth-rev1-kb.grph", 0x68000, 0x8000, CRC(c4f734ac) SHA1(028217fe6d7be75f75e9f67b665d465c729d2995) )
+ ROM_REGION( 0x0800, "nvram", 0 )
+ ROM_LOAD( "sprtauth.nvram", 0x0000, 0x0800, CRC(969869f9) SHA1(a5a7b679e99255650dc8ea12d2b36e97e6296aae) ) /* Defaults but with card dispenser OFF! */
+
+ ROM_REGION( 0x0008, "signature", 0 ) // bytes 0x03 through 0x0a of each question ROM - to prevent ROM swaps
+ ROM_LOAD( "sprtauth.sig", 0x0000, 0x0008, CRC(c8e944a3) SHA1(d34de9e3163ba61fa4e4f2264caff40434fcc9b0) )
ROM_END
-DRIVER_INIT_MEMBER(gei_state,setbank)
+DRIVER_INIT_MEMBER(gei_state, setbank)
+{
+ m_rombank->set_base(memregion("maincpu")->base() + 0x2000);
+}
+
+DRIVER_INIT_MEMBER(gei_state, bank2k)
+{
+ m_rombank->configure_entries(0, 10, memregion("maincpu")->base() + 0x10000, 0x2000);
+ m_rombank->set_entry(0);
+}
+
+DRIVER_INIT_MEMBER(gei_state, bank8k)
{
- membank("bank1")->set_base(memregion("maincpu")->base() + 0x2000);
+ m_rombank->configure_entries(0, 6, memregion("maincpu")->base() + 0x8000, 0x8000);
+ m_rombank->set_entry(0);
}
-DRIVER_INIT_MEMBER(gei_state,geimulti)
+DRIVER_INIT_MEMBER(gei_state, geimulti)
{
- membank("bank1")->set_base(memregion("bank")->base() + 0x0000);
+ m_rombank->configure_entries(0, 14, memregion("bank")->base(), 0x8000);
+ m_rombank->set_entry(0);
}
-GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1983, jokpokera, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1983, jokpokerb, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1983, jokpokerc, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1982, gs4002, 0, gselect, gselect, gei_state, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1982, gs4002a, gs4002, gselect, gselect, gei_state, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1982, amuse, 0, amuse, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1982, amuse1, amuse, amuse1, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1983, amuse1a, amuse, amuse1, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1984, gepoker, 0, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gepoker1, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gepoker2, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gepoker3, gepoker, gepoker, gepoker, gei_state, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1984, gtsers1, 0, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers8, 0, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers8a, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers9, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers10, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers11, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers11a, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gtsers12, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1986, gtsers14, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1986, gtsers15, gtsers8, findout, gt103, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gt103a1, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gt103aa, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gt103ab, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1984, gt103asx, gtsers8, findout, getrivia, gei_state, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1985, sextriv1, 0, getrivia, sextriv1, gei_state, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, gei_state, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1986, gt507uk, 0, findout, gt507uk, gei_state, 0, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1986, quiz, 0, findout, quiz, gei_state, 0, ROT0, "Elettronolo", "Quiz (Revision 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1986, quizvid, 0, quizvid, quiz, gei_state, 0, ROT0, "bootleg", "Video Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1986, reelfun, 0, findout, reelfun, gei_state, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1986, reelfun1, reelfun, findout, reelfun, gei_state, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1987, findout, 0, findout, findout, gei_state, 0, ROT0, "Elettronolo", "Find Out (Version 4.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1986, suprpokr, 0, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1986, suprpokra, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1986, suprpokrb, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1987, bigjoke, 0, bigjoke, bigjoke, gei_state, 0, ROT0, "Grayhound Electronics", "The Big Joke (Version 0.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1991, quiz211, 0, findout, quiz, gei_state, 0, ROT0, "Elettronolo", "Quiz (Revision 2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1992, sexappl, 0, findout, sexappl, gei_state, 0, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-
-GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jokpokera, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jokpokerb, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jokpokerc, jokpoker, jokpokera, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1982, gs4002, 0, gselect, gselect, gei_state, bank2k, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, gs4002a, gs4002, gselect, gselect, gei_state, bank2k, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1982, amuse, 0, amuse, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, amuse1, amuse, amuse1, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, amuse1a, amuse, amuse1, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1984, gepoker, 0, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gepoker1, gepoker, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gepoker2, gepoker, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gepoker3, gepoker, gepoker, gepoker, gei_state, bank2k, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1984, gtsers1, 0, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, gei_state, bank2k, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers8, 0, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers8a, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers9, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers10, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers11, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers11a, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gtsers12, gtsers8, findout, gt103, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, gtsers14, gtsers8, findout, gt103, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, gtsers15, gtsers8, findout, gt103, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gt103a1, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gt103aa, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gt103ab, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gt103asx, gtsers8, findout, getrivia, gei_state, bank8k, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1985, sextriv1, 0, getrivia, sextriv1, gei_state, bank2k, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, gei_state, bank2k, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, gt507uk, 0, findout, gt507uk, gei_state, bank8k, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, quiz, 0, findout, quiz, gei_state, bank8k, ROT0, "Elettronolo", "Quiz (Revision 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, quizvid, 0, quizvid, quiz, gei_state, bank8k, ROT0, "bootleg", "Video Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, reelfun, 0, findout, reelfun, gei_state, bank8k, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, reelfun1, reelfun, findout, reelfun, gei_state, bank8k, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, findout, 0, findout, findout, gei_state, bank8k, ROT0, "Elettronolo", "Find Out (Version 4.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, suprpokr, 0, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, suprpokra, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, suprpokrb, suprpokr, suprpokr, suprpokr, gei_state, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1987, bigjoke, 0, findout, bigjoke, gei_state, bank8k, ROT0, "Grayhound Electronics", "The Big Joke (Version 0.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1991, quiz211, 0, findout, quiz, gei_state, bank8k, ROT0, "Elettronolo", "Quiz (Revision 2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, sexappl, 0, findout, sexappl, gei_state, bank8k, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )