diff --git a/hash/guab.xml b/hash/guab.xml
new file mode 100644
index 00000000000..038f337375d
--- /dev/null
+++ b/hash/guab.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+ Give us a Break (3rd edition)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Give us a Break (3rd edition alt?)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Give us a Break (4th edition)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Give us a Break (6th edition)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Give us a Break (6th edition alt?)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Give us a Break (7th edition)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Give us a Break (21st edition)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Give us a Break (43rd edition)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Criss Cross (Sweden)
+ 1986
+ JPM
+
+
+
+
+
+
+
+
+ Ten Up (compendium 17)
+ 1988
+ JPM
+
+
+
+
+
+
+
+
+ Ten Up (compendium 3)
+ 1988
+ JPM
+
+
+
+
+
+
+
+
diff --git a/scripts/src/lib.lua b/scripts/src/lib.lua
index f5a54f0dd68..b445f71a994 100644
--- a/scripts/src/lib.lua
+++ b/scripts/src/lib.lua
@@ -258,6 +258,8 @@ project "formats"
MAME_DIR .. "src/lib/formats/g64_dsk.h",
MAME_DIR .. "src/lib/formats/gtp_cas.c",
MAME_DIR .. "src/lib/formats/gtp_cas.h",
+ MAME_DIR .. "src/lib/formats/guab_dsk.c",
+ MAME_DIR .. "src/lib/formats/guab_dsk.h",
MAME_DIR .. "src/lib/formats/hect_dsk.c",
MAME_DIR .. "src/lib/formats/hect_dsk.h",
MAME_DIR .. "src/lib/formats/hect_tap.c",
diff --git a/src/lib/formats/guab_dsk.c b/src/lib/formats/guab_dsk.c
new file mode 100644
index 00000000000..4c92362251a
--- /dev/null
+++ b/src/lib/formats/guab_dsk.c
@@ -0,0 +1,42 @@
+// license:GPL-2.0+
+// copyright-holders:Dirk Best
+/***************************************************************************
+
+ JPM Give us a Break
+
+ Disk image format
+
+***************************************************************************/
+
+#include "guab_dsk.h"
+
+guab_format::guab_format() : wd177x_format(formats)
+{
+}
+
+const char *guab_format::name() const
+{
+ return "guab";
+}
+
+const char *guab_format::description() const
+{
+ return "JPM Give us a Break disk image";
+}
+
+const char *guab_format::extensions() const
+{
+ return "dsk";
+}
+
+// gap sizes unverified
+const guab_format::format guab_format::formats[] =
+{
+ {
+ floppy_image::FF_35, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 18, 80, 2, 256, {}, 0, {}, 80, 22, 24
+ },
+ {}
+};
+
+const floppy_format_type FLOPPY_GUAB_FORMAT = &floppy_image_format_creator;
diff --git a/src/lib/formats/guab_dsk.h b/src/lib/formats/guab_dsk.h
new file mode 100644
index 00000000000..36280ddd88f
--- /dev/null
+++ b/src/lib/formats/guab_dsk.h
@@ -0,0 +1,33 @@
+// license:GPL-2.0+
+// copyright-holders:Dirk Best
+/***************************************************************************
+
+ JPM Give us a Break
+
+ Disk image format
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __GUAB_DSK_H__
+#define __GUAB_DSK_H__
+
+#include "wd177x_dsk.h"
+
+class guab_format : public wd177x_format
+{
+public:
+ guab_format();
+
+ virtual const char *name() const;
+ virtual const char *description() const;
+ virtual const char *extensions() const;
+
+private:
+ static const format formats[];
+};
+
+extern const floppy_format_type FLOPPY_GUAB_FORMAT;
+
+#endif // __GUAB_DSK_H__
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index 26010bebe7b..500c4447684 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -13465,16 +13465,8 @@ j2sset
// JPM Give us a Break hardware
guab // (c) 1986
-guab3a // (c) 1986
-guab4 // (c) 1986
-guab6 // (c) 1986
-guab6a // (c) 1986
-guab7 // (c) 1986
-guab21 // (c) 1986
-guab43 // (c) 1986
crisscrs // (c) 1986
tenup // (c) 1988
-tenup3 // (c) 1988
// JPM System 5
diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c
index 789fe6cf960..048937140b4 100644
--- a/src/mame/drivers/guab.c
+++ b/src/mame/drivers/guab.c
@@ -22,6 +22,7 @@
count gets updated in the code. Each game requires a unique
security PAL - maybe this is related? I'm poking the coin values
directly into RAM for now.
+ * Verify WD FDC type
***************************************************************************/
@@ -30,6 +31,8 @@
#include "machine/6840ptm.h"
#include "video/tms34061.h"
#include "sound/sn76496.h"
+#include "machine/wd_fdc.h"
+#include "formats/guab_dsk.h"
/*************************************
@@ -38,9 +41,6 @@
*
*************************************/
-#define LOG_FDC_COMMANDS 0
-#define FDC_LOG(x) do { if (LOG_FDC_COMMANDS) osd_printf_debug x; } while(0)
-
enum int_levels
{
@@ -61,19 +61,6 @@ struct ef9369
};
-struct wd1770
-{
- UINT32 status;
- UINT8 cmd;
- UINT8 data;
-
- UINT32 side;
- INT32 track;
- INT32 sector;
- UINT32 sptr;
-};
-
-
class guab_state : public driver_device
{
public:
@@ -82,32 +69,37 @@ public:
m_maincpu(*this, "maincpu"),
m_tms34061(*this, "tms34061"),
m_sn(*this, "snsnd"),
+ m_fdc(*this, "fdc"),
+ m_floppy(*this, "fdc:0"),
m_palette(*this, "palette") { }
- /* devices */
- required_device m_maincpu;
- required_device m_tms34061;
- required_device m_sn;
- required_device m_palette;
-
- struct ef9369 m_pal;
- emu_timer *m_fdc_timer;
- struct wd1770 m_fdc;
DECLARE_WRITE_LINE_MEMBER(generate_tms34061_interrupt);
DECLARE_WRITE16_MEMBER(guab_tms34061_w);
DECLARE_READ16_MEMBER(guab_tms34061_r);
DECLARE_WRITE16_MEMBER(ef9369_w);
DECLARE_READ16_MEMBER(ef9369_r);
- DECLARE_WRITE16_MEMBER(wd1770_w);
- DECLARE_READ16_MEMBER(wd1770_r);
+ DECLARE_READ16_MEMBER(wd1773_r);
+ DECLARE_WRITE16_MEMBER(wd1773_w);
DECLARE_READ16_MEMBER(io_r);
DECLARE_WRITE16_MEMBER(io_w);
DECLARE_INPUT_CHANGED_MEMBER(coin_inserted);
DECLARE_WRITE_LINE_MEMBER(ptm_irq);
- virtual void machine_start();
- virtual void machine_reset();
UINT32 screen_update_guab(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(fdc_data_callback);
+
+ DECLARE_FLOPPY_FORMATS(floppy_formats);
+
+protected:
+ virtual void machine_start();
+
+private:
+ required_device m_maincpu;
+ required_device m_tms34061;
+ required_device m_sn;
+ required_device m_fdc;
+ required_device m_floppy;
+ required_device m_palette;
+
+ struct ef9369 m_pal;
};
@@ -275,285 +267,6 @@ UINT32 guab_state::screen_update_guab(screen_device &screen, bitmap_ind16 &bitma
}
-/*************************************
- *
- * WD1770 floppy disk controller
- * (just enough to get by...)
- *
- *************************************/
-
-#define USEC_DELAY 40
-#define DISK_SIDES 2
-#define DISK_TRACKS 80
-#define DISK_SECTORS 18
-
-#define DISK_SECTOR_SIZE 256
-#define DISK_TRACK_SIZE (DISK_SECTOR_SIZE * DISK_SECTORS)
-#define DISK_SIDE_SIZE (DISK_TRACK_SIZE * DISK_TRACKS)
-
-enum wd1770_status
-{
- BUSY = 1 << 0,
- DATA_REQUEST = 1 << 1,
- INDEX = 1 << 1,
- LOST_DATA = 1 << 2,
- TRACK_00 = 1 << 2,
- CRC_ERROR = 1 << 3,
- RECORD_NOT_FOUND = 1 << 4,
- RECORD_TYPE = 1 << 5,
- SPIN_UP = 1 << 5,
- WRITE_PROTECT = 1 << 6,
- MOTOR_ON = 1 << 7
-};
-
-
-TIMER_CALLBACK_MEMBER(guab_state::fdc_data_callback)
-{
- struct wd1770 &fdc = m_fdc;
- UINT8* disk = (UINT8*)memregion("user1")->base();
- int more_data = 0;
-
- /*
- Disk dumps are organised as:
-
- Side 0, Track 0: Sectors 0 - 17
- Side 1, Track 0: Sectors 0 - 17
- Side 0, Track 1: Sectors 0 - 17
- Side 1, Track 1: Sectors 0 - 17
- etc.
- */
-
- int idx = 2 * fdc.track * (DISK_TRACK_SIZE) + (fdc.side ? DISK_TRACK_SIZE : 0)+
- fdc.sector * (DISK_SECTOR_SIZE) +
- fdc.sptr;
-
- /* Write or read? */
- if (fdc.cmd & 0x20)
- disk[idx] = fdc.data;
- else
- fdc.data = disk[idx];
-
- fdc.sptr++;
-
- if (fdc.sptr < DISK_SECTOR_SIZE)
- {
- more_data = 1;
- }
- else
- {
- fdc.sptr = 0;
-
- /* Multi-sector read */
- if (fdc.cmd & 0x10)
- {
- ++fdc.sector;
-
- /* Keep going */
- if (fdc.sector < DISK_SECTORS)
- more_data = 1;
- }
- }
-
- if (more_data)
- {
- m_fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
- }
- else
- {
- /* Hack!*/
- fdc.cmd = 0;
- fdc.status &= ~BUSY;
- }
-
- fdc.status |= DATA_REQUEST;
- m_maincpu->set_input_line(INT_FLOPPYCTRL, ASSERT_LINE);
-}
-
-
-WRITE16_MEMBER(guab_state::wd1770_w)
-{
- struct wd1770 &fdc = m_fdc;
- data &= 0xff;
-
- switch (offset)
- {
- case 0:
- {
- UINT8 cmd = (data >> 4) & 0xf;
-
- FDC_LOG(("Command: %x:: ", data));
-
- switch (cmd)
- {
- /**** Type I ****/
- case 0:
- {
- FDC_LOG(("Restore\n"));
- fdc.track = 0;
- break;
- }
-
- case 1:
- {
- FDC_LOG(("Seek to track %d\n", fdc.data));
- fdc.track = fdc.data;
- break;
- }
-
- /* Step */
- case 2:
- case 3:
- {
- FDC_LOG(("Step (not implemented)\n"));
- break;
- }
-
- case 4: case 5:
- {
- if (++fdc.track >= DISK_TRACKS)
- fdc.track = DISK_TRACKS - 1;
-
- FDC_LOG(("Step-in to track %d\n", fdc.track));
- break;
- }
-
- case 6: case 7:
- {
- if (--fdc.track > 0)
- fdc.track = 0;
-
- FDC_LOG(("Step-out to track %d\n", fdc.track));
- break;
- }
-
-
- /**** Type II ****/
- case 8:
- case 9:
- {
- fdc.cmd = data;
- fdc.status |= BUSY;
-
- if (data & 0x10)
- FDC_LOG(("Multi "));
-
- FDC_LOG(("Sector read: H%d T%d S%d\n", fdc.side,
- fdc.track,
- fdc.sector));
-
- /* Set the data read timer */
- m_fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
-
- break;
- }
-
- case 10:
- case 11:
- {
- fdc.cmd = data;
- fdc.status |= BUSY;
-
- if (data & 0x10)
- FDC_LOG(("Multi "));
-
- FDC_LOG(("Sector write: H%d T%d S%d\n", fdc.side,
- fdc.track,
- fdc.sector));
-
- /* Trigger a DRQ interrupt on the CPU */
- m_maincpu->set_input_line(INT_FLOPPYCTRL, ASSERT_LINE);
- fdc.status |= DATA_REQUEST;
- break;
- }
-
- /**** Type III ****/
- case 12: /* Read address */
- case 14: /* Read track */
- case 15: /* Write track */
- {
- FDC_LOG(("Unsupported TYPE III operation\n"));
- break;
- }
-
- /**** Type IV ****/
- case 13:
- {
- /* Stop any operation in progress */
- m_fdc_timer->reset();
- fdc.status &= ~BUSY;
- FDC_LOG(("Force Interrupt\n"));
- break;
- }
- }
-
- break;
- }
- case 1:
- {
- FDC_LOG(("Set track: %d\n", data));
- fdc.track = data;
- break;
- }
- case 2:
- {
- FDC_LOG(("Set sector: %d\n", data));
- fdc.sector = data;
- fdc.sptr = 0;
- break;
- }
- case 3:
- {
- fdc.data = data;
-
- /* Clear the DRQ */
- m_maincpu->set_input_line(INT_FLOPPYCTRL, CLEAR_LINE);
-
- /* Queue an event to write the data if write command was specified */
- if (fdc.cmd & 0x20)
- m_fdc_timer->adjust(attotime::from_usec(USEC_DELAY));
-
- break;
- }
- }
-}
-
-READ16_MEMBER(guab_state::wd1770_r)
-{
- struct wd1770 &fdc = m_fdc;
- UINT16 retval = 0;
-
- switch (offset)
- {
- case 0:
- {
- retval = fdc.status;
- break;
- }
- case 1:
- {
- retval = fdc.track;
- break;
- }
- case 2:
- {
- retval = fdc.sector;
- break;
- }
- case 3:
- {
- retval = fdc.data;
-
- /* Clear the DRQ */
- m_maincpu->set_input_line(INT_FLOPPYCTRL, CLEAR_LINE);
- fdc.status &= ~DATA_REQUEST;
- break;
- }
- }
-
- return retval;
-}
-
-
/****************************************
*
* Hardware inputs (coins, buttons etc)
@@ -604,9 +317,18 @@ INPUT_CHANGED_MEMBER(guab_state::coin_inserted)
*
****************************************/
+READ16_MEMBER( guab_state::wd1773_r )
+{
+ return m_fdc->read(space, offset);
+}
+
+WRITE16_MEMBER( guab_state::wd1773_w )
+{
+ m_fdc->write(space, offset, data & 0xff);
+}
+
WRITE16_MEMBER(guab_state::io_w)
{
- struct wd1770 &fdc = m_fdc;
switch (offset)
{
case 0x10:
@@ -647,7 +369,10 @@ WRITE16_MEMBER(guab_state::io_w)
case 0x31:
{
/* Only JPM knows about the other bits... */
- fdc.side = (data >> 3) & 1;
+ m_floppy->get_device()->ss_w(BIT(data, 3));
+
+ // one of those bits will probably control the motor, we just let it run all the time for now
+ m_floppy->get_device()->mon_w(0);
break;
}
case 0x32:
@@ -681,7 +406,7 @@ static ADDRESS_MAP_START( guab_map, AS_PROGRAM, 16, guab_state )
AM_RANGE(0x0c0080, 0x0c0083) AM_NOP /* ACIA 1 */
AM_RANGE(0x0c00a0, 0x0c00a3) AM_NOP /* ACIA 2 */
AM_RANGE(0x0c00c0, 0x0c00cf) AM_DEVREADWRITE8("6840ptm", ptm6840_device, read, write, 0xff)
- AM_RANGE(0x0c00e0, 0x0c00e7) AM_READWRITE(wd1770_r, wd1770_w)
+ AM_RANGE(0x0c00e0, 0x0c00e7) AM_READWRITE(wd1773_r, wd1773_w)
AM_RANGE(0x080000, 0x080fff) AM_RAM
AM_RANGE(0x100000, 0x100003) AM_READWRITE(ef9369_r, ef9369_w)
AM_RANGE(0x800000, 0xb0ffff) AM_READWRITE(guab_tms34061_r, guab_tms34061_w)
@@ -770,20 +495,22 @@ INPUT_PORTS_END
void guab_state::machine_start()
{
- m_fdc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(guab_state::fdc_data_callback),this));
+ m_fdc->set_floppy(m_floppy->get_device());
}
-void guab_state::machine_reset()
-{
- memset(&m_fdc, 0, sizeof(m_fdc));
-}
+FLOPPY_FORMATS_MEMBER( guab_state::floppy_formats )
+ FLOPPY_GUAB_FORMAT
+FLOPPY_FORMATS_END
+
+static SLOT_INTERFACE_START( guab_floppies )
+ SLOT_INTERFACE("dd", FLOPPY_35_DD)
+SLOT_INTERFACE_END
static MACHINE_CONFIG_START( guab, guab_state )
/* TODO: Verify clock */
MCFG_CPU_ADD("maincpu", M68000, 8000000)
MCFG_CPU_PROGRAM_MAP(guab_map)
-
/* TODO: Use real video timings */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -811,6 +538,15 @@ static MACHINE_CONFIG_START( guab, guab_state )
MCFG_PTM6840_INTERNAL_CLOCK(1000000)
MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0)
MCFG_PTM6840_IRQ_CB(WRITELINE(guab_state, ptm_irq))
+
+ // floppy
+ MCFG_WD1773_ADD("fdc", 8000000)
+ MCFG_WD_FDC_DRQ_CALLBACK(INPUTLINE("maincpu", INT_FLOPPYCTRL))
+
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", guab_floppies, "dd", guab_state::floppy_formats)
+ MCFG_SLOT_FIXED(true)
+
+ MCFG_SOFTWARE_LIST_ADD("floppy_list", "guab")
MACHINE_CONFIG_END
@@ -826,95 +562,12 @@ ROM_START( guab )
ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guab3.dsk", 0x00000, 0xb4000, CRC(ecb41e06) SHA1(2900a95046b38312c6035ea394b04b62c1d29f42) )
-ROM_END
-
-ROM_START( guab3a )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "guab1a1.rom", 0x00000, 0x8000, CRC(f23a9d7d) SHA1(f933e131bdcf21cfa6001c8e20fd11d94c7a9450) )
- ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
- ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
- ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guab7c.dsk", 0x00000, 0xb4000, CRC(f5f10f87) SHA1(80e540339efbfe59b656d6cd4f466a17df84c123) )
-ROM_END
-
-ROM_START( guab4 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "guab1a1.rom", 0x00000, 0x8000, CRC(f23a9d7d) SHA1(f933e131bdcf21cfa6001c8e20fd11d94c7a9450) )
- ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
- ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
- ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guab8d.dsk", 0x00000, 0xb4000, CRC(b87c55ce) SHA1(20debbefae194276b0813518634cf52bed093e73) )
-ROM_END
-
-ROM_START( guab6 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "guab1a1.rom", 0x00000, 0x8000, CRC(f23a9d7d) SHA1(f933e131bdcf21cfa6001c8e20fd11d94c7a9450) )
- ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
- ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
- ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guabf6.dsk", 0x00000, 0xb4000, CRC(08804c28) SHA1(608d89d598b7acb133814540dba98cea29c6cad6) )
-ROM_END
-
-ROM_START( guab6a )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "guab1a1.rom", 0x00000, 0x8000, CRC(f23a9d7d) SHA1(f933e131bdcf21cfa6001c8e20fd11d94c7a9450) )
- ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
- ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
- ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guab9f.dsk", 0x00000, 0xb4000, CRC(85329fe9) SHA1(f5ca1956c37b786fa0a4f8f0607a0a2b19d3fbb0) )
-ROM_END
-
-ROM_START( guab7 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "guab1a1.rom", 0x00000, 0x8000, CRC(f23a9d7d) SHA1(f933e131bdcf21cfa6001c8e20fd11d94c7a9450) )
- ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
- ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
- ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guab9g.dsk", 0x00000, 0xb4000, CRC(6b8c36f9) SHA1(1d9f4d943f2962603bbe39e5b58befe15954a6d6) )
-ROM_END
-
-ROM_START( guab21 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "guab1a1.rom", 0x00000, 0x8000, CRC(f23a9d7d) SHA1(f933e131bdcf21cfa6001c8e20fd11d94c7a9450) )
- ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
- ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
- ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guab21.dsk", 0x00000, 0xb4000, CRC(558ee009) SHA1(d2a02662216e10f80a215044f1929df7255b6136) )
-ROM_END
-
-ROM_START( guab43 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "guab1a1.rom", 0x00000, 0x8000, CRC(f23a9d7d) SHA1(f933e131bdcf21cfa6001c8e20fd11d94c7a9450) )
- ROM_LOAD16_BYTE( "guab1b1.rom", 0x00001, 0x8000, CRC(af3b5492) SHA1(6fd7f29e6ed2fadccc9246f1ebd049c3f9aeff13) )
- ROM_LOAD16_BYTE( "guab2a1.rom", 0x10000, 0x8000, CRC(ae7a162c) SHA1(d69721818b8e4daba776a678b62bc7f44f371a3f) )
- ROM_LOAD16_BYTE( "guab2b1.rom", 0x10001, 0x8000, CRC(29aa26a0) SHA1(8d425ad845ccfcd8995dbf6adc1ca17989a5d3ea) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "guab43.dsk", 0x00000, 0xb3f00, CRC(96167357) SHA1(9d5f66e05ed1086be9699c4149071038f6986e0c) )
ROM_END
ROM_START( crisscrs )
ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD16_BYTE( "crisscross_swe_2a1.ic49", 0x00000, 0x8000, CRC(a7ca8828) SHA1(a28482bb2bc1248a9b5c0b57904c382246a632cc) )
ROM_LOAD16_BYTE( "crisscross_swe_2b1.ic48", 0x00001, 0x8000, CRC(7e280cae) SHA1(18c76459e39549ddba5f0cd7921013ef4f816826) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "crisscrs.dsk", 0x00000, 0xb4000, NO_DUMP )
ROM_END
ROM_START( tenup )
@@ -923,20 +576,6 @@ ROM_START( tenup )
ROM_LOAD16_BYTE( "tu-12.bin", 0x00001, 0x8000, CRC(1c7f32b1) SHA1(2b14e2206695ae53909ae838a5c036248d9ab940) )
ROM_LOAD16_BYTE( "tu-13.bin", 0x10000, 0x8000, CRC(d19e2bf7) SHA1(76a9cbd4f604ad39eb0e319a9a6d5a6739b0ed8c) )
ROM_LOAD16_BYTE( "tu-14.bin", 0x10001, 0x8000, CRC(fd8a0c3c) SHA1(f87289ce6f0d2bc9b7d3a0b6deff38ba3aadf391) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "10up17.dsk", 0x00000, 0xb4000, CRC(7bc328df) SHA1(5f8e40d8ffc370fb19be9e386befa5fcd1f35a75) )
-ROM_END
-
-ROM_START( tenup3 )
- ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "tu-11.bin", 0x00000, 0x8000, CRC(01843086) SHA1(106a226900e8cf929f89edf801c627f02e4afce3) )
- ROM_LOAD16_BYTE( "tu-12.bin", 0x00001, 0x8000, CRC(1c7f32b1) SHA1(2b14e2206695ae53909ae838a5c036248d9ab940) )
- ROM_LOAD16_BYTE( "tu-13.bin", 0x10000, 0x8000, CRC(d19e2bf7) SHA1(76a9cbd4f604ad39eb0e319a9a6d5a6739b0ed8c) )
- ROM_LOAD16_BYTE( "tu-14.bin", 0x10001, 0x8000, CRC(fd8a0c3c) SHA1(f87289ce6f0d2bc9b7d3a0b6deff38ba3aadf391) )
-
- ROM_REGION( 0xb4000, "user1", 0 )
- ROM_LOAD( "10up3.dsk", 0x00000, 0xb4000, CRC(2767f017) SHA1(1c6551b089c3e3df48e0c03bd502b91fd88f0e94) )
ROM_END
@@ -946,14 +585,6 @@ ROM_END
*
*************************************/
-GAME( 1986, guab, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (3rd edition)", 0 )
-GAME( 1986, guab3a, guab, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (3rd edition alt?)", 0 )
-GAME( 1986, guab4, guab, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (4th edition)", 0 )
-GAME( 1986, guab6, guab, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (6th edition)", 0 )
-GAME( 1986, guab6a, guab, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (6th edition alt?)", 0 )
-GAME( 1986, guab7, guab, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (7th edition)", 0 )
-GAME( 1986, guab21, guab, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (21st edition)", 0 )
-GAME( 1986, guab43, guab, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break (43rd edition)", 0 )
-GAME( 1986, crisscrs, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Criss Cross (Sweden)", GAME_NOT_WORKING )
-GAME( 1988, tenup, 0, guab, tenup, driver_device, 0, ROT0, "JPM", "Ten Up (compendium 17)", 0 )
-GAME( 1988, tenup3, tenup, guab, tenup, driver_device, 0, ROT0, "JPM", "Ten Up (compendium 3)", 0 )
+GAME( 1986, guab, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break", 0 )
+GAME( 1986, crisscrs, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Criss Cross (Sweden)", GAME_NOT_WORKING )
+GAME( 1988, tenup, 0, guab, tenup, driver_device, 0, ROT0, "JPM", "Ten Up", 0 )