summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/a2bus/a2diskii.cpp161
-rw-r--r--src/devices/bus/a2bus/a2diskii.h76
-rw-r--r--src/devices/bus/a2bus/a2diskiing.cpp32
-rw-r--r--src/devices/bus/a2bus/a2diskiing.h23
-rw-r--r--src/devices/bus/a2bus/cards.cpp3
-rw-r--r--src/devices/bus/abckb/abc800kb.cpp2
-rw-r--r--src/devices/bus/abckb/abc99.cpp3
-rw-r--r--src/devices/bus/adamnet/kb.cpp2
-rw-r--r--src/devices/bus/gio64/newport.h2
-rw-r--r--src/devices/bus/nubus/nubus_48gc.cpp4
-rw-r--r--src/devices/bus/nubus/nubus_spec8.cpp4
-rw-r--r--src/devices/bus/nubus/nubus_specpdq.cpp4
-rw-r--r--src/devices/bus/pc_kbd/ec1841.cpp2
-rw-r--r--src/devices/bus/pc_kbd/pcat84.cpp2
-rw-r--r--src/devices/bus/pc_kbd/pcxt83.cpp2
-rw-r--r--src/devices/bus/sg1000_exp/sk1100.cpp1
-rw-r--r--src/devices/bus/uts_kbd/400kbd.cpp2
-rw-r--r--src/devices/cpu/arm/arm.cpp54
-rw-r--r--src/devices/cpu/arm/arm.h18
-rw-r--r--src/devices/cpu/arm/armdasm.cpp2
-rw-r--r--src/devices/cpu/arm7/arm7.cpp12
-rw-r--r--src/devices/cpu/arm7/arm7dasm.cpp2
-rw-r--r--src/devices/cpu/arm7/arm7help.h5
-rw-r--r--src/devices/cpu/arm7/arm7ops.cpp16
-rw-r--r--src/devices/cpu/arm7/arm7thmb.cpp3
-rw-r--r--src/devices/cpu/asap/asap.cpp12
-rw-r--r--src/devices/cpu/clipper/clipper.cpp43
-rw-r--r--src/devices/cpu/drcbec.cpp44
-rw-r--r--src/devices/cpu/e132xs/e132xsop.hxx8
-rw-r--r--src/devices/cpu/i386/i386op32.hxx6
-rw-r--r--src/devices/cpu/jaguar/jaguar.cpp4
-rw-r--r--src/devices/cpu/m68000/m68kcpu.cpp4
-rw-r--r--src/devices/cpu/m88000/m88000.cpp8
-rw-r--r--src/devices/cpu/scudsp/scudsp.cpp2
-rw-r--r--src/devices/cpu/tms32082/mp_ops.cpp43
-rw-r--r--src/devices/cpu/uml.cpp39
-rw-r--r--src/devices/machine/acorn_vidc.cpp4
-rw-r--r--src/devices/machine/acorn_vidc.h4
-rw-r--r--src/devices/machine/appldriv.cpp336
-rw-r--r--src/devices/machine/appldriv.h71
-rw-r--r--src/devices/machine/applefdc.cpp566
-rw-r--r--src/devices/machine/applefdc.h152
-rw-r--r--src/devices/machine/roc10937.cpp10
-rw-r--r--src/devices/machine/roc10937.h1
-rw-r--r--src/devices/video/bt459.h2
-rw-r--r--src/devices/video/bt45x.h2
-rw-r--r--src/devices/video/bt47x.h2
-rw-r--r--src/devices/video/huc6260.h2
-rw-r--r--src/devices/video/ims_cvc.h4
-rw-r--r--src/devices/video/mc6845.h2
-rw-r--r--src/devices/video/nereid.h2
-rw-r--r--src/devices/video/pc_vga.h2
-rw-r--r--src/devices/video/psx.h2
-rw-r--r--src/devices/video/snes_ppu.h4
-rw-r--r--src/devices/video/tlc34076.h2
-rw-r--r--src/devices/video/tms9928a.h2
-rw-r--r--src/devices/video/v9938.h2
-rw-r--r--src/devices/video/vic4567.h2
-rw-r--r--src/devices/video/voodoo_render.cpp12
-rw-r--r--src/devices/video/voodoo_render.h3
-rw-r--r--src/emu/devdelegate.h8
-rw-r--r--src/emu/diimage.cpp1
-rw-r--r--src/emu/dipalette.h16
-rw-r--r--src/emu/dislot.cpp1
-rw-r--r--src/emu/emucore.h41
-rw-r--r--src/emu/emuopts.cpp1
-rw-r--r--src/emu/emupal.h8
-rw-r--r--src/emu/rendfont.cpp1
-rw-r--r--src/emu/validity.cpp29
-rw-r--r--src/emu/video.cpp1
-rw-r--r--src/frontend/mame/clifront.cpp1
-rw-r--r--src/frontend/mame/mameopts.cpp4
-rw-r--r--src/frontend/mame/media_ident.cpp1
-rw-r--r--src/frontend/mame/ui/custui.cpp1
-rw-r--r--src/frontend/mame/ui/devopt.cpp2
-rw-r--r--src/frontend/mame/ui/filecreate.cpp1
-rw-r--r--src/frontend/mame/ui/info.cpp2
-rw-r--r--src/frontend/mame/ui/inifile.cpp1
-rw-r--r--src/frontend/mame/ui/miscmenu.cpp2
-rw-r--r--src/frontend/mame/ui/selsoft.cpp4
-rw-r--r--src/frontend/mame/ui/state.cpp2
-rw-r--r--src/frontend/mame/ui/ui.cpp2
-rw-r--r--src/frontend/mame/ui/videoopt.cpp2
-rw-r--r--src/lib/formats/ap2_dsk.cpp497
-rw-r--r--src/lib/formats/ap2_dsk.h20
-rw-r--r--src/lib/formats/ap_dsk35.cpp1108
-rw-r--r--src/lib/formats/ap_dsk35.h11
-rw-r--r--src/lib/util/corefile.cpp71
-rw-r--r--src/lib/util/corefile.h16
-rw-r--r--src/lib/util/hashing.cpp29
-rw-r--r--src/lib/util/path.cpp81
-rw-r--r--src/lib/util/path.h19
-rw-r--r--src/lib/util/utf8.h54
-rw-r--r--src/lib/util/zippath.cpp1
-rw-r--r--src/mame/acorn/accomm.cpp1
-rw-r--r--src/mame/acorn/acrnsys.cpp1
-rw-r--r--src/mame/acorn/acrnsys1.cpp1
-rw-r--r--src/mame/acorn/atom.cpp1
-rw-r--r--src/mame/acorn/bbc.cpp2
-rw-r--r--src/mame/act/victor9k_kb.cpp2
-rw-r--r--src/mame/agat/agat.cpp4
-rw-r--r--src/mame/agat/agat7.h2
-rw-r--r--src/mame/agat/agat9.h2
-rw-r--r--src/mame/agat/agatkeyb.cpp1
-rw-r--r--src/mame/amstrad/amstrad.cpp1
-rw-r--r--src/mame/amstrad/pc1512kb.cpp1
-rw-r--r--src/mame/apple/apple2.cpp2
-rw-r--r--src/mame/apple/apple2e.cpp152
-rw-r--r--src/mame/apple/apple2gs.cpp2
-rw-r--r--src/mame/apple/apple2video.cpp2
-rw-r--r--src/mame/apple/apple2video.h2
-rw-r--r--src/mame/apple/apple3.cpp2
-rw-r--r--src/mame/apple/mactoolbox.h9
-rw-r--r--src/mame/apple/swim.cpp223
-rw-r--r--src/mame/apple/swim.h56
-rw-r--r--src/mame/apple/tk2000.cpp2
-rw-r--r--src/mame/appliedconcepts/ggm.cpp13
-rw-r--r--src/mame/arcade.flt1
-rw-r--r--src/mame/atari/atarist.cpp2
-rw-r--r--src/mame/atari/atarist_v.h4
-rw-r--r--src/mame/atari/pofo_kbd.cpp2
-rw-r--r--src/mame/atari/tia.h2
-rw-r--r--src/mame/ausnz/poly.cpp1
-rw-r--r--src/mame/ausnz/super80.cpp2
-rw-r--r--src/mame/barcrest/mpu4.cpp832
-rw-r--r--src/mame/barcrest/mpu4.h553
-rw-r--r--src/mame/barcrest/mpu4avan.cpp35
-rw-r--r--src/mame/barcrest/mpu4bwb.cpp347
-rw-r--r--src/mame/barcrest/mpu4concept.cpp10
-rw-r--r--src/mame/barcrest/mpu4crystal.cpp277
-rw-r--r--src/mame/barcrest/mpu4dealem.cpp10
-rw-r--r--src/mame/barcrest/mpu4empire.cpp265
-rw-r--r--src/mame/barcrest/mpu4mdm.cpp92
-rw-r--r--src/mame/barcrest/mpu4misc.cpp56
-rw-r--r--src/mame/barcrest/mpu4mod2sw.cpp957
-rw-r--r--src/mame/barcrest/mpu4mod4oki.cpp2388
-rw-r--r--src/mame/barcrest/mpu4mod4yam.cpp1066
-rw-r--r--src/mame/barcrest/mpu4plasma.cpp35
-rw-r--r--src/mame/barcrest/mpu4redpoint.cpp146
-rw-r--r--src/mame/barcrest/mpu4union.cpp65
-rw-r--r--src/mame/barcrest/mpu4unsorted.cpp324
-rw-r--r--src/mame/barcrest/mpu4vid.cpp11
-rw-r--r--src/mame/bondwell/bw12.cpp1
-rw-r--r--src/mame/canon/canon_s80.cpp1
-rw-r--r--src/mame/capcom/cps1.cpp53
-rw-r--r--src/mame/capcom/cps1_v.cpp1
-rw-r--r--src/mame/casio/pb1000.cpp2
-rw-r--r--src/mame/chess/ave_arb.cpp18
-rw-r--r--src/mame/cinematronics/leland.cpp140
-rw-r--r--src/mame/commodore/cbm2.cpp2
-rw-r--r--src/mame/comx/comx35.cpp1
-rw-r--r--src/mame/dataeast/deco_ace.h2
-rw-r--r--src/mame/dataeast/decrmc3.h4
-rw-r--r--src/mame/ddr/huebler.cpp1
-rw-r--r--src/mame/ddr/jtc.cpp1
-rw-r--r--src/mame/epson/hx20.cpp1
-rw-r--r--src/mame/epson/px8.cpp2
-rw-r--r--src/mame/gaelco/gaelco2_m.cpp7
-rw-r--r--src/mame/grundy/newbrain.cpp2
-rw-r--r--src/mame/handheld/gmaster.cpp1
-rw-r--r--src/mame/handheld/hh_cops1.cpp2
-rw-r--r--src/mame/handheld/hh_rw5000.cpp2
-rw-r--r--src/mame/handheld/hh_tms1k.cpp194
-rw-r--r--src/mame/isc/compucolor.cpp1
-rw-r--r--src/mame/kaneko/kaneko_grap2.h2
-rw-r--r--src/mame/konami/xmen.cpp775
-rw-r--r--src/mame/konami/xmen.h89
-rw-r--r--src/mame/konami/xmen_v.cpp192
-rw-r--r--src/mame/kyocera/kyocera.cpp3
-rw-r--r--src/mame/layout/connect4.lay4
-rw-r--r--src/mame/mame.lst26
-rw-r--r--src/mame/matsushita/jr100.cpp4
-rw-r--r--src/mame/matsushita/jr200.cpp4
-rw-r--r--src/mame/memotech/mtx.cpp2
-rw-r--r--src/mame/misc/astrcorp.cpp97
-rw-r--r--src/mame/misc/mtu130.cpp49
-rw-r--r--src/mame/misc/neoprint.cpp2
-rw-r--r--src/mame/namco/namco_c116.h4
-rw-r--r--src/mame/namco/ygv608.h2
-rw-r--r--src/mame/nec/pc8001.cpp1
-rw-r--r--src/mame/nec/pc8401a.cpp2
-rw-r--r--src/mame/nec/pc8801.cpp2
-rw-r--r--src/mame/nokia/mm1kb.cpp1
-rw-r--r--src/mame/osborne/vixen.cpp1
-rw-r--r--src/mame/pc/europc_kbd.cpp2
-rw-r--r--src/mame/pc/kb_poisk1.h2
-rw-r--r--src/mame/positron/positron.cpp2
-rw-r--r--src/mame/psion/psion5.cpp2
-rw-r--r--src/mame/samsung/spc1500.cpp2
-rw-r--r--src/mame/sanyo/mbc55x_kbd.cpp2
-rw-r--r--src/mame/sanyo/phc25.cpp2
-rw-r--r--src/mame/sega/model3.cpp18
-rw-r--r--src/mame/seibu/r2crypt.cpp7
-rw-r--r--src/mame/sgi/sgi_xmap2.h2
-rw-r--r--src/mame/shared/alpha68k_palette.h2
-rw-r--r--src/mame/shared/mega32x.h2
-rw-r--r--src/mame/sharp/mz2000.cpp2
-rw-r--r--src/mame/siemens/pcd_kbd.cpp2
-rw-r--r--src/mame/sinclair/ql.cpp2
-rw-r--r--src/mame/skeleton/aaa.cpp4
-rw-r--r--src/mame/skeleton/blw700i.cpp8
-rw-r--r--src/mame/skeleton/eurit.cpp4
-rw-r--r--src/mame/skeleton/gm1000.cpp1
-rw-r--r--src/mame/skeleton/itt3030.cpp6
-rw-r--r--src/mame/skeleton/shine.cpp4
-rw-r--r--src/mame/skeleton/squale.cpp2
-rw-r--r--src/mame/svi/svi318.cpp2
-rw-r--r--src/mame/ta/alphatpc16.cpp49
-rw-r--r--src/mame/taito/tc0110pcr.h2
-rw-r--r--src/mame/tangerine/microtan.cpp2
-rw-r--r--src/mame/tangerine/oric.cpp2
-rw-r--r--src/mame/telenova/compiskb.cpp2
-rw-r--r--src/mame/telercas/tmc600.cpp2
-rw-r--r--src/mame/televideo/tv910.cpp4
-rw-r--r--src/mame/televideo/tv950kb.cpp3
-rw-r--r--src/mame/thomson/thomson.cpp2
-rw-r--r--src/mame/ti/exelv.cpp2
-rw-r--r--src/mame/ti/ti74.cpp2
-rw-r--r--src/mame/tiki/tiki100.cpp2
-rw-r--r--src/mame/tomy/tutor.cpp2
-rw-r--r--src/mame/trainer/amico2k.cpp2
-rw-r--r--src/mame/trs/lnw80.cpp1
-rw-r--r--src/mame/trs/max80.cpp5
-rw-r--r--src/mame/trs/meritum.cpp2
-rw-r--r--src/mame/trs/radionic.cpp2
-rw-r--r--src/mame/trs/trs80.cpp1
-rw-r--r--src/mame/trs/trs80m2kb.cpp2
-rw-r--r--src/mame/trs/trs80m3.cpp2
-rw-r--r--src/mame/ussr/pyl601.cpp2
-rw-r--r--src/mame/visual/v102_kbd.cpp2
-rw-r--r--src/mame/visual/v1050.cpp2
-rw-r--r--src/mame/vtech/crvision.cpp1
-rw-r--r--src/mame/vtech/laser3k.cpp4
-rw-r--r--src/mame/vtech/lcmate2.cpp4
-rw-r--r--src/mame/vtech/pc4.cpp2
-rw-r--r--src/mame/wang/wangpckb.cpp2
-rw-r--r--src/mame/wyse/wy50kb.cpp2
-rw-r--r--src/mame/xerox/x820kb.cpp2
-rw-r--r--src/mame/yamaha/ymtx81z.cpp2
-rw-r--r--src/osd/eivc.h41
-rw-r--r--src/osd/eminline.h81
-rw-r--r--src/tools/chdman.cpp1
-rw-r--r--src/tools/floptool.cpp2
-rw-r--r--src/tools/imgtool/imgtool.cpp2
-rw-r--r--src/tools/imgtool/main.cpp2
-rw-r--r--src/tools/imgtool/modules/mac.cpp23
-rw-r--r--src/tools/imgtool/modules/prodos.cpp24
-rw-r--r--src/tools/imgtool/stream.cpp1
-rw-r--r--src/tools/unidasm.cpp1
249 files changed, 5665 insertions, 8261 deletions
diff --git a/src/devices/bus/a2bus/a2diskii.cpp b/src/devices/bus/a2bus/a2diskii.cpp
deleted file mode 100644
index 2c06ee5136f..00000000000
--- a/src/devices/bus/a2bus/a2diskii.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:R. Belmont
-/*********************************************************************
-
- a2diskii.c
-
- Implementation of the Apple II Disk II controller card
-
-*********************************************************************/
-
-#include "emu.h"
-#include "imagedev/flopdrv.h"
-#include "formats/ap2_dsk.h"
-#include "machine/appldriv.h"
-#include "a2diskii.h"
-
-
-/***************************************************************************
- PARAMETERS
-***************************************************************************/
-
-//**************************************************************************
-// GLOBAL VARIABLES
-//**************************************************************************
-
-DEFINE_DEVICE_TYPE(A2BUS_DISKII, a2bus_diskii_device, "a2diskii", "Apple Disk II controller")
-DEFINE_DEVICE_TYPE(A2BUS_AGAT7_FDC, a2bus_agat7flop_device, "agat7_flop", "Agat-7 140K floppy card")
-DEFINE_DEVICE_TYPE(A2BUS_AGAT9_FDC, a2bus_agat9flop_device, "agat9_flop", "Agat-9 140K floppy card")
-
-#define DISKII_ROM_REGION "diskii_rom"
-#define FDC_TAG "diskii_fdc"
-
-const applefdc_interface fdc_interface =
-{
- apple525_set_lines, /* set_lines */
- apple525_set_enable_lines, /* set_enable_lines */
-
- apple525_read_data, /* read_data */
- apple525_write_data, /* write_data */
- apple525_read_status /* read_status */
-};
-
-static const floppy_interface floppy_interface =
-{
- FLOPPY_STANDARD_5_25_DSHD,
- LEGACY_FLOPPY_OPTIONS_NAME(apple2),
- "floppy_5_25"
-};
-
-ROM_START( diskii )
- ROM_REGION(0x100, DISKII_ROM_REGION, 0)
- ROM_LOAD( "341-0027-a.p5", 0x000000, 0x000100, CRC(ce7144f6) SHA1(d4181c9f046aafc3fb326b381baac809d9e38d16) )
-ROM_END
-
-ROM_START( agat7 )
- ROM_REGION(0x100, DISKII_ROM_REGION, 0)
- ROM_LOAD( "shugart7.rom", 0x0000, 0x0100, CRC(c6e4850c) SHA1(71626d3d2d4bbeeac2b77585b45a5566d20b8d34) )
-ROM_END
-
-ROM_START( agat9 )
- ROM_REGION(0x100, DISKII_ROM_REGION, 0)
- ROM_LOAD( "shugart9.rom", 0x0000, 0x0100, CRC(964a0ce2) SHA1(bf955189ebffe874c20ef649a3db8177dc16af61) )
-ROM_END
-
-//-------------------------------------------------
-// device_add_mconfig - add device configuration
-//-------------------------------------------------
-
-void a2bus_floppy_device::device_add_mconfig(machine_config &config)
-{
- LEGACY_APPLEFDC(config, m_fdc, &fdc_interface);
- FLOPPY_APPLE(config, FLOPPY_0, &floppy_interface, 15, 16);
- FLOPPY_APPLE(config, FLOPPY_1, &floppy_interface, 15, 16);
-}
-
-//-------------------------------------------------
-// rom_region - device-specific ROM region
-//-------------------------------------------------
-
-const tiny_rom_entry *a2bus_floppy_device::device_rom_region() const
-{
- return ROM_NAME( diskii );
-}
-
-const tiny_rom_entry *a2bus_agat7flop_device::device_rom_region() const
-{
- return ROM_NAME( agat7 );
-}
-
-const tiny_rom_entry *a2bus_agat9flop_device::device_rom_region() const
-{
- return ROM_NAME( agat9 );
-}
-
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
-a2bus_floppy_device::a2bus_floppy_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, type, tag, owner, clock),
- device_a2bus_card_interface(mconfig, *this),
- m_fdc(*this, FDC_TAG), m_rom(nullptr)
-{
-}
-
-a2bus_diskii_device::a2bus_diskii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_floppy_device(mconfig, A2BUS_DISKII, tag, owner, clock)
-{
-}
-
-a2bus_agat7flop_device::a2bus_agat7flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_floppy_device(mconfig, A2BUS_AGAT7_FDC, tag, owner, clock)
-{
-}
-
-a2bus_agat9flop_device::a2bus_agat9flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- a2bus_floppy_device(mconfig, A2BUS_AGAT9_FDC, tag, owner, clock)
-{
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void a2bus_floppy_device::device_start()
-{
- m_rom = device().machine().root_device().memregion(this->subtag(DISKII_ROM_REGION).c_str())->base();
-}
-
-void a2bus_floppy_device::device_reset()
-{
-}
-
-
-/*-------------------------------------------------
- read_c0nx - called for reads from this card's c0nx space
--------------------------------------------------*/
-
-uint8_t a2bus_floppy_device::read_c0nx(uint8_t offset)
-{
- return m_fdc->read(offset);
-}
-
-
-/*-------------------------------------------------
- write_c0nx - called for writes to this card's c0nx space
--------------------------------------------------*/
-
-void a2bus_floppy_device::write_c0nx(uint8_t offset, uint8_t data)
-{
- m_fdc->write(offset, data);
-}
-
-/*-------------------------------------------------
- read_cnxx - called for reads from this card's c0nx space
--------------------------------------------------*/
-
-uint8_t a2bus_floppy_device::read_cnxx(uint8_t offset)
-{
- return m_rom[offset];
-}
diff --git a/src/devices/bus/a2bus/a2diskii.h b/src/devices/bus/a2bus/a2diskii.h
deleted file mode 100644
index 01aff07b4da..00000000000
--- a/src/devices/bus/a2bus/a2diskii.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:R. Belmont
-/*********************************************************************
-
- a2diskii.h
-
- Apple II Disk II Controller Card
-
-*********************************************************************/
-
-#ifndef MAME_BUS_A2BUS_A2DISKII_H
-#define MAME_BUS_A2BUS_A2DISKII_H
-
-#pragma once
-
-#include "a2bus.h"
-#include "machine/applefdc.h"
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class a2bus_floppy_device:
- public device_t,
- public device_a2bus_card_interface
-{
-protected:
- // construction/destruction
- a2bus_floppy_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- virtual void device_start() override;
- virtual void device_reset() override;
- virtual void device_add_mconfig(machine_config &config) override;
- virtual const tiny_rom_entry *device_rom_region() const override;
-
- // overrides of standard a2bus slot functions
- virtual uint8_t read_c0nx(uint8_t offset) override;
- virtual void write_c0nx(uint8_t offset, uint8_t data) override;
- virtual uint8_t read_cnxx(uint8_t offset) override;
-
- required_device<applefdc_base_device> m_fdc;
-
-private:
- uint8_t *m_rom;
-};
-
-class a2bus_diskii_device: public a2bus_floppy_device
-{
-public:
- a2bus_diskii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-};
-
-class a2bus_agat7flop_device: public a2bus_floppy_device
-{
-public:
- a2bus_agat7flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-class a2bus_agat9flop_device: public a2bus_floppy_device
-{
-public:
- a2bus_agat9flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
-protected:
- virtual const tiny_rom_entry *device_rom_region() const override;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(A2BUS_DISKII, a2bus_diskii_device)
-DECLARE_DEVICE_TYPE(A2BUS_AGAT7_FDC, a2bus_agat7flop_device)
-DECLARE_DEVICE_TYPE(A2BUS_AGAT9_FDC, a2bus_agat9flop_device)
-
-#endif // MAME_BUS_A2BUS_A2DISKII_H
diff --git a/src/devices/bus/a2bus/a2diskiing.cpp b/src/devices/bus/a2bus/a2diskiing.cpp
index 10fbec3e016..25caa6c63fd 100644
--- a/src/devices/bus/a2bus/a2diskiing.cpp
+++ b/src/devices/bus/a2bus/a2diskiing.cpp
@@ -24,6 +24,8 @@
DEFINE_DEVICE_TYPE(A2BUS_DISKIING, a2bus_diskiing_device, "a2diskiing", "Apple Disk II NG controller (16-sector)")
DEFINE_DEVICE_TYPE(A2BUS_DISKIING13, a2bus_diskiing13_device, "diskii13", "Apple Disk II NG controller (13-sector)")
DEFINE_DEVICE_TYPE(A2BUS_APPLESURANCE, a2bus_applesurance_device, "a2surance", "Applesurance Diagnostic Controller")
+DEFINE_DEVICE_TYPE(A2BUS_AGAT7_FDC, a2bus_agat7flop_device, "agat7_flop", "Agat-7 140K floppy card")
+DEFINE_DEVICE_TYPE(A2BUS_AGAT9_FDC, a2bus_agat9flop_device, "agat9_flop", "Agat-9 140K floppy card")
#define WOZFDC_TAG "wozfdc"
#define DISKII_ROM_REGION "diskii_rom"
@@ -48,6 +50,16 @@ ROM_START( applesurance )
ROM_LOAD( "applesurance 3.0 - 2732.bin", 0x000000, 0x001000, CRC(64eafec7) SHA1(723dc6cd32de5a0f27af7503764185ac58904c05) )
ROM_END
+ROM_START( agat7 )
+ ROM_REGION(0x100, DISKII_ROM_REGION, 0)
+ ROM_LOAD( "shugart7.rom", 0x0000, 0x0100, CRC(c6e4850c) SHA1(71626d3d2d4bbeeac2b77585b45a5566d20b8d34) )
+ROM_END
+
+ROM_START( agat9 )
+ ROM_REGION(0x100, DISKII_ROM_REGION, 0)
+ ROM_LOAD( "shugart9.rom", 0x0000, 0x0100, CRC(964a0ce2) SHA1(bf955189ebffe874c20ef649a3db8177dc16af61) )
+ROM_END
+
void diskiing_device::floppy_formats(format_registration &fr)
{
fr.add(FLOPPY_A216S_DOS_FORMAT);
@@ -102,6 +114,16 @@ const tiny_rom_entry *a2bus_applesurance_device::device_rom_region() const
return ROM_NAME( applesurance );
}
+const tiny_rom_entry *a2bus_agat7flop_device::device_rom_region() const
+{
+ return ROM_NAME(agat7);
+}
+
+const tiny_rom_entry *a2bus_agat9flop_device::device_rom_region() const
+{
+ return ROM_NAME(agat9);
+}
+
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
@@ -131,6 +153,16 @@ a2bus_applesurance_device::a2bus_applesurance_device(const machine_config &mconf
{
}
+a2bus_agat7flop_device::a2bus_agat7flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ diskiing_device(mconfig, A2BUS_AGAT7_FDC, tag, owner, clock)
+{
+}
+
+a2bus_agat9flop_device::a2bus_agat9flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
+ diskiing_device(mconfig, A2BUS_AGAT9_FDC, tag, owner, clock)
+{
+}
+
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
diff --git a/src/devices/bus/a2bus/a2diskiing.h b/src/devices/bus/a2bus/a2diskiing.h
index a3b07e78063..1d6e2f93f99 100644
--- a/src/devices/bus/a2bus/a2diskiing.h
+++ b/src/devices/bus/a2bus/a2diskiing.h
@@ -14,7 +14,6 @@
#pragma once
#include "a2bus.h"
-#include "a2diskii.h"
#include "machine/wozfdc.h"
#include "imagedev/floppy.h"
@@ -58,8 +57,6 @@ class a2bus_diskiing_device: public diskiing_device
{
public:
a2bus_diskiing_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- static auto parent_rom_device_type() { return &A2BUS_DISKII; }
};
class a2bus_diskiing13_device: public diskiing_device
@@ -102,9 +99,29 @@ private:
int m_c800_bank;
};
+class a2bus_agat7flop_device : public diskiing_device
+{
+public:
+ a2bus_agat7flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
+class a2bus_agat9flop_device : public diskiing_device
+{
+public:
+ a2bus_agat9flop_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+protected:
+ virtual const tiny_rom_entry *device_rom_region() const override;
+};
+
// device type definition
DECLARE_DEVICE_TYPE(A2BUS_DISKIING, a2bus_diskiing_device)
DECLARE_DEVICE_TYPE(A2BUS_DISKIING13, a2bus_diskiing13_device)
DECLARE_DEVICE_TYPE(A2BUS_APPLESURANCE, a2bus_applesurance_device)
+DECLARE_DEVICE_TYPE(A2BUS_AGAT7_FDC, a2bus_agat7flop_device)
+DECLARE_DEVICE_TYPE(A2BUS_AGAT9_FDC, a2bus_agat9flop_device)
#endif // MAME_BUS_A2BUS_A2DISKIING_H
diff --git a/src/devices/bus/a2bus/cards.cpp b/src/devices/bus/a2bus/cards.cpp
index b2ace857a5f..40668bb9882 100644
--- a/src/devices/bus/a2bus/cards.cpp
+++ b/src/devices/bus/a2bus/cards.cpp
@@ -18,7 +18,6 @@
#include "a2arcadebd.h"
#include "a2cffa.h"
#include "a2corvus.h"
-#include "a2diskii.h"
#include "a2diskiing.h"
#include "a2dx1.h"
#include "a2echoii.h"
@@ -80,7 +79,6 @@ void apple2_slot0_cards(device_slot_interface &device)
void apple2_cards(device_slot_interface &device)
{
- device.option_add("diskii", A2BUS_DISKII); // Disk II Controller Card
device.option_add("diskiing", A2BUS_DISKIING); // Disk II Controller Card, cycle-accurate version
device.option_add("diskiing13", A2BUS_DISKIING13); // Disk II Controller Card, cycle-accurate version
device.option_add("diskiiiwm", A2BUS_IWM_CARD); // IWM Disk II Controller Card
@@ -148,7 +146,6 @@ void apple2_cards(device_slot_interface &device)
void apple2e_cards(device_slot_interface &device)
{
- device.option_add("diskii", A2BUS_DISKII); // Disk II Controller Card
device.option_add("diskiing", A2BUS_DISKIING); // Disk II Controller Card, cycle-accurate version
device.option_add("diskiing13", A2BUS_DISKIING13); // Disk II Controller Card, cycle-accurate version
device.option_add("diskiiiwm", A2BUS_IWM_CARD); // IWM Disk II Controller Card
diff --git a/src/devices/bus/abckb/abc800kb.cpp b/src/devices/bus/abckb/abc800kb.cpp
index 571a62d5a6e..39f00d3347c 100644
--- a/src/devices/bus/abckb/abc800kb.cpp
+++ b/src/devices/bus/abckb/abc800kb.cpp
@@ -71,6 +71,8 @@ XR22-050-3B Pinout
#include "emu.h"
#include "abc800kb.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/devices/bus/abckb/abc99.cpp b/src/devices/bus/abckb/abc99.cpp
index 3273e625a4b..b1a5c6a0a6d 100644
--- a/src/devices/bus/abckb/abc99.cpp
+++ b/src/devices/bus/abckb/abc99.cpp
@@ -54,8 +54,11 @@ Notes:
#include "emu.h"
#include "abc99.h"
+
#include "speaker.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/devices/bus/adamnet/kb.cpp b/src/devices/bus/adamnet/kb.cpp
index 046ceba61f4..840bb898e25 100644
--- a/src/devices/bus/adamnet/kb.cpp
+++ b/src/devices/bus/adamnet/kb.cpp
@@ -9,6 +9,8 @@
#include "emu.h"
#include "kb.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/devices/bus/gio64/newport.h b/src/devices/bus/gio64/newport.h
index 101ca7a6e61..00a6e36e22d 100644
--- a/src/devices/bus/gio64/newport.h
+++ b/src/devices/bus/gio64/newport.h
@@ -102,7 +102,7 @@ private:
virtual void device_reset() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 0x2000; }
+ virtual uint32_t palette_entries() const noexcept override { return 0x2000; }
// Initializers
void set_revision(uint32_t revision) { m_revision = revision; }
diff --git a/src/devices/bus/nubus/nubus_48gc.cpp b/src/devices/bus/nubus/nubus_48gc.cpp
index 60a28c513e6..9237b893150 100644
--- a/src/devices/bus/nubus/nubus_48gc.cpp
+++ b/src/devices/bus/nubus/nubus_48gc.cpp
@@ -99,7 +99,7 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
// palette implementation
- uint32_t palette_entries() const override;
+ uint32_t palette_entries() const noexcept override;
private:
static constexpr offs_t VRAM_MAX = 0x10'0000 / 4; // chip supports 2M but card can only use 1M
@@ -309,7 +309,7 @@ ioport_constructor nubus_824gc_device::device_input_ports() const
// palette_entries - entries in color palette
//-------------------------------------------------
-uint32_t jmfb_device::palette_entries() const
+uint32_t jmfb_device::palette_entries() const noexcept
{
return 256;
}
diff --git a/src/devices/bus/nubus/nubus_spec8.cpp b/src/devices/bus/nubus/nubus_spec8.cpp
index 1e55c907928..e85430b0f17 100644
--- a/src/devices/bus/nubus/nubus_spec8.cpp
+++ b/src/devices/bus/nubus/nubus_spec8.cpp
@@ -94,7 +94,7 @@ protected:
virtual ioport_constructor device_input_ports() const override;
// palette implementation
- virtual uint32_t palette_entries() const override;
+ virtual uint32_t palette_entries() const noexcept override;
TIMER_CALLBACK_MEMBER(vbl_tick);
@@ -184,7 +184,7 @@ ioport_constructor nubus_spec8s3_device::device_input_ports() const
// palette_entries - entries in color palette
//-------------------------------------------------
-uint32_t nubus_spec8s3_device::palette_entries() const
+uint32_t nubus_spec8s3_device::palette_entries() const noexcept
{
return 256;
}
diff --git a/src/devices/bus/nubus/nubus_specpdq.cpp b/src/devices/bus/nubus/nubus_specpdq.cpp
index c6b71b7b1f1..c496fa77d05 100644
--- a/src/devices/bus/nubus/nubus_specpdq.cpp
+++ b/src/devices/bus/nubus/nubus_specpdq.cpp
@@ -78,7 +78,7 @@ protected:
virtual ioport_constructor device_input_ports() const override;
// palette implementation
- virtual uint32_t palette_entries() const override;
+ virtual uint32_t palette_entries() const noexcept override;
TIMER_CALLBACK_MEMBER(vbl_tick);
@@ -171,7 +171,7 @@ ioport_constructor nubus_specpdq_device::device_input_ports() const
// palette_entries - entries in color palette
//-------------------------------------------------
-uint32_t nubus_specpdq_device::palette_entries() const
+uint32_t nubus_specpdq_device::palette_entries() const noexcept
{
return 256;
}
diff --git a/src/devices/bus/pc_kbd/ec1841.cpp b/src/devices/bus/pc_kbd/ec1841.cpp
index a7cc897cb8a..c9f5aa57f98 100644
--- a/src/devices/bus/pc_kbd/ec1841.cpp
+++ b/src/devices/bus/pc_kbd/ec1841.cpp
@@ -34,6 +34,8 @@
#include "emu.h"
#include "ec1841.h"
+#include "utf8.h"
+
//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
#define LOG_KEYBOARD (1U << 1)
diff --git a/src/devices/bus/pc_kbd/pcat84.cpp b/src/devices/bus/pc_kbd/pcat84.cpp
index a3796a7408a..d45588eea34 100644
--- a/src/devices/bus/pc_kbd/pcat84.cpp
+++ b/src/devices/bus/pc_kbd/pcat84.cpp
@@ -27,6 +27,8 @@
#include "emu.h"
#include "pcat84.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/devices/bus/pc_kbd/pcxt83.cpp b/src/devices/bus/pc_kbd/pcxt83.cpp
index 728d858845f..f155e9c853c 100644
--- a/src/devices/bus/pc_kbd/pcxt83.cpp
+++ b/src/devices/bus/pc_kbd/pcxt83.cpp
@@ -19,6 +19,8 @@
#include "emu.h"
#include "pcxt83.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/devices/bus/sg1000_exp/sk1100.cpp b/src/devices/bus/sg1000_exp/sk1100.cpp
index 95884acfb30..e5a2ae238c9 100644
--- a/src/devices/bus/sg1000_exp/sk1100.cpp
+++ b/src/devices/bus/sg1000_exp/sk1100.cpp
@@ -19,6 +19,7 @@ TODO:
#include "emu.h"
#include "sk1100.h"
#include "softlist_dev.h"
+#include "utf8.h"
diff --git a/src/devices/bus/uts_kbd/400kbd.cpp b/src/devices/bus/uts_kbd/400kbd.cpp
index 50e05d4eddf..37d54c7d670 100644
--- a/src/devices/bus/uts_kbd/400kbd.cpp
+++ b/src/devices/bus/uts_kbd/400kbd.cpp
@@ -27,6 +27,8 @@
#include "cpu/mcs48/mcs48.h"
+#include "utf8.h"
+
DEFINE_DEVICE_TYPE(UTS_400_KEYBOARD, uts_400_keyboard_device, "uts_400kbd", "UTS 400-Format Keyboard (F3621-04-000)")
diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp
index f2d2b35c37f..749b14d9bf8 100644
--- a/src/devices/cpu/arm/arm.cpp
+++ b/src/devices/cpu/arm/arm.cpp
@@ -1,7 +1,7 @@
// license:BSD-3-Clause
// copyright-holders:Bryan McPhail, Phil Stroffolino
/*
- ARM 2/3/6 Emulation (26 bit address bus)
+ ARM 2/3 Emulation (26 bit address bus, no separate PSRs)
Todo:
- Timing - Currently very approximated, nothing relies on proper timing so far.
@@ -212,16 +212,10 @@ enum
COND_NV /* never */
};
-#define LSL(v,s) ((v) << (s))
-#define LSR(v,s) ((v) >> (s))
-#define ROL(v,s) (LSL((v),(s)) | (LSR((v),32u - (s))))
-#define ROR(v,s) (LSR((v),(s)) | (LSL((v),32u - (s))))
-
/***************************************************************************/
-DEFINE_DEVICE_TYPE(ARM, arm_cpu_device, "arm_le", "ARM (little)")
-DEFINE_DEVICE_TYPE(ARM_BE, arm_be_cpu_device, "arm_be", "ARM (big)")
+DEFINE_DEVICE_TYPE(ARM, arm_cpu_device, "arm_cpu", "ARM")
device_memory_interface::space_config_vector arm_cpu_device::memory_space_config() const
@@ -232,27 +226,20 @@ device_memory_interface::space_config_vector arm_cpu_device::memory_space_config
}
arm_cpu_device::arm_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm_cpu_device(mconfig, ARM, tag, owner, clock, ENDIANNESS_LITTLE)
+ : arm_cpu_device(mconfig, ARM, tag, owner, clock)
{
}
-arm_cpu_device::arm_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness)
+arm_cpu_device::arm_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
: cpu_device(mconfig, type, tag, owner, clock)
- , m_program_config("program", endianness, 32, 26, 0)
- , m_endian(endianness)
+ , m_program_config("program", ENDIANNESS_LITTLE, 32, 26, 0)
, m_copro_type(copro_type::UNKNOWN_CP15)
{
std::fill(std::begin(m_sArmRegister), std::end(m_sArmRegister), 0);
}
-arm_be_cpu_device::arm_be_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : arm_cpu_device(mconfig, ARM_BE, tag, owner, clock, ENDIANNESS_BIG)
-{
-}
-
-
void arm_cpu_device::cpu_write32( int addr, uint32_t data )
{
@@ -342,7 +329,7 @@ void arm_cpu_device::execute_run()
/* load instruction */
uint32_t pc = R15;
- uint32_t insn = m_pr32( pc & ADDRESS_MASK );
+ uint32_t insn = m_cache.read_dword( pc & ADDRESS_MASK );
switch (insn >> INSN_COND_SHIFT)
{
@@ -447,10 +434,10 @@ void arm_cpu_device::arm_check_irq_state()
{
uint32_t pc = R15+4; /* save old pc (already incremented in pipeline) */;
- /* Exception priorities (from ARM6, not specifically ARM2/3):
+ /* Exception priorities for ARM2/3:
Reset
- Data abort
+ Data abort or address exception
FIRQ
IRQ
Prefetch abort
@@ -496,16 +483,7 @@ void arm_cpu_device::device_start()
{
m_program = &space(AS_PROGRAM);
- if(m_program->endianness() == ENDIANNESS_LITTLE)
- {
- m_program->cache(m_cachele);
- m_pr32 = [this](offs_t address) -> u32 { return m_cachele.read_dword(address); };
- }
- else
- {
- m_program->cache(m_cachebe);
- m_pr32 = [this](offs_t address) -> u32 { return m_cachebe.read_dword(address); };
- }
+ m_program->cache(m_cache);
save_item(NAME(m_sArmRegister));
save_item(NAME(m_coproRegister));
@@ -813,7 +791,7 @@ void arm_cpu_device::HandleALU( uint32_t insn )
by = (insn & INSN_OP2_ROTATE) >> INSN_OP2_ROTATE_SHIFT;
if (by)
{
- op2 = ROR(insn & INSN_OP2_IMM, by << 1);
+ op2 = rotr_32(insn & INSN_OP2_IMM, by << 1);
sc = op2 & SIGN_BIT;
}
else
@@ -1329,7 +1307,7 @@ uint32_t arm_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
{
*pCarry = k ? (rm & (1 << (32 - k))) : (R15 & C_MASK);
}
- return k ? LSL(rm, k) : rm;
+ return rm << k;
case 1: /* LSR */
if (k == 0 || k == 32)
@@ -1345,7 +1323,7 @@ uint32_t arm_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
else
{
if (pCarry) *pCarry = (rm & (1 << (k - 1)));
- return LSR(rm, k);
+ return rm >> k;
}
case 2: /* ASR */
@@ -1357,9 +1335,9 @@ uint32_t arm_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
else
{
if (rm & SIGN_BIT)
- return LSR(rm, k) | (0xffffffffu << (32 - k));
+ return (rm >> k) | (0xffffffffu << (32 - k));
else
- return LSR(rm, k);
+ return (rm >> k);
}
case 3: /* ROR and RRX */
@@ -1367,12 +1345,12 @@ uint32_t arm_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
{
while (k > 32) k -= 32;
if (pCarry) *pCarry = rm & (1 << (k - 1));
- return ROR(rm, k);
+ return rotr_32(rm, k);
}
else
{
if (pCarry) *pCarry = (rm & 1);
- return LSR(rm, 1) | ((R15 & C_MASK) << 2);
+ return (rm >> 1) | ((R15 & C_MASK) << 2);
}
}
diff --git a/src/devices/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h
index bfa16724463..aeafa3c0d7b 100644
--- a/src/devices/cpu/arm/arm.h
+++ b/src/devices/cpu/arm/arm.h
@@ -41,7 +41,7 @@ protected:
ARM32_IR13, ARM32_IR14, ARM32_SR13, ARM32_SR14
};
- arm_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, endianness_t endianness);
+ arm_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
// device-level overrides
virtual void device_start() override;
@@ -64,8 +64,7 @@ protected:
virtual std::unique_ptr<util::disasm_interface> create_disassembler() override;
address_space_config m_program_config;
- memory_access<26, 2, 0, ENDIANNESS_LITTLE>::cache m_cachele;
- memory_access<26, 2, 0, ENDIANNESS_BIG>::cache m_cachebe;
+ memory_access<26, 2, 0, ENDIANNESS_LITTLE>::cache m_cache;
int m_icount;
uint32_t m_sArmRegister[27];
@@ -73,8 +72,6 @@ protected:
uint8_t m_pendingIrq;
uint8_t m_pendingFiq;
address_space *m_program;
- std::function<u32 (offs_t)> m_pr32;
- endianness_t m_endian;
copro_type m_copro_type;
void cpu_write32( int addr, uint32_t data );
@@ -103,15 +100,6 @@ protected:
};
-class arm_be_cpu_device : public arm_cpu_device
-{
-public:
- // construction/destruction
- arm_be_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-};
-
-
-DECLARE_DEVICE_TYPE(ARM, arm_cpu_device)
-DECLARE_DEVICE_TYPE(ARM_BE, arm_be_cpu_device)
+DECLARE_DEVICE_TYPE(ARM, arm_cpu_device)
#endif // MAME_CPU_ARM_ARM_H
diff --git a/src/devices/cpu/arm/armdasm.cpp b/src/devices/cpu/arm/armdasm.cpp
index 9034d3ac6f3..8da32648630 100644
--- a/src/devices/cpu/arm/armdasm.cpp
+++ b/src/devices/cpu/arm/armdasm.cpp
@@ -14,7 +14,7 @@ uint32_t arm_disassembler::ExtractImmediateOperand(uint32_t opcode) const
// rrrrbbbbbbbb
uint32_t imm = opcode & 0xff;
uint8_t r = ((opcode >> 8) & 0xf) * 2;
- return (imm >> r) | (r ? (imm << (32 - r)) : 0);
+ return rotr_32(imm, r);
}
void arm_disassembler::WriteDataProcessingOperand(std::ostream &stream, uint32_t opcode, bool printOp0, bool printOp1, offs_t pc) const
diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp
index 45f2a6eb67a..abdf3d98b58 100644
--- a/src/devices/cpu/arm7/arm7.cpp
+++ b/src/devices/cpu/arm7/arm7.cpp
@@ -2132,8 +2132,7 @@ uint32_t arm946es_cpu_device::arm7_cpu_read32(uint32_t addr)
if (addr & 3)
{
uint32_t *wp = (uint32_t *)&ITCM[(addr & ~3)&0x7fff];
- result = *wp;
- result = (result >> (8 * (addr & 3))) | (result << (32 - (8 * (addr & 3))));
+ result = rotr_32(*wp, 8 * (addr & 3));
}
else
{
@@ -2146,8 +2145,7 @@ uint32_t arm946es_cpu_device::arm7_cpu_read32(uint32_t addr)
if (addr & 3)
{
uint32_t *wp = (uint32_t *)&DTCM[(addr & ~3)&0x3fff];
- result = *wp;
- result = (result >> (8 * (addr & 3))) | (result << (32 - (8 * (addr & 3))));
+ result = rotr_32(*wp, 8 * (addr & 3));
}
else
{
@@ -2159,8 +2157,7 @@ uint32_t arm946es_cpu_device::arm7_cpu_read32(uint32_t addr)
{
if (addr & 3)
{
- result = m_program->read_dword(addr & ~3);
- result = (result >> (8 * (addr & 3))) | (result << (32 - (8 * (addr & 3))));
+ result = rotr_32(m_program->read_dword(addr & ~3), 8 * (addr & 3));
}
else
{
@@ -2330,8 +2327,7 @@ uint32_t arm7_cpu_device::arm7_cpu_read32(uint32_t addr)
if (addr & 3)
{
- result = m_program->read_dword(addr & ~3);
- result = (result >> (8 * (addr & 3))) | (result << (32 - (8 * (addr & 3))));
+ result = rotr_32(m_program->read_dword(addr & ~3), 8 * (addr & 3));
}
else
{
diff --git a/src/devices/cpu/arm7/arm7dasm.cpp b/src/devices/cpu/arm7/arm7dasm.cpp
index 3a5ec37a7f7..7de800bb9c8 100644
--- a/src/devices/cpu/arm7/arm7dasm.cpp
+++ b/src/devices/cpu/arm7/arm7dasm.cpp
@@ -96,7 +96,7 @@ uint32_t arm7_disassembler::ExtractImmediateOperand( uint32_t opcode )
/* rrrrbbbbbbbb */
uint32_t imm = opcode&0xff;
int r = ((opcode>>8)&0xf)*2;
- return (imm>>r)|(r?(imm<<(32-r)):0);
+ return rotr_32(imm, r);
}
void arm7_disassembler::WriteShiftCount( std::ostream &stream, uint32_t opcode )
diff --git a/src/devices/cpu/arm7/arm7help.h b/src/devices/cpu/arm7/arm7help.h
index a62722accfa..544cbbbd269 100644
--- a/src/devices/cpu/arm7/arm7help.h
+++ b/src/devices/cpu/arm7/arm7help.h
@@ -160,8 +160,3 @@
#define WRITE32(addr,data) arm7_cpu_write32(addr,data)
#define PTR_READ32 &arm7_cpu_read32
#define PTR_WRITE32 &arm7_cpu_write32
-
-#define LSL(v, s) ((v) << (s))
-#define LSR(v, s) ((v) >> (s))
-#define ROL(v, s) (LSL((v), (s)) | (LSR((v), 32u - (s))))
-#define ROR(v, s) (LSR((v), (s)) | (LSL((v), 32u - (s))))
diff --git a/src/devices/cpu/arm7/arm7ops.cpp b/src/devices/cpu/arm7/arm7ops.cpp
index 9737ce8bede..b1e7d2b2400 100644
--- a/src/devices/cpu/arm7/arm7ops.cpp
+++ b/src/devices/cpu/arm7/arm7ops.cpp
@@ -102,7 +102,7 @@ uint32_t arm7_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
// LSL (0,31) = Result shifted, least significant bit is in carry out
*pCarry = k ? (rm & (1 << (32 - k))) : (GET_CPSR & C_MASK);
}
- return k ? LSL(rm, k) : rm;
+ return k ? (rm << k) : rm;
}
case 1: /* LSR */
@@ -122,7 +122,7 @@ uint32_t arm7_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
{
if (pCarry)
*pCarry = (rm & (1 << (k - 1)));
- return LSR(rm, k);
+ return rm >> k;
}
case 2: /* ASR */
@@ -136,9 +136,9 @@ uint32_t arm7_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
else
{
if (rm & SIGN_BIT)
- return LSR(rm, k) | (0xffffffffu << (32 - k));
+ return (rm >> k) | (0xffffffffu << (32 - k));
else
- return LSR(rm, k);
+ return rm >> k;
}
case 3: /* ROR and RRX */
@@ -149,7 +149,7 @@ uint32_t arm7_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
{
if (pCarry)
*pCarry = rm & (1 << (k - 1));
- return ROR(rm, k);
+ return rotr_32(rm, k);
}
else
{
@@ -163,7 +163,7 @@ uint32_t arm7_cpu_device::decodeShift(uint32_t insn, uint32_t *pCarry)
/* RRX */
if (pCarry)
*pCarry = (rm & 1);
- return LSR(rm, 1) | ((GET_CPSR & C_MASK) << 2);
+ return (rm >> 1) | ((GET_CPSR & C_MASK) << 2);
}
}
@@ -857,7 +857,7 @@ void arm7_cpu_device::HandlePSRTransfer(uint32_t insn)
// Value can be specified for a Right Rotate, 2x the value specified.
int by = (insn & INSN_OP2_ROTATE) >> INSN_OP2_ROTATE_SHIFT;
if (by)
- val = ROR(insn & INSN_OP2_IMM, by << 1);
+ val = rotr_32(insn & INSN_OP2_IMM, by << 1);
else
val = insn & INSN_OP2_IMM;
}
@@ -967,7 +967,7 @@ void arm7_cpu_device::HandleALU(uint32_t insn)
by = (insn & INSN_OP2_ROTATE) >> INSN_OP2_ROTATE_SHIFT;
if (by)
{
- op2 = ROR(insn & INSN_OP2_IMM, by << 1);
+ op2 = rotr_32(insn & INSN_OP2_IMM, by << 1);
sc = op2 & SIGN_BIT;
}
else
diff --git a/src/devices/cpu/arm7/arm7thmb.cpp b/src/devices/cpu/arm7/arm7thmb.cpp
index a916e767868..47a0bcfe2d1 100644
--- a/src/devices/cpu/arm7/arm7thmb.cpp
+++ b/src/devices/cpu/arm7/arm7thmb.cpp
@@ -658,10 +658,9 @@ void arm7_cpu_device::tg04_00_07(uint32_t pc, uint32_t op) /* ROR Rd, Rs */
const uint32_t rd = (op & THUMB_ADDSUB_RD) >> THUMB_ADDSUB_RD_SHIFT;
const uint32_t rrd = GetRegister(rd);
const uint32_t imm = GetRegister(rs) & 0xff;
- const uint32_t imm_masked = imm & 0x1f;
if (imm > 0)
{
- SetRegister(rd, (rrd >> imm_masked) | (rrd << (32 - imm_masked)));
+ SetRegister(rd, rotr_32(rrd, imm));
if (rrd & (1 << ((imm - 1) & 0x1f)))
{
set_cpsr(GET_CPSR | C_MASK);
diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp
index 43e4008b85f..045819aa4ae 100644
--- a/src/devices/cpu/asap/asap.cpp
+++ b/src/devices/cpu/asap/asap.cpp
@@ -1557,25 +1557,19 @@ void asap_device::ashl_c0()
void asap_device::rotl()
{
- uint32_t src1 = SRC1VAL;
- uint32_t src2 = SRC2VAL & 31;
- DSTVAL = (src1 << src2) | (src1 >> (32 - src2));
+ DSTVAL = rotl_32(SRC1VAL, SRC2VAL);
}
void asap_device::rotl_c()
{
- uint32_t src1 = SRC1VAL;
- uint32_t src2 = SRC2VAL & 31;
- uint32_t dst = (src1 << src2) | (src1 >> (32 - src2));
+ uint32_t dst = rotl_32(SRC1VAL, SRC2VAL);
SET_ZN(dst);
DSTVAL = dst;
}
void asap_device::rotl_c0()
{
- uint32_t src1 = SRC1VAL;
- uint32_t src2 = SRC2VAL & 31;
- uint32_t dst = (src1 << src2) | (src1 >> (32 - src2));
+ uint32_t dst = rotl_32(SRC1VAL, SRC2VAL);
SET_ZN(dst);
}
diff --git a/src/devices/cpu/clipper/clipper.cpp b/src/devices/cpu/clipper/clipper.cpp
index e59a20ffc45..e310b66ea62 100644
--- a/src/devices/cpu/clipper/clipper.cpp
+++ b/src/devices/cpu/clipper/clipper.cpp
@@ -90,31 +90,6 @@ clipper_device::clipper_device(const machine_config &mconfig, device_type type,
{
}
-// rotate helpers to replace MSVC intrinsics
-inline u32 rotl32(u32 x, u8 shift)
-{
- shift &= 31;
- return (x << shift) | (x >> ((32 - shift) & 31));
-}
-
-inline u32 rotr32(u32 x, u8 shift)
-{
- shift &= 31;
- return (x >> shift) | (x << ((32 - shift) & 31));
-}
-
-inline u64 rotl64(u64 x, u8 shift)
-{
- shift &= 63;
- return (x << shift) | (x >> ((64 - shift) & 63));
-}
-
-inline u64 rotr64(u64 x, u8 shift)
-{
- shift &= 63;
- return (x >> shift) | (x << ((64 - shift) & 63));
-}
-
void clipper_device::device_start()
{
// configure the cammu address spaces
@@ -693,18 +668,18 @@ void clipper_device::execute_instruction()
case 0x34:
// rotw: rotate word
if (!BIT31(m_r[R1]))
- m_r[R2] = rotl32(m_r[R2], m_r[R1]);
+ m_r[R2] = rotl_32(m_r[R2], m_r[R1]);
else
- m_r[R2] = rotr32(m_r[R2], -m_r[R1]);
+ m_r[R2] = rotr_32(m_r[R2], -m_r[R1]);
// FLAGS: 00ZN
FLAGS(0, 0, m_r[R2] == 0, BIT31(m_r[R2]));
break;
case 0x35:
// rotl: rotate longword
if (!BIT31(m_r[R1]))
- set_64(R2, rotl64(get_64(R2), m_r[R1]));
+ set_64(R2, rotl_64(get_64(R2), m_r[R1]));
else
- set_64(R2, rotr64(get_64(R2), -m_r[R1]));
+ set_64(R2, rotr_64(get_64(R2), -m_r[R1]));
// FLAGS: 00ZN
FLAGS(0, 0, get_64(R2) == 0, BIT63(get_64(R2)));
break;
@@ -772,9 +747,9 @@ void clipper_device::execute_instruction()
case 0x3c:
// roti: rotate immediate
if (!BIT31(m_info.imm))
- m_r[R2] = rotl32(m_r[R2], m_info.imm);
+ m_r[R2] = rotl_32(m_r[R2], m_info.imm);
else
- m_r[R2] = rotr32(m_r[R2], -m_info.imm);
+ m_r[R2] = rotr_32(m_r[R2], -m_info.imm);
FLAGS(0, 0, m_r[R2] == 0, BIT31(m_r[R2]));
// FLAGS: 00ZN
// TRAPS: I
@@ -782,9 +757,9 @@ void clipper_device::execute_instruction()
case 0x3d:
// rotli: rotate longword immediate
if (!BIT31(m_info.imm))
- set_64(R2, rotl64(get_64(R2), m_info.imm));
+ set_64(R2, rotl_64(get_64(R2), m_info.imm));
else
- set_64(R2, rotr64(get_64(R2), -m_info.imm));
+ set_64(R2, rotr_64(get_64(R2), -m_info.imm));
FLAGS(0, 0, get_64(R2) == 0, BIT63(get_64(R2)));
// FLAGS: 00ZN
// TRAPS: I
@@ -1268,7 +1243,7 @@ void clipper_device::execute_instruction()
m_r[0]--;
m_r[1]++;
- m_r[2] = rotr32(m_r[2], 8);
+ m_r[2] = rotr_32(m_r[2], 8);
}
// TRAPS: P,W
break;
diff --git a/src/devices/cpu/drcbec.cpp b/src/devices/cpu/drcbec.cpp
index e6cb5e533e5..0421693b5dc 100644
--- a/src/devices/cpu/drcbec.cpp
+++ b/src/devices/cpu/drcbec.cpp
@@ -864,25 +864,21 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_ROLAND, 4, 0): // ROLAND dst,src,count,mask[,f]
- shift = PARAM2 & 31;
- PARAM0 = ((PARAM1 << shift) | (PARAM1 >> (32 - shift))) & PARAM3;
+ PARAM0 = rotl_32(PARAM1, PARAM2) & PARAM3;
break;
case MAKE_OPCODE_SHORT(OP_ROLAND, 4, 1):
- shift = PARAM2 & 31;
- temp32 = ((PARAM1 << shift) | (PARAM1 >> (32 - shift))) & PARAM3;
+ temp32 = rotl_32(PARAM1, PARAM2) & PARAM3;
flags = FLAGS32_NZ(temp32);
PARAM0 = temp32;
break;
case MAKE_OPCODE_SHORT(OP_ROLINS, 4, 0): // ROLINS dst,src,count,mask[,f]
- shift = PARAM2 & 31;
- PARAM0 = (PARAM0 & ~PARAM3) | (((PARAM1 << shift) | (PARAM1 >> (32 - shift))) & PARAM3);
+ PARAM0 = (PARAM0 & ~PARAM3) | (rotl_32(PARAM1, PARAM2) & PARAM3);
break;
case MAKE_OPCODE_SHORT(OP_ROLINS, 4, 1):
- shift = PARAM2 & 31;
- temp32 = (PARAM0 & ~PARAM3) | (((PARAM1 << shift) | (PARAM1 >> (32 - shift))) & PARAM3);
+ temp32 = (PARAM0 & ~PARAM3) | (rotl_32(PARAM1, PARAM2) & PARAM3);
flags = FLAGS32_NZ(temp32);
PARAM0 = temp32;
break;
@@ -1138,13 +1134,12 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_ROL, 4, 0): // ROL dst,src,count[,f]
- shift = PARAM2 & 31;
- PARAM0 = (PARAM1 << shift) | (PARAM1 >> ((32 - shift) & 31));
+ PARAM0 = rotl_32(PARAM1, PARAM2);
break;
case MAKE_OPCODE_SHORT(OP_ROL, 4, 1):
shift = PARAM2 & 31;
- temp32 = (PARAM1 << shift) | (PARAM1 >> ((32 - shift) & 31));
+ temp32 = rotl_32(PARAM1, shift);
if (shift != 0)
{
flags = FLAGS32_NZ(temp32);
@@ -1175,13 +1170,12 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_ROR, 4, 0): // ROR dst,src,count[,f]
- shift = PARAM2 & 31;
- PARAM0 = (PARAM1 >> shift) | (PARAM1 << ((32 - shift) & 31));
+ PARAM0 = rotr_32(PARAM1, PARAM2);
break;
case MAKE_OPCODE_SHORT(OP_ROR, 4, 1):
shift = PARAM2 & 31;
- temp32 = (PARAM1 >> shift) | (PARAM1 << ((32 - shift) & 31));
+ temp32 = rotr_32(PARAM1, shift);
flags = FLAGS32_NZ(temp32);
if (shift != 0) flags |= (PARAM1 >> (shift - 1)) & FLAG_C;
PARAM0 = temp32;
@@ -1507,25 +1501,21 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_ROLAND, 8, 0): // DROLAND dst,src,count,mask[,f]
- shift = DPARAM2 & 63;
- DPARAM0 = ((DPARAM1 << shift) | (DPARAM1 >> (64 - shift))) & DPARAM3;
+ DPARAM0 = rotl_64(DPARAM1, DPARAM2) & DPARAM3;
break;
case MAKE_OPCODE_SHORT(OP_ROLAND, 8, 1):
- shift = DPARAM2 & 63;
- temp64 = ((DPARAM1 << shift) | (DPARAM1 >> (64 - shift))) & DPARAM3;
+ temp64 = rotl_64(DPARAM1, DPARAM2) & DPARAM3;
flags = FLAGS64_NZ(temp64);
DPARAM0 = temp64;
break;
case MAKE_OPCODE_SHORT(OP_ROLINS, 8, 0): // DROLINS dst,src,count,mask[,f]
- shift = DPARAM2 & 63;
- DPARAM0 = (DPARAM0 & ~DPARAM3) | (((DPARAM1 << shift) | (DPARAM1 >> (64 - shift))) & DPARAM3);
+ DPARAM0 = (DPARAM0 & ~DPARAM3) | (rotl_64(DPARAM1, DPARAM2) & DPARAM3);
break;
case MAKE_OPCODE_SHORT(OP_ROLINS, 8, 1):
- shift = DPARAM2 & 63;
- temp64 = (DPARAM0 & ~DPARAM3) | (((DPARAM1 << shift) | (DPARAM1 >> (64 - shift))) & DPARAM3);
+ temp64 = (DPARAM0 & ~DPARAM3) | (rotl_64(DPARAM1, DPARAM2) & DPARAM3);
flags = FLAGS64_NZ(temp64);
DPARAM0 = temp64;
break;
@@ -1742,13 +1732,12 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_ROL, 8, 0): // DROL dst,src,count[,f]
- shift = DPARAM2 & 63;
- DPARAM0 = (DPARAM1 << shift) | (DPARAM1 >> ((64 - shift) & 63));
+ DPARAM0 = rotl_64(DPARAM1, DPARAM2);
break;
case MAKE_OPCODE_SHORT(OP_ROL, 8, 1):
shift = DPARAM2 & 63;
- temp64 = (DPARAM1 << shift) | (DPARAM1 >> ((64 - shift) & 63));
+ temp64 = rotl_64(DPARAM1, shift);
flags = FLAGS64_NZ(temp64);
if (shift != 0) flags |= ((DPARAM1 << (shift - 1)) >> 63) & FLAG_C;
DPARAM0 = temp64;
@@ -1776,13 +1765,12 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_ROR, 8, 0): // DROR dst,src,count[,f]
- shift = DPARAM2 & 63;
- DPARAM0 = (DPARAM1 >> shift) | (DPARAM1 << ((64 - shift) & 63));
+ DPARAM0 = rotr_64(DPARAM1, DPARAM2);
break;
case MAKE_OPCODE_SHORT(OP_ROR, 8, 1):
shift = DPARAM2 & 63;
- temp64 = (DPARAM1 >> shift) | (DPARAM1 << ((64 - shift) & 63));
+ temp64 = rotr_64(DPARAM1, shift);
flags = FLAGS64_NZ(temp64);
if (shift != 0) flags |= (DPARAM1 >> (shift - 1)) & FLAG_C;
DPARAM0 = temp64;
diff --git a/src/devices/cpu/e132xs/e132xsop.hxx b/src/devices/cpu/e132xs/e132xsop.hxx
index e99f86d3ec3..953e82f4150 100644
--- a/src/devices/cpu/e132xs/e132xsop.hxx
+++ b/src/devices/cpu/e132xs/e132xsop.hxx
@@ -1513,8 +1513,7 @@ void hyperstone_device::hyperstone_rol()
const uint32_t mask = (uint32_t)(0xffffffff00000000ULL >> n);
#endif
- if (n)
- val = (val << n) | (val >> (32 - n));
+ val = rotl_32(val, n);
#ifdef MISSIONCRAFT_FLAGS
SR &= ~(V_MASK | Z_MASK | C_MASK | N_MASK);
@@ -2213,11 +2212,6 @@ void hyperstone_device::hyperstone_mul()
m_core->icount -= 3 << m_core->clck_scale;
}
-static inline int32_t mul_16x16(int16_t halfd, int16_t halfs)
-{
- return (int32_t)halfd * (int32_t)halfs;
-}
-
void hyperstone_device::hyperstone_extend()
{
m_instruction_length = (2<<19);
diff --git a/src/devices/cpu/i386/i386op32.hxx b/src/devices/cpu/i386/i386op32.hxx
index b81545ced81..4b101012ec8 100644
--- a/src/devices/cpu/i386/i386op32.hxx
+++ b/src/devices/cpu/i386/i386op32.hxx
@@ -64,15 +64,13 @@ uint32_t i386_device::i386_shift_rotate32(uint8_t modrm, uint32_t value, uint8_t
switch( (modrm >> 3) & 0x7 )
{
case 0: /* ROL rm32, i8 */
- dst = ((src & ((uint32_t)0xffffffff >> shift)) << shift) |
- ((src & ((uint32_t)0xffffffff << (32-shift))) >> (32-shift));
+ dst = rotl_32(src, shift);
m_CF = dst & 0x1;
m_OF = (dst & 1) ^ (dst >> 31);
CYCLES_RM(modrm, CYCLES_ROTATE_REG, CYCLES_ROTATE_MEM);
break;
case 1: /* ROR rm32, i8 */
- dst = ((src & ((uint32_t)0xffffffff << shift)) >> shift) |
- ((src & ((uint32_t)0xffffffff >> (32-shift))) << (32-shift));
+ dst = rotr_32(src, shift);
m_CF = (dst >> 31) & 0x1;
m_OF = ((dst >> 31) ^ (dst >> 30)) & 1;
CYCLES_RM(modrm, CYCLES_ROTATE_REG, CYCLES_ROTATE_MEM);
diff --git a/src/devices/cpu/jaguar/jaguar.cpp b/src/devices/cpu/jaguar/jaguar.cpp
index ade6aea525c..84d5a999dbb 100644
--- a/src/devices/cpu/jaguar/jaguar.cpp
+++ b/src/devices/cpu/jaguar/jaguar.cpp
@@ -1014,7 +1014,7 @@ void jaguar_cpu_device::ror_rn_rn(u16 op)
const u8 dreg = op & 31;
const u32 r1 = m_r[(op >> 5) & 31] & 31;
const u32 r2 = m_r[dreg];
- const u32 res = (r2 >> r1) | (r2 << (32 - r1));
+ const u32 res = rotr_32(r2, r1);
m_r[dreg] = res;
CLR_ZNC(); SET_ZN(res); m_flags |= (r2 >> 30) & 2;
}
@@ -1024,7 +1024,7 @@ void jaguar_cpu_device::rorq_n_rn(u16 op)
const u8 dreg = op & 31;
const u32 r1 = convert_zero[(op >> 5) & 31];
const u32 r2 = m_r[dreg];
- const u32 res = (r2 >> r1) | (r2 << (32 - r1));
+ const u32 res = rotr_32(r2, r1);
m_r[dreg] = res;
CLR_ZNC(); SET_ZN(res); m_flags |= (r2 >> 30) & 2;
}
diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp
index de6a2dd391f..ce5e2db86e9 100644
--- a/src/devices/cpu/m68000/m68kcpu.cpp
+++ b/src/devices/cpu/m68000/m68kcpu.cpp
@@ -1415,7 +1415,7 @@ void m68000_base_device::init32(address_space &space, address_space &ospace)
case 3:
m_program32.write_dword(address - 3, dword_from_unaligned_word((data & 0xffff0000U) >> 16), 0x000000ff);
- m_program32.write_dword(address + 1, (data & 0x00ffffff) << 8 | (data & 0xff000000U) >> 24, 0xffffff00U);
+ m_program32.write_dword(address + 1, rotl_32(data, 8), 0xffffff00U);
break;
}
};
@@ -1585,7 +1585,7 @@ void m68000_base_device::init32mmu(address_space &space, address_space &ospace)
return;
}
m_program32.write_dword(address0 - 3, dword_from_unaligned_word((data & 0xffff0000U) >> 16), 0x000000ff);
- m_program32.write_dword(address1, (data & 0x00ffffff) << 8 | (data & 0xff000000U) >> 24, 0xffffff00U);
+ m_program32.write_dword(address1, rotl_32(data, 8), 0xffffff00U);
break;
}
}
diff --git a/src/devices/cpu/m88000/m88000.cpp b/src/devices/cpu/m88000/m88000.cpp
index 57cdfa6fbb2..f3921bc8667 100644
--- a/src/devices/cpu/m88000/m88000.cpp
+++ b/src/devices/cpu/m88000/m88000.cpp
@@ -615,7 +615,7 @@ void mc88100_device::execute(u32 const inst)
{
unsigned const offset = inst & 31;
- m_r[D] = (m_r[S1] << (32 - offset)) | (m_r[S1] >> offset);
+ m_r[D] = rotr_32(m_r[S1], offset);
}
break;
@@ -988,11 +988,7 @@ void mc88100_device::execute(u32 const inst)
}
break;
case 0x540: // rot: rotate (register)
- {
- unsigned const offset = m_r[S2] & 31;
-
- m_r[D] = (m_r[S1] << (32 - offset)) | (m_r[S1] >> offset);
- }
+ m_r[D] = rotr_32(m_r[S1], m_r[S2]);
break;
case 0x740: // ff1: find first bit set
{
diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp
index 517688c226b..4f4d697a900 100644
--- a/src/devices/cpu/scudsp/scudsp.cpp
+++ b/src/devices/cpu/scudsp/scudsp.cpp
@@ -498,7 +498,7 @@ void scudsp_cpu_device::scudsp_operation(uint32_t opcode)
/* Unrecognized opcode */
break;
case 0xF: /* RL8 */
- i3 = ((m_acl.si << 8) & 0xffffff00) | ((m_acl.si >> 24) & 0xff);
+ i3 = rotl_32(m_acl.si, 8);
m_alu = i3;
SET_Z( i3 == 0 );
SET_S( i3 < 0 );
diff --git a/src/devices/cpu/tms32082/mp_ops.cpp b/src/devices/cpu/tms32082/mp_ops.cpp
index 867a5ecf54b..5a81b500b13 100644
--- a/src/devices/cpu/tms32082/mp_ops.cpp
+++ b/src/devices/cpu/tms32082/mp_ops.cpp
@@ -21,9 +21,6 @@
#define OP_P2() ((m_ir >> 7) & 0x3)
#define OP_ACC() ((m_ir >> 15) & 0x2) | ((m_ir >> 11) & 1)
-#define ROTATE_L(x, r) ((x << r) | (x >> (32-r)))
-#define ROTATE_R(x, r) ((x >> r) | (x << (32-r)))
-
bool tms32082_mp_device::test_condition(int condition, uint32_t value)
@@ -246,11 +243,11 @@ void tms32082_mp_device::execute_short_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
}
if (rd)
@@ -275,14 +272,14 @@ void tms32082_mp_device::execute_short_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
// sign extend
if (res & (1 << (end - 1)))
res |= 0xffffffff << end;
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
// sign extend makes no sense to left..
}
@@ -309,11 +306,11 @@ void tms32082_mp_device::execute_short_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
}
if (rd)
@@ -339,11 +336,11 @@ void tms32082_mp_device::execute_short_imm()
uint32_t res;
if (r) // right
{
- res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
+ res = (rotr_32(source, rot) & compmask) | (m_reg[rd] & ~compmask);
}
else // left
{
- res = (ROTATE_L(source, rot) & compmask) | (m_reg[rd] & ~compmask);
+ res = (rotl_32(source, rot) & compmask) | (m_reg[rd] & ~compmask);
}
if (rd)
@@ -369,14 +366,14 @@ void tms32082_mp_device::execute_short_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
// sign extend
if (res & (1 << (31 - rot)))
res |= 0xffffffff << (31 - rot);
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
// sign extend makes no sense to left..
}
@@ -403,11 +400,11 @@ void tms32082_mp_device::execute_short_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
}
if (rd)
@@ -433,11 +430,11 @@ void tms32082_mp_device::execute_short_imm()
uint32_t res;
if (r) // right
{
- res = (ROTATE_R(source, rot) & compmask) | (m_reg[rd] & ~compmask);
+ res = (rotr_32(source, rot) & compmask) | (m_reg[rd] & ~compmask);
}
else // left
{
- res = (ROTATE_L(source, rot) & compmask) | (m_reg[rd] & ~compmask);
+ res = (rotl_32(source, rot) & compmask) | (m_reg[rd] & ~compmask);
}
if (rd)
@@ -890,11 +887,11 @@ void tms32082_mp_device::execute_reg_long_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
}
if (rd)
@@ -920,14 +917,14 @@ void tms32082_mp_device::execute_reg_long_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
// sign extend
if (res & (1 << (31 - rot)))
res |= 0xffffffff << (31 - rot);
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
}
if (rd)
@@ -953,11 +950,11 @@ void tms32082_mp_device::execute_reg_long_imm()
uint32_t res;
if (r) // right
{
- res = ROTATE_R(source, rot) & compmask;
+ res = rotr_32(source, rot) & compmask;
}
else // left
{
- res = ROTATE_L(source, rot) & compmask;
+ res = rotl_32(source, rot) & compmask;
}
if (rd)
diff --git a/src/devices/cpu/uml.cpp b/src/devices/cpu/uml.cpp
index 6a81d63400e..30dea00f6b2 100644
--- a/src/devices/cpu/uml.cpp
+++ b/src/devices/cpu/uml.cpp
@@ -220,33 +220,6 @@ opcode_info const instruction::s_opcode_info_table[OP_MAX] =
//**************************************************************************
-// INLINE FUNCTIONS
-//**************************************************************************
-
-//-------------------------------------------------
-// rol32 - perform a 32-bit left rotate
-//-------------------------------------------------
-
-inline u32 rol32(u32 source, u8 count)
-{
- count &= 31;
- return (source << count) | (source >> (32 - count));
-}
-
-
-//-------------------------------------------------
-// rol64 - perform a 64-bit left rotate
-//-------------------------------------------------
-
-inline u64 rol64(u64 source, u8 count)
-{
- count &= 63;
- return (source << count) | (source >> (64 - count));
-}
-
-
-
-//**************************************************************************
// UML CODE HANDLE
//**************************************************************************
@@ -462,9 +435,9 @@ void uml::instruction::simplify()
{
assert(m_size == 4 || m_size == 8);
if (m_size == 4)
- convert_to_mov_immediate(rol32(m_param[1].immediate(), m_param[2].immediate()) & m_param[3].immediate());
+ convert_to_mov_immediate(rotl_32(m_param[1].immediate(), m_param[2].immediate()) & m_param[3].immediate());
else
- convert_to_mov_immediate(rol64(m_param[1].immediate(), m_param[2].immediate()) & m_param[3].immediate());
+ convert_to_mov_immediate(rotl_64(m_param[1].immediate(), m_param[2].immediate()) & m_param[3].immediate());
}
else if (m_param[2].is_immediate_value(0))
{
@@ -687,9 +660,9 @@ void uml::instruction::simplify()
if (m_param[1].is_immediate() && m_param[2].is_immediate())
{
if (m_size == 4)
- convert_to_mov_immediate(rol32(m_param[1].immediate(), m_param[2].immediate()));
+ convert_to_mov_immediate(rotl_32(m_param[1].immediate(), m_param[2].immediate()));
else if (m_size == 8)
- convert_to_mov_immediate(rol64(m_param[1].immediate(), m_param[2].immediate()));
+ convert_to_mov_immediate(rotl_64(m_param[1].immediate(), m_param[2].immediate()));
}
else if (m_param[2].is_immediate_value(0))
convert_to_mov_param(1);
@@ -700,9 +673,9 @@ void uml::instruction::simplify()
if (m_param[1].is_immediate() && m_param[2].is_immediate())
{
if (m_size == 4)
- convert_to_mov_immediate(rol32(m_param[1].immediate(), 32 - m_param[2].immediate()));
+ convert_to_mov_immediate(rotr_32(m_param[1].immediate(), m_param[2].immediate()));
else if (m_size == 8)
- convert_to_mov_immediate(rol64(m_param[1].immediate(), 64 - m_param[2].immediate()));
+ convert_to_mov_immediate(rotr_64(m_param[1].immediate(), m_param[2].immediate()));
}
else if (m_param[2].is_immediate_value(0))
convert_to_mov_param(1);
diff --git a/src/devices/machine/acorn_vidc.cpp b/src/devices/machine/acorn_vidc.cpp
index 856106d8fc1..9440c339711 100644
--- a/src/devices/machine/acorn_vidc.cpp
+++ b/src/devices/machine/acorn_vidc.cpp
@@ -119,7 +119,7 @@ void acorn_vidc10_device::device_add_mconfig(machine_config &config)
}
}
-u32 acorn_vidc10_device::palette_entries() const
+u32 acorn_vidc10_device::palette_entries() const noexcept
{
return 0x100+0x10+4; // 8bpp + 1/2/4bpp + 2bpp for cursor
}
@@ -605,7 +605,7 @@ void arm_vidc20_device::device_config_complete()
screen().set_screen_update(*this, FUNC(arm_vidc20_device::screen_update));
}
-u32 arm_vidc20_device::palette_entries() const
+u32 arm_vidc20_device::palette_entries() const noexcept
{
return 0x100+4; // 8bpp + 2bpp for cursor
}
diff --git a/src/devices/machine/acorn_vidc.h b/src/devices/machine/acorn_vidc.h
index 10584dddead..f2009b255b2 100644
--- a/src/devices/machine/acorn_vidc.h
+++ b/src/devices/machine/acorn_vidc.h
@@ -54,7 +54,7 @@ protected:
// device-level overrides
//virtual void device_validity_check(validity_checker &valid) const override;
virtual void device_add_mconfig(machine_config &config) override;
- virtual u32 palette_entries() const override;
+ virtual u32 palette_entries() const noexcept override;
virtual void device_config_complete() override;
virtual void device_start() override;
virtual void device_reset() override;
@@ -160,7 +160,7 @@ public:
protected:
virtual void device_add_mconfig(machine_config &config) override;
void regs_map(address_map &map);
- virtual u32 palette_entries() const override;
+ virtual u32 palette_entries() const noexcept override;
virtual void device_start() override;
virtual void device_reset() override;
virtual void device_config_complete() override;
diff --git a/src/devices/machine/appldriv.cpp b/src/devices/machine/appldriv.cpp
deleted file mode 100644
index 194b8ccdc23..00000000000
--- a/src/devices/machine/appldriv.cpp
+++ /dev/null
@@ -1,336 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:R. Belmont
-/*********************************************************************
-
- appldriv.c
-
- Apple 5.25" floppy drive emulation (to be interfaced with applefdc.c)
-
-*********************************************************************/
-#include "emu.h"
-#include "appldriv.h"
-#include "imagedev/flopdrv.h"
-#include "formats/ap2_dsk.h"
-
-// our parent's device is the Disk II card (Apple II) or main driver (Mac, IIgs)
-// either way, get the drive from there.
-#define PARENT_FLOPPY_0 "^floppy0"
-#define PARENT_FLOPPY_1 "^floppy1"
-#define PARENT_FLOPPY_2 "^floppy2"
-#define PARENT_FLOPPY_3 "^floppy3"
-
-static inline apple525_floppy_image_device *get_device(device_t *device)
-{
- assert(device != nullptr);
- assert(device->type() == FLOPPY_APPLE);
-
- return downcast<apple525_floppy_image_device *>(device);
-}
-
-static int apple525_enable_mask = 1;
-
-legacy_floppy_image_device *apple525_get_subdevice(device_t *device, int drive)
-{
- switch(drive) {
- case 0 : return device->subdevice<legacy_floppy_image_device>(PARENT_FLOPPY_0);
- case 1 : return device->subdevice<legacy_floppy_image_device>(PARENT_FLOPPY_1);
- case 2 : return device->subdevice<legacy_floppy_image_device>(PARENT_FLOPPY_2);
- case 3 : return device->subdevice<legacy_floppy_image_device>(PARENT_FLOPPY_3);
- }
- return nullptr;
-}
-
-device_t *apple525_get_device_by_type(device_t *device, int ftype, int drive)
-{
- int i;
- int cnt = 0;
- for (i=0;i<4;i++) {
- legacy_floppy_image_device *disk = apple525_get_subdevice(device, i);
- if (disk->floppy_get_drive_type()==ftype) {
- if (cnt==drive) {
- return disk;
- }
- cnt++;
- }
- }
- return nullptr;
-}
-
-void apple525_set_enable_lines(device_t *device, int enable_mask)
-{
- apple525_enable_mask = enable_mask;
-}
-
-/* ----------------------------------------------------------------------- */
-
-static void apple525_load_current_track(device_t *image)
-{
- int len;
- apple525_floppy_image_device *disk;
-
- disk = get_device(image);
- len = sizeof(disk->track_data);
-
- disk->floppy_drive_read_track_data_info_buffer(0, disk->track_data, &len);
- disk->track_loaded = 1;
- disk->track_dirty = 0;
-}
-
-static void apple525_save_current_track(device_t *image, int unload)
-{
- int len;
- apple525_floppy_image_device *disk;
-
- disk = get_device(image);
-
- if (disk->track_dirty)
- {
- len = sizeof(disk->track_data);
- disk->floppy_drive_write_track_data_info_buffer(0, disk->track_data, &len);
- disk->track_dirty = 0;
- }
- if (unload)
- disk->track_loaded = 0;
-}
-
-static void apple525_seek_disk(apple525_floppy_image_device *img, signed int step)
-{
- int track;
- int pseudo_track;
- apple525_floppy_image_device *disk;
-
- disk = get_device(img);
-
- apple525_save_current_track(img, false);
-
- track = img->floppy_drive_get_current_track();
- pseudo_track = (track * 2) + disk->tween_tracks;
-
- pseudo_track += step;
- if (pseudo_track < 0)
- pseudo_track = 0;
- else if (pseudo_track/2 >= APPLE2_TRACK_COUNT)
- pseudo_track = APPLE2_TRACK_COUNT*2-1;
-
- if (pseudo_track/2 != track)
- {
- img->floppy_drive_seek(pseudo_track/2 - img->floppy_drive_get_current_track());
- disk->track_loaded = 0;
- }
-
- if (pseudo_track & 1)
- disk->tween_tracks = 1;
- else
- disk->tween_tracks = 0;
-}
-
-static void apple525_disk_set_lines(device_t *device,device_t *image, uint8_t new_state)
-{
- apple525_floppy_image_device *cur_disk;
- uint8_t old_state;
- unsigned int phase;
-
- cur_disk = get_device(image);
-
- old_state = cur_disk->state;
- cur_disk->state = new_state;
-
- if ((new_state & 0x0F) > (old_state & 0x0F))
- {
- phase = 0;
- switch((old_state ^ new_state) & 0x0F)
- {
- case 1: phase = 0; break;
- case 2: phase = 1; break;
- case 4: phase = 2; break;
- case 8: phase = 3; break;
- }
-
- phase -= cur_disk->floppy_drive_get_current_track() * 2;
- if (cur_disk->tween_tracks)
- phase--;
- phase %= 4;
-
- switch(phase)
- {
- case 1:
- apple525_seek_disk(cur_disk, +1);
- break;
- case 3:
- apple525_seek_disk(cur_disk, -1);
- break;
- }
- }
-}
-
-int apple525_get_count(device_t *device)
-{
- int cnt = 0;
- if ((device->subdevice("^" FLOPPY_0)!=nullptr) && (device->subdevice<legacy_floppy_image_device>("^" FLOPPY_0)->floppy_get_drive_type() == FLOPPY_TYPE_APPLE) && (get_device(device->subdevice(PARENT_FLOPPY_0))!=nullptr)) cnt++;
- if ((device->subdevice("^" FLOPPY_1)!=nullptr) && (device->subdevice<legacy_floppy_image_device>("^" FLOPPY_1)->floppy_get_drive_type() == FLOPPY_TYPE_APPLE) && (get_device(device->subdevice(PARENT_FLOPPY_1))!=nullptr)) cnt++;
- if ((device->subdevice("^" FLOPPY_2)!=nullptr) && (device->subdevice<legacy_floppy_image_device>("^" FLOPPY_2)->floppy_get_drive_type() == FLOPPY_TYPE_APPLE) && (get_device(device->subdevice(PARENT_FLOPPY_2))!=nullptr)) cnt++;
- if ((device->subdevice("^" FLOPPY_3)!=nullptr) && (device->subdevice<legacy_floppy_image_device>("^" FLOPPY_3)->floppy_get_drive_type() == FLOPPY_TYPE_APPLE) && (get_device(device->subdevice(PARENT_FLOPPY_3))!=nullptr)) cnt++;
-
- return cnt;
-}
-
-void apple525_set_lines(device_t *device, uint8_t lines)
-{
- int i, count;
- device_t *image;
-
- count = apple525_get_count(device);
- for (i = 0; i < count; i++)
- {
- if (apple525_enable_mask & (1 << i))
- {
- image = apple525_get_device_by_type(device, FLOPPY_TYPE_APPLE, i);
- if (image)
- apple525_disk_set_lines(device,image, lines);
- }
- }
-}
-
-/* reads/writes a byte; write_value is -1 for read only */
-static uint8_t apple525_process_byte(device_t *img, int write_value)
-{
- uint8_t read_value;
- apple525_floppy_image_device *disk;
- int spinfract_divisor;
- int spinfract_dividend;
- apple525_floppy_image_device *config = get_device(img);
- device_image_interface *image = dynamic_cast<device_image_interface *>(img);
-
- disk = get_device(img);
- spinfract_dividend = config->get_dividend();
- spinfract_divisor = config->get_divisor();
-
- /* no image initialized for that drive ? */
- if (!image->exists())
- return 0xFF;
-
- /* check the spin count if reading*/
- if (write_value < 0)
- {
- disk->spin_count++;
- disk->spin_count %= spinfract_divisor;
- if (disk->spin_count >= spinfract_dividend)
- return 0x00;
- }
-
- /* load track if need be */
- if (disk->track_loaded == 0)
- apple525_load_current_track(img);
-
- /* perform the read */
- read_value = disk->track_data[disk->position];
-
- /* perform the write, if applicable */
- if (write_value >= 0)
- {
- disk->track_data[disk->position] = write_value;
- disk->track_dirty = 1;
- }
-
- disk->position++;
- disk->position %= std::size(disk->track_data);
-
- /* when writing; save the current track after every full sector write */
- if ((write_value >= 0) && ((disk->position % APPLE2_NIBBLE_SIZE) == 0))
- apple525_save_current_track(img, false);
-
- return read_value;
-}
-
-static device_t *apple525_selected_image(device_t *device)
-{
- int i,count;
-
- count = apple525_get_count(device);
-
- for (i = 0; i < count; i++)
- {
- if (apple525_enable_mask & (1 << i))
- return apple525_get_device_by_type(device, FLOPPY_TYPE_APPLE, i);
- }
- return nullptr;
-}
-
-uint8_t apple525_read_data(device_t *device)
-{
- device_t *image;
- image = apple525_selected_image(device);
- return image ? apple525_process_byte(image, -1) : 0xFF;
-}
-
-void apple525_write_data(device_t *device,uint8_t data)
-{
- device_t *image;
- image = apple525_selected_image(device);
- if (image)
- apple525_process_byte(image, data);
-}
-
-int apple525_read_status(device_t *device)
-{
- int i, count, result = 0;
- device_image_interface *image;
-
- count = apple525_get_count(device);
-
- for (i = 0; i < count; i++)
- {
- if (apple525_enable_mask & (1 << i))
- {
- image = dynamic_cast<device_image_interface *>(apple525_get_device_by_type(device, FLOPPY_TYPE_APPLE, i));
- if (image && image->is_readonly())
- result = 1;
- }
- }
- return result;
-}
-
-// device type definition
-DEFINE_DEVICE_TYPE(FLOPPY_APPLE, apple525_floppy_image_device, "floppy_apple", "Apple Disk II")
-
-//-------------------------------------------------
-// apple525_floppy_image_device - constructor
-//-------------------------------------------------
-
-apple525_floppy_image_device::apple525_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : legacy_floppy_image_device(mconfig, FLOPPY_APPLE, tag, owner, clock)
-{
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void apple525_floppy_image_device::device_start()
-{
- legacy_floppy_image_device::device_start();
- floppy_set_type(FLOPPY_TYPE_APPLE);
-
- state = 0;
- tween_tracks = 0;
- track_loaded = 0;
- track_dirty = 0;
- position = 0;
- spin_count = 0;
- memset(track_data, 0, sizeof(track_data));
-}
-
-image_init_result apple525_floppy_image_device::call_load()
-{
- image_init_result result = legacy_floppy_image_device::call_load();
- floppy_drive_seek(-999);
- floppy_drive_seek(+35/2);
- return result;
-}
-
-void apple525_floppy_image_device::call_unload()
-{
- apple525_save_current_track(this, true);
-
- legacy_floppy_image_device::call_unload();
-}
diff --git a/src/devices/machine/appldriv.h b/src/devices/machine/appldriv.h
deleted file mode 100644
index 86f7c1658bf..00000000000
--- a/src/devices/machine/appldriv.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:R. Belmont
-/*********************************************************************
-
- appldriv.h
-
- Apple 5.25" floppy drive emulation (to be interfaced with applefdc.c)
-
-*********************************************************************/
-
-#ifndef MAME_MACHINE_APPLDRIV_H
-#define MAME_MACHINE_APPLDRIV_H
-
-#pragma once
-
-#include "imagedev/flopdrv.h"
-#include "formats/ap2_dsk.h"
-
-#define FLOPPY_0 "floppy0"
-#define FLOPPY_1 "floppy1"
-#define FLOPPY_2 "floppy2"
-#define FLOPPY_3 "floppy3"
-
-void apple525_set_lines(device_t *device, uint8_t lines);
-void apple525_set_enable_lines(device_t *device, int enable_mask);
-
-uint8_t apple525_read_data(device_t *device);
-void apple525_write_data(device_t *device, uint8_t data);
-int apple525_read_status(device_t *device);
-int apple525_get_count(running_machine &machine);
-
-class apple525_floppy_image_device : public legacy_floppy_image_device
-{
-public:
- // construction/destruction
- apple525_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, const floppy_interface *config, int dividend, int divisor)
- : apple525_floppy_image_device(mconfig, tag, owner, (uint32_t)0)
- {
- set_floppy_config(config);
- set_params(dividend, divisor);
- }
- apple525_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
-
- virtual image_init_result call_load() override;
- virtual void call_unload() override;
- void set_params(int dividend, int divisor) { m_dividend = dividend; m_divisor = divisor; }
-
- int get_dividend() { return m_dividend; }
- int get_divisor() { return m_divisor; }
-
- // these elements should be private, but are not yet
- unsigned int state : 4; /* bits 0-3 are the phase */
- unsigned int tween_tracks : 1;
- unsigned int track_loaded : 1;
- unsigned int track_dirty : 1;
- int position;
- int spin_count; /* simulate drive spin to fool RWTS test at $BD34 */
- uint8_t track_data[APPLE2_NIBBLE_SIZE * APPLE2_SECTOR_COUNT];
-
-protected:
- virtual void device_start() override;
-
-private:
- int m_dividend;
- int m_divisor;
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(FLOPPY_APPLE, apple525_floppy_image_device)
-
-#endif // MAME_MACHINE_APPLDRIV_H
diff --git a/src/devices/machine/applefdc.cpp b/src/devices/machine/applefdc.cpp
deleted file mode 100644
index 8b6c5fec524..00000000000
--- a/src/devices/machine/applefdc.cpp
+++ /dev/null
@@ -1,566 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nathan Woods, Raphael Nabet, R. Belmont
-/*********************************************************************
-
- applefdc.c
-
- Implementation of various Apple Floppy Disk Controllers, including
- the classic Apple controller and the IWM (Integrated Woz Machine)
- chip
-
- The IWM chip was used as the floppy disk controller for early Macs and the
- Apple IIgs, and was eventually superseded by the SWIM chp.
-
- Nate Woods
- Raphael Nabet
-
- Writing this code would not be possible if it weren't for the work of the
- XGS and KEGS emulators which also contain IWM emulations.
-
- TODO
- - Implement the unimplemented IWM modes
- - IWM_MODE_CLOCKSPEED
- - IWM_MODE_BITCELLTIME
- - IWM_MODE_HANDSHAKEPROTOCOL
- - IWM_MODE_LATCHMODE
- - Investigate the differences between the IWM and the classic Apple II
- controller more fully. It is currently unclear what are genuine
- differences and what are effectively hacks that "just seem" to work.
- - Figure out iwm_readenable2handshake() and iwm_enable2(); they are
- hackish at best
- - Support the SWIM chip
- - Proper timing
- - This code was originally IWM specific; we need to clean up IWMisms in
- the code
- - Make it faster?
- - Add sound?
-
-*********************************************************************/
-
-#include "emu.h"
-#include "applefdc.h"
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-// logging
-#define LOG_APPLEFDC 0
-#define LOG_APPLEFDC_EXTRA 0
-
-// mask for FDC lines
-#define IWM_MOTOR 0x10
-#define IWM_DRIVE 0x20
-#define IWM_Q6 0x40
-#define IWM_Q7 0x80
-
-
-
-/***************************************************************************
- IWM MODE
-
- The IWM mode has the following values:
-
- Bit 7 Reserved
- Bit 6 Reserved
- Bit 5 Reserved
- Bit 4 ! Clock speed
- 0=7MHz; used by Apple IIgs
- 1=8MHz; used by Mac (I believe)
- Bit 3 ! Bit cell time
- 0=4usec/bit (used for 5.25" drives)
- 1=2usec/bit (used for 3.5" drives)
- Bit 2 Motor-off delay
- 0=leave on for 1 sec after system turns it off
- 1=turn off immediately
- Bit 1 ! Handshake protocol
- 0=synchronous (software supplies timing for writing data; used for 5.25" drives)
- 1=asynchronous (IWM supplies timing; used for 3.5" drives)
- Bit 0 ! Latch mode
- 0=read data stays valid for 7usec (used for 5.25" drives)
- 1=read data stays valid for full byte time (used for 3.5" drives)
-
- ***************************************************************************/
-
-enum
-{
- IWM_MODE_CLOCKSPEED = 0x10,
- IWM_MODE_BITCELLTIME = 0x08,
- IWM_MODE_MOTOROFFDELAY = 0x04,
- IWM_MODE_HANDSHAKEPROTOCOL = 0x02,
- IWM_MODE_LATCHMODE = 0x01
-};
-
-
-
-/***************************************************************************
- BASE DEVICE
-***************************************************************************/
-
-//-------------------------------------------------
-// ctor
-//-------------------------------------------------
-
-applefdc_base_device::applefdc_base_device(applefdc_base_device::applefdc_t fdc_type, const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, type, tag, owner, clock),
- m_type(fdc_type),
- m_interface(nullptr)
-{
-}
-
-
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void applefdc_base_device::device_start()
-{
- // timer
- m_motor_timer = timer_alloc(FUNC(applefdc_base_device::turn_motor_onoff), this);
-
- // state
- m_write_byte = 0x00;
- m_lines = 0x00;
- m_mode = 0x1F; // default value needed by Lisa 2 - no, I don't know if it is true
- m_handshake_hack = 0x00;
-
- // register save states
- save_item(NAME(m_write_byte));
- save_item(NAME(m_lines));
- save_item(NAME(m_mode));
- save_item(NAME(m_handshake_hack));
-}
-
-
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void applefdc_base_device::device_reset(void)
-{
- m_handshake_hack = 0x00;
- m_write_byte = 0x00;
- m_lines = 0x00;
- m_mode = 0x1F; /* default value needed by Lisa 2 - no, I don't know if it is true */
- m_motor_timer->reset();
-}
-
-
-
-//-------------------------------------------------
-// get_interface - gets the interface
-//-------------------------------------------------
-
-const applefdc_interface *applefdc_base_device::get_interface()
-{
- static const applefdc_interface dummy_interface = {nullptr, };
-
- return (m_interface != nullptr) ? m_interface : &dummy_interface;
-}
-
-
-
-//-------------------------------------------------
-// iwm_enable2 - hackish function
-//-------------------------------------------------
-
-int applefdc_base_device::iwm_enable2()
-{
- /* R. Nabet : This function looks more like a hack than a real feature of the IWM; */
- /* it is not called from the Mac Plus driver */
- return (m_lines & APPLEFDC_PH1) && (m_lines & APPLEFDC_PH3);
-}
-
-
-
-//-------------------------------------------------
-// iwm_readenable2handshake - hackish function
-//-------------------------------------------------
-
-uint8_t applefdc_base_device::iwm_readenable2handshake()
-{
- /* R. Nabet : This function looks more like a hack than a real feature of the IWM; */
- /* it is not called from the Mac Plus driver */
- m_handshake_hack++;
- m_handshake_hack %= 4;
- return (m_handshake_hack != 0) ? 0xc0 : 0x80;
-}
-
-
-
-//-------------------------------------------------
-// statusreg_r - reads the status register
-//-------------------------------------------------
-
-uint8_t applefdc_base_device::statusreg_r()
-{
- uint8_t result;
- int status;
- const applefdc_interface *intf = get_interface();
-
- /* IWM status:
- *
- * Bit 7 Sense input (write protect for 5.25" drive and general status line for 3.5")
- * Bit 6 Reserved
- * Bit 5 Drive enable (is 1 if drive is on)
- * Bits 4-0 Same as IWM mode bits 4-0
- */
-
- status = iwm_enable2() ? 1 : (intf->read_status ? intf->read_status(this) : 0);
-
- result = (status ? 0x80 : 0x00);
-
- if (m_type != APPLEFDC_APPLE2)
- result |= (((m_lines & IWM_MOTOR) ? 1 : 0) << 5) | m_mode;
- return result;
-}
-
-
-
-//-------------------------------------------------
-// iwm_modereg_w - changes the mode register
-//-------------------------------------------------
-
-void applefdc_base_device::iwm_modereg_w(uint8_t data)
-{
- m_mode = data & 0x1f; /* write mode register */
-
- if (LOG_APPLEFDC_EXTRA)
- logerror("iwm_modereg_w: iwm_mode=0x%02x\n", (unsigned) m_mode);
-}
-
-
-
-//-------------------------------------------------
-// read_reg - reads a register
-//-------------------------------------------------
-
-uint8_t applefdc_base_device::read_reg(int lines)
-{
- const applefdc_interface *intf = get_interface();
- uint8_t result = 0;
-
- switch(lines)
- {
- case 0:
- // read data register
- if ((m_type != APPLEFDC_APPLE2) && (iwm_enable2() || !(m_lines & IWM_MOTOR)))
- {
- result = 0xFF;
- }
- else
- {
- // Right now, this function assumes latch mode; which is always used for
- // 3.5 inch drives. Eventually we should check to see if latch mode is
- // off
- if (LOG_APPLEFDC)
- {
- if ((m_mode & IWM_MODE_LATCHMODE) == 0x00)
- logerror("applefdc_read_reg(): latch mode off not implemented\n");
- }
-
- result = (intf->read_data ? intf->read_data(this) : 0x00);
- }
- break;
-
- case IWM_Q6:
- // read status register
- result = statusreg_r();
- break;
-
- case IWM_Q7:
- // Classic Apple II: Read status register
- // IWM: Read handshake register
- if (m_type == APPLEFDC_APPLE2)
- result = statusreg_r();
- else
- result = iwm_enable2() ? iwm_readenable2handshake() : 0x80;
- break;
- }
- return result;
-}
-
-
-
-//-------------------------------------------------
-// write_reg - writes a register
-//-------------------------------------------------
-
-void applefdc_base_device::write_reg(uint8_t data)
-{
- const applefdc_interface *intf = get_interface();
-
- switch(m_lines & (IWM_Q6 | IWM_Q7))
- {
- case IWM_Q6 | IWM_Q7:
- if (!(m_lines & IWM_MOTOR))
- {
- iwm_modereg_w(data);
- }
- else if (!iwm_enable2())
- {
- // Right now, this function assumes latch mode; which is always used for
- // 3.5 inch drives. Eventually we should check to see if latch mode is
- // off
- if (LOG_APPLEFDC)
- {
- if ((m_mode & IWM_MODE_LATCHMODE) == 0)
- logerror("applefdc_write_reg(): latch mode off not implemented\n");
- }
-
- if (intf->write_data != nullptr)
- intf->write_data(this, data);
- }
- break;
- }
-}
-
-
-
-//-------------------------------------------------
-// turn_motor_onoff - timer callback for turning
-// motor on or off
-//-------------------------------------------------
-
-TIMER_CALLBACK_MEMBER(applefdc_base_device::turn_motor_onoff)
-{
- const applefdc_interface *intf = get_interface();
- int enable_lines;
-
- if (param)
- {
- m_lines |= IWM_MOTOR;
- enable_lines = (m_lines & IWM_DRIVE) ? 2 : 1;
- }
- else
- {
- m_lines &= ~IWM_MOTOR;
-
- if (m_type == APPLEFDC_APPLE2)
- enable_lines = (m_lines & IWM_DRIVE) ? 2 : 1;
- else
- enable_lines = 0;
- }
-
- /* invoke callback, if present */
- if (intf->set_enable_lines != nullptr)
- intf->set_enable_lines(this, enable_lines);
-
- if (LOG_APPLEFDC_EXTRA)
- logerror("iwm_turnmotor_onoff(): Turning motor %s\n", param ? "on" : "off");
-}
-
-
-
-//-------------------------------------------------
-// iwm_access
-//-------------------------------------------------
-
-void applefdc_base_device::iwm_access(int offset)
-{
- static const char *const lines[] =
- {
- "PH0",
- "PH1",
- "PH2",
- "PH3",
- "MOTOR",
- "DRIVE",
- "Q6",
- "Q7"
- };
-
- const applefdc_interface *intf = get_interface();
-
- if (offset & 1)
- m_lines |= (1 << (offset >> 1));
- else
- m_lines &= ~(1 << (offset >> 1));
-
- if (LOG_APPLEFDC_EXTRA)
- {
- logerror("iwm_access(): %s line %s => %02x\n",
- (offset & 1) ? "setting" : "clearing", lines[offset >> 1], m_lines);
- }
-
- if ((offset < 0x08) && (intf->set_lines != nullptr))
- intf->set_lines(this, m_lines & 0x0f);
-
- switch(offset)
- {
- case 0x08:
- /* turn off motor */
- m_motor_timer->adjust(
- (m_mode & IWM_MODE_MOTOROFFDELAY) ? attotime::zero : attotime::from_seconds(1), 0);
- break;
-
- case 0x09:
- /* turn on motor */
- m_motor_timer->adjust(attotime::zero, 1);
- break;
-
- case 0x0A:
- /* turn off IWM_DRIVE */
- if ((m_lines & IWM_MOTOR) && (intf->set_enable_lines != nullptr))
- intf->set_enable_lines(this, 1);
- break;
-
- case 0x0B:
- /* turn on IWM_DRIVE */
- if ((m_lines & IWM_MOTOR) && (intf->set_enable_lines != nullptr))
- intf->set_enable_lines(this, 2);
- break;
- }
-}
-
-
-
-//-------------------------------------------------
-// read - reads a byte from the FDC
-//-------------------------------------------------
-
-uint8_t applefdc_base_device::read(offs_t offset)
-{
- const applefdc_interface *intf = get_interface();
- uint8_t result = 0;
-
- // normalize offset
- offset &= 0xf;
-
- if (LOG_APPLEFDC_EXTRA)
- logerror("applefdc_r: offset=%i\n", offset);
-
- iwm_access(offset);
-
- switch(m_type)
- {
- case APPLEFDC_APPLE2:
- switch(offset)
- {
- case 0x0C:
- if (m_lines & IWM_Q7)
- {
- if (intf->write_data != nullptr)
- intf->write_data(this, m_write_byte);
- result = 0;
- }
- else
- result = read_reg(0);
- break;
-
- case 0x0D:
- result = read_reg(IWM_Q6);
- break;
-
- case 0x0E:
- result = read_reg(IWM_Q7);
- break;
-
- case 0x0F:
- result = read_reg(IWM_Q7 | IWM_Q6);
- break;
- }
- break;
-
- case APPLEFDC_IWM:
- if ((offset & 1) == 0)
- result = read_reg(m_lines & (IWM_Q6 | IWM_Q7));
- break;
-
- case APPLEFDC_SWIM:
- if ((offset & 1) == 0)
- result = read_reg(m_lines & (IWM_Q6 | IWM_Q7));
- break;
- }
-
- return result;
-}
-
-
-
-//-------------------------------------------------
-// write - writes a byte to the FDC
-//-------------------------------------------------
-
-void applefdc_base_device::write(offs_t offset, uint8_t data)
-{
- const applefdc_interface *intf = get_interface();
-
- /* normalize offset */
- offset &= 15;
-
- if (LOG_APPLEFDC_EXTRA)
- logerror("applefdc_w: offset=%i data=0x%02x\n", offset, data);
-
- iwm_access(offset);
-
- switch(m_type)
- {
- case APPLEFDC_APPLE2:
- switch(offset)
- {
- case 0x0C:
- if (m_lines & IWM_Q7)
- {
- if (intf->write_data != nullptr)
- intf->write_data(this, m_write_byte);
- }
- break;
-
- case 0x0D:
- m_write_byte = data;
- break;
- }
- break;
-
- case APPLEFDC_IWM:
- if (offset & 1)
- write_reg(data);
- break;
-
- case APPLEFDC_SWIM:
- if (offset & 1)
- write_reg(data);
- break;
- }
-}
-
-
-
-//-------------------------------------------------
-// get_lines - accessor
-//-------------------------------------------------
-
-uint8_t applefdc_base_device::get_lines()
-{
- return m_lines & 0x0f;
-}
-
-
-
-/***************************************************************************
- APPLE FDC - Used on Apple II
-***************************************************************************/
-
-DEFINE_DEVICE_TYPE(LEGACY_APPLEFDC, applefdc_device, "apple_fdcl", "Apple FDC (legacy)")
-
-applefdc_device::applefdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : applefdc_base_device(APPLEFDC_APPLE2, mconfig, LEGACY_APPLEFDC, tag, owner, clock)
-{
-}
-
-
-
-/***************************************************************************
- IWM - Used on early Macs
-***************************************************************************/
-
-DEFINE_DEVICE_TYPE(LEGACY_IWM, legacy_iwm_device, "iwml", "Apple IWM (Integrated Woz Machine) (legacy)")
-
-legacy_iwm_device::legacy_iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : applefdc_base_device(APPLEFDC_IWM, mconfig, LEGACY_IWM, tag, owner, clock)
-{
-}
diff --git a/src/devices/machine/applefdc.h b/src/devices/machine/applefdc.h
deleted file mode 100644
index 80fbea87954..00000000000
--- a/src/devices/machine/applefdc.h
+++ /dev/null
@@ -1,152 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nathan Woods, Raphael Nabet, R. Belmont
-/*********************************************************************
-
- applefdc.h
-
- Implementation of various Apple Floppy Disk Controllers, including
- the classic Apple controller and the IWM (Integrated Woz Machine)
- chip
-
- Nate Woods
- Raphael Nabet
- R. Belmont
-
-*********************************************************************/
-
-#ifndef MAME_MACHINE_APPLEFDC_H
-#define MAME_MACHINE_APPLEFDC_H
-
-#pragma once
-
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-#define APPLEFDC_PH0 0x01
-#define APPLEFDC_PH1 0x02
-#define APPLEFDC_PH2 0x04
-#define APPLEFDC_PH3 0x08
-
-DECLARE_DEVICE_TYPE(LEGACY_APPLEFDC, applefdc_device)
-DECLARE_DEVICE_TYPE(LEGACY_IWM, legacy_iwm_device)
-
-
-
-/***************************************************************************
- INTERFACE
-***************************************************************************/
-
-struct applefdc_interface
-{
- void (*set_lines)(device_t *device, uint8_t lines);
- void (*set_enable_lines)(device_t *device, int enable_mask);
-
- uint8_t (*read_data)(device_t *device);
- void (*write_data)(device_t *device, uint8_t data);
- int (*read_status)(device_t *device);
-};
-
-
-
-/***************************************************************************
- BASE DEVICE
-***************************************************************************/
-
-class applefdc_base_device : public device_t
-{
-public:
- // configuration helpers
- void set_config(const applefdc_interface *intrf) { m_interface = intrf; }
-
- // read/write handlers
- virtual uint8_t read(offs_t offset);
- virtual void write(offs_t offset, uint8_t data);
-
- // accessor
- uint8_t get_lines();
-
- virtual void device_reset() override;
-
-protected:
- enum applefdc_t
- {
- APPLEFDC_APPLE2, /* classic Apple II disk controller (pre-IWM) */
- APPLEFDC_IWM, /* Integrated Woz Machine */
- APPLEFDC_SWIM /* Sander/Woz Integrated Machine */
- };
-
- // constructor
- applefdc_base_device(applefdc_t fdc_type, const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
-
- // device-level overrides
- virtual void device_start() override;
-
- // other protecteds
- virtual void iwm_modereg_w(uint8_t data);
-
-
-private:
- // data that is constant for the lifetime of the emulation
- emu_timer * m_motor_timer;
- applefdc_t m_type;
- const applefdc_interface *m_interface;
-
- // data that changes at emulation time
- uint8_t m_write_byte;
- uint8_t m_lines; /* flags from IWM_MOTOR - IWM_Q7 */
- uint8_t m_mode; /* 0-31; see above */
- uint8_t m_handshake_hack; /* not sure what this is for */
-
- // functions
- const applefdc_interface *get_interface();
- int iwm_enable2();
- uint8_t iwm_readenable2handshake();
- uint8_t statusreg_r();
- uint8_t read_reg(int lines);
- void write_reg(uint8_t data);
- TIMER_CALLBACK_MEMBER(turn_motor_onoff);
- void iwm_access(int offset);
-};
-
-
-
-/***************************************************************************
- APPLE FDC - Used on Apple II
-***************************************************************************/
-
-class applefdc_device : public applefdc_base_device
-{
-public:
- applefdc_device(const machine_config &mconfig, const char *tag, device_t *owner, const applefdc_interface *intrf)
- : applefdc_device(mconfig, tag, owner, (uint32_t)0)
- {
- set_config(intrf);
- }
-
- applefdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-};
-
-
-
-/***************************************************************************
- IWM - Used on early Macs
-***************************************************************************/
-
-class legacy_iwm_device : public applefdc_base_device
-{
-public:
- legacy_iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, const applefdc_interface *intrf)
- : legacy_iwm_device(mconfig, tag, owner, (uint32_t)0)
- {
- set_config(intrf);
- }
-
- legacy_iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- static constexpr feature_type imperfect_features() { return feature::DISK; }
-};
-
-#endif // MAME_MACHINE_APPLEFDC_H
diff --git a/src/devices/machine/roc10937.cpp b/src/devices/machine/roc10937.cpp
index cba09589c3c..e9c44ab822b 100644
--- a/src/devices/machine/roc10937.cpp
+++ b/src/devices/machine/roc10937.cpp
@@ -146,6 +146,10 @@ void rocvfd_device::device_start()
m_brightness = std::make_unique<output_finder<1> >(*this, "vfdduty%u", unsigned(m_port_val));
m_brightness->resolve();
+ m_sclk = 0;
+ m_data = 0;
+ m_por = 1;
+
save_item(NAME(m_cursor_pos));
save_item(NAME(m_window_size));
save_item(NAME(m_shift_count));
@@ -155,6 +159,7 @@ void rocvfd_device::device_start()
save_item(NAME(m_count));
save_item(NAME(m_sclk));
save_item(NAME(m_data));
+ save_item(NAME(m_por));
save_item(NAME(m_duty));
save_item(NAME(m_disp));
}
@@ -169,8 +174,6 @@ void rocvfd_device::device_reset()
m_count=0;
m_duty=31;
m_disp = 0;
- m_sclk = 0;
- m_data = 0;
std::fill(std::begin(m_chars), std::end(m_chars), 0);
std::fill(std::begin(*m_outputs), std::end(*m_outputs), 0);
@@ -214,6 +217,7 @@ WRITE_LINE_MEMBER( rocvfd_device::por )
{
reset();
}
+ m_por = state;
}
@@ -222,7 +226,7 @@ void rocvfd_device::shift_clock(int state)
if (m_sclk != state)
{
//Clock data on FALLING edge
- if (!m_sclk)
+ if (!m_sclk && m_por)
{
m_shift_data <<= 1;
diff --git a/src/devices/machine/roc10937.h b/src/devices/machine/roc10937.h
index 3e5426d8794..da0f21eb808 100644
--- a/src/devices/machine/roc10937.h
+++ b/src/devices/machine/roc10937.h
@@ -42,6 +42,7 @@ protected:
int m_duty;
int m_disp;
int m_sclk;
+ int m_por;
uint8_t m_cursor;
uint32_t m_chars[16];
diff --git a/src/devices/video/bt459.h b/src/devices/video/bt459.h
index 3d945469478..2d525383378 100644
--- a/src/devices/video/bt459.h
+++ b/src/devices/video/bt459.h
@@ -197,7 +197,7 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
- virtual u32 palette_entries() const override { return BT459_PIXEL_COLORS + BT459_OVERLAY_COLORS + BT459_CURSOR_COLORS; }
+ virtual u32 palette_entries() const noexcept override { return BT459_PIXEL_COLORS + BT459_OVERLAY_COLORS + BT459_CURSOR_COLORS; }
private:
// helper functions
diff --git a/src/devices/video/bt45x.h b/src/devices/video/bt45x.h
index 7a6793ff677..33cd63abd56 100644
--- a/src/devices/video/bt45x.h
+++ b/src/devices/video/bt45x.h
@@ -84,7 +84,7 @@ protected:
virtual void device_start() override;
- virtual u32 palette_entries() const override { return m_palette_colors + m_overlay_colors; }
+ virtual u32 palette_entries() const noexcept override { return m_palette_colors + m_overlay_colors; }
virtual u8 palette_r(address_space &space) override;
virtual void palette_w(u8 data) override;
diff --git a/src/devices/video/bt47x.h b/src/devices/video/bt47x.h
index cc96fed7a7b..a51fe2c3df8 100644
--- a/src/devices/video/bt47x.h
+++ b/src/devices/video/bt47x.h
@@ -23,7 +23,7 @@ protected:
virtual void device_start() override;
// device_palette_interface overrides
- virtual u32 palette_entries() const override { return m_palette_colors + m_overlay_colors; }
+ virtual u32 palette_entries() const noexcept override { return m_palette_colors + m_overlay_colors; }
// read/write handlers
u8 address_r();
diff --git a/src/devices/video/huc6260.h b/src/devices/video/huc6260.h
index 387bc6cd7f7..01b1a299f45 100644
--- a/src/devices/video/huc6260.h
+++ b/src/devices/video/huc6260.h
@@ -44,7 +44,7 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
- virtual uint32_t palette_entries() const override { return PALETTE_SIZE; }
+ virtual uint32_t palette_entries() const noexcept override { return PALETTE_SIZE; }
TIMER_CALLBACK_MEMBER(update_events);
diff --git a/src/devices/video/ims_cvc.h b/src/devices/video/ims_cvc.h
index 0772ef150de..094391e23cf 100644
--- a/src/devices/video/ims_cvc.h
+++ b/src/devices/video/ims_cvc.h
@@ -31,7 +31,7 @@ protected:
virtual void device_reset() override;
// device_palette_interface overrides
- virtual u32 palette_entries() const override { return 256; }
+ virtual u32 palette_entries() const noexcept override { return 256; }
virtual void boot_w(u32 data) { m_boot = data & MASK24; }
@@ -176,7 +176,7 @@ protected:
virtual void device_reset() override;
// device_palette_interface overrides
- virtual u32 palette_entries() const override { return 256 + 3; }
+ virtual u32 palette_entries() const noexcept override { return 256 + 3; }
virtual void microport_map(address_map &map);
diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h
index 1d8b61fa949..1208c057bb6 100644
--- a/src/devices/video/mc6845.h
+++ b/src/devices/video/mc6845.h
@@ -428,7 +428,7 @@ protected:
virtual space_config_vector memory_space_config() const override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 16; }
+ virtual uint32_t palette_entries() const noexcept override { return 16; }
TIMER_CALLBACK_MEMBER(block_copy_tick);
diff --git a/src/devices/video/nereid.h b/src/devices/video/nereid.h
index c1e2b96ea2b..18717de2b22 100644
--- a/src/devices/video/nereid.h
+++ b/src/devices/video/nereid.h
@@ -19,7 +19,7 @@ protected:
nereid_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
- virtual u32 palette_entries() const override { return 0x200; }
+ virtual u32 palette_entries() const noexcept override { return 0x200; }
private:
static constexpr int NEREID_BUSY=1;
diff --git a/src/devices/video/pc_vga.h b/src/devices/video/pc_vga.h
index 2c32c25cbb0..a12ef1c477c 100644
--- a/src/devices/video/pc_vga.h
+++ b/src/devices/video/pc_vga.h
@@ -64,7 +64,7 @@ protected:
virtual void device_reset() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 0x100; }
+ virtual uint32_t palette_entries() const noexcept override { return 0x100; }
void vga_vh_text(bitmap_rgb32 &bitmap, const rectangle &cliprect);
void vga_vh_ega(bitmap_rgb32 &bitmap, const rectangle &cliprect);
diff --git a/src/devices/video/psx.h b/src/devices/video/psx.h
index 55ab431b716..0482369692e 100644
--- a/src/devices/video/psx.h
+++ b/src/devices/video/psx.h
@@ -54,7 +54,7 @@ protected:
virtual void device_config_complete() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 32*32*32*2; }
+ virtual uint32_t palette_entries() const noexcept override { return 32*32*32*2; }
int vramSize;
diff --git a/src/devices/video/snes_ppu.h b/src/devices/video/snes_ppu.h
index f6ae1b09fa4..c07f878f402 100644
--- a/src/devices/video/snes_ppu.h
+++ b/src/devices/video/snes_ppu.h
@@ -315,8 +315,8 @@ protected:
// device_palette_interface overrides
// 256 word CG RAM data (0x000-0x0ff), 8 group of direct colours (0x100-0x8ff), Fixed color (0x900)
- virtual uint32_t palette_entries() const override { return 0x100 + (0x100 * 8) + 1; }
- virtual uint32_t palette_indirect_entries() const override { return 32 * 32 * 32; } // 15 bit BGR
+ virtual uint32_t palette_entries() const noexcept override { return 0x100 + (0x100 * 8) + 1; }
+ virtual uint32_t palette_indirect_entries() const noexcept override { return 32 * 32 * 32; } // 15 bit BGR
private:
static constexpr uint16_t DIRECT_COLOUR = 0x100; // Position in palette entry for direct colour
diff --git a/src/devices/video/tlc34076.h b/src/devices/video/tlc34076.h
index 7c4b021bd27..c495cf82088 100644
--- a/src/devices/video/tlc34076.h
+++ b/src/devices/video/tlc34076.h
@@ -50,7 +50,7 @@ protected:
virtual void device_reset() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 0x100; }
+ virtual uint32_t palette_entries() const noexcept override { return 0x100; }
private:
// internal helpers
diff --git a/src/devices/video/tms9928a.h b/src/devices/video/tms9928a.h
index 34dfc7d270f..d50bec1cf4d 100644
--- a/src/devices/video/tms9928a.h
+++ b/src/devices/video/tms9928a.h
@@ -100,7 +100,7 @@ protected:
virtual space_config_vector memory_space_config() const override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 16; }
+ virtual uint32_t palette_entries() const noexcept override { return 16; }
TIMER_CALLBACK_MEMBER(clock_grom);
TIMER_CALLBACK_MEMBER(update_line);
diff --git a/src/devices/video/v9938.h b/src/devices/video/v9938.h
index b4ac02771da..265cad5eac1 100644
--- a/src/devices/video/v9938.h
+++ b/src/devices/video/v9938.h
@@ -105,7 +105,7 @@ protected:
virtual space_config_vector memory_space_config() const override;
virtual void palette_init() = 0;
- virtual u32 palette_entries() const override { return 16 + 256; }
+ virtual u32 palette_entries() const noexcept override { return 16 + 256; }
TIMER_CALLBACK_MEMBER(update_line);
diff --git a/src/devices/video/vic4567.h b/src/devices/video/vic4567.h
index 8afe986c41c..06c78f2a48e 100644
--- a/src/devices/video/vic4567.h
+++ b/src/devices/video/vic4567.h
@@ -134,7 +134,7 @@ protected:
virtual void device_reset() override;
// device_palette_interface override
- virtual uint32_t palette_entries() const override { return 0x100; }
+ virtual uint32_t palette_entries() const noexcept override { return 0x100; }
private:
static constexpr unsigned SPRITE_BASE_X_SIZE = 24;
diff --git a/src/devices/video/voodoo_render.cpp b/src/devices/video/voodoo_render.cpp
index 7a698a9b028..ef9a75bd673 100644
--- a/src/devices/video/voodoo_render.cpp
+++ b/src/devices/video/voodoo_render.cpp
@@ -338,12 +338,12 @@ void rasterizer_params::compute_equations()
u32 rasterizer_params::hash() const
{
return m_generic ^
- rotate(m_alphamode, 0) ^
- rotate(m_fbzmode, 6) ^
- rotate(m_fbzcp, 12) ^
- rotate(m_fogmode, 18) ^
- rotate(m_texmode0, 24) ^
- rotate(m_texmode1, 30);
+ rotl_32(m_alphamode, 0) ^
+ rotl_32(m_fbzmode, 6) ^
+ rotl_32(m_fbzcp, 12) ^
+ rotl_32(m_fogmode, 18) ^
+ rotl_32(m_texmode0, 24) ^
+ rotl_32(m_texmode1, 30);
}
diff --git a/src/devices/video/voodoo_render.h b/src/devices/video/voodoo_render.h
index 9eafef87f98..038948730be 100644
--- a/src/devices/video/voodoo_render.h
+++ b/src/devices/video/voodoo_render.h
@@ -321,9 +321,6 @@ public:
color_equation const &tex1_equation() const { return m_tex1_equation; }
private:
- // internal helpers
- static constexpr u32 rotate(u32 value, int count) { return (value << count) | (value >> (32 - count)); }
-
// internal state
u32 m_generic; // 4 bits
u32 m_fbzcp; // 30 bits
diff --git a/src/emu/devdelegate.h b/src/emu/devdelegate.h
index 69381b2576b..5f7af89383b 100644
--- a/src/emu/devdelegate.h
+++ b/src/emu/devdelegate.h
@@ -21,6 +21,14 @@
#include <utility>
+// older versions of libc++ are missing deduction guides that the things using this constructor require
+#if defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION < 10000)
+namespace std { inline namespace __1 {
+template<class R, class... ArgTypes > function( R(*)(ArgTypes...) ) -> function<R(ArgTypes...)>;
+} }
+#endif
+
+
namespace emu {
//**************************************************************************
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp
index f60fa032dd8..016f577f071 100644
--- a/src/emu/diimage.cpp
+++ b/src/emu/diimage.cpp
@@ -20,6 +20,7 @@
#include "corestr.h"
#include "opresolv.h"
+#include "path.h"
#include "zippath.h"
#include <algorithm>
diff --git a/src/emu/dipalette.h b/src/emu/dipalette.h
index 1e84b2848e8..5d7f6b30506 100644
--- a/src/emu/dipalette.h
+++ b/src/emu/dipalette.h
@@ -43,8 +43,8 @@ class device_palette_interface : public device_interface
public:
// getters
- u32 entries() const { return palette_entries(); }
- u32 indirect_entries() const { return palette_indirect_entries(); }
+ u32 entries() const noexcept { return palette_entries(); }
+ u32 indirect_entries() const noexcept { return palette_indirect_entries(); }
palette_t *palette() const { return m_palette; }
const pen_t &pen(int index) const { return m_pens[index]; }
const pen_t *pens() const { return m_pens; }
@@ -53,8 +53,8 @@ public:
double pen_contrast(pen_t pen) const { return m_palette->entry_contrast(pen); }
pen_t black_pen() const { return m_black_pen; }
pen_t white_pen() const { return m_white_pen; }
- bool shadows_enabled() const { return palette_shadows_enabled(); }
- bool hilights_enabled() const { return palette_hilights_enabled(); }
+ bool shadows_enabled() const noexcept { return palette_shadows_enabled(); }
+ bool hilights_enabled() const noexcept { return palette_hilights_enabled(); }
// setters
void set_pen_color(pen_t pen, rgb_t rgb) { m_palette->entry_set_color(pen, rgb); }
@@ -92,10 +92,10 @@ protected:
virtual void interface_post_stop() override;
// configuration-related overrides
- virtual u32 palette_entries() const = 0;
- virtual u32 palette_indirect_entries() const { return 0; }
- virtual bool palette_shadows_enabled() const { return false; }
- virtual bool palette_hilights_enabled() const { return false; }
+ virtual u32 palette_entries() const noexcept = 0;
+ virtual u32 palette_indirect_entries() const noexcept { return 0; }
+ virtual bool palette_shadows_enabled() const noexcept { return false; }
+ virtual bool palette_hilights_enabled() const noexcept { return false; }
private:
// internal helpers
diff --git a/src/emu/dislot.cpp b/src/emu/dislot.cpp
index 868b0ebf103..06ff055e293 100644
--- a/src/emu/dislot.cpp
+++ b/src/emu/dislot.cpp
@@ -10,6 +10,7 @@
#include "emuopts.h"
#include "corestr.h"
+#include "path.h"
#include "zippath.h"
diff --git a/src/emu/emucore.h b/src/emu/emucore.h
index 41a32dc8ffe..af78cb98565 100644
--- a/src/emu/emucore.h
+++ b/src/emu/emucore.h
@@ -199,47 +199,6 @@ constexpr int ROT270 = ORIENTATION_SWAP_XY | ORIENTATION_FLIP_Y;
/// \}
-// these are UTF-8 encoded strings for common characters
-#define UTF8_NBSP "\xc2\xa0" /* non-breaking space */
-
-#define UTF8_MULTIPLY "\xc3\x97" /* multiplication sign */
-#define UTF8_DIVIDE "\xc3\xb7" /* division sign */
-#define UTF8_SQUAREROOT "\xe2\x88\x9a" /* square root symbol */
-#define UTF8_PLUSMINUS "\xc2\xb1" /* plusminus symbol */
-
-#define UTF8_POW_2 "\xc2\xb2" /* superscript 2 */
-#define UTF8_POW_X "\xcb\xa3" /* superscript x */
-#define UTF8_POW_Y "\xca\xb8" /* superscript y */
-#define UTF8_PRIME "\xca\xb9" /* prime symbol */
-#define UTF8_DEGREES "\xc2\xb0" /* degrees symbol */
-
-#define UTF8_SMALL_PI "\xcf\x80" /* Greek small letter pi */
-#define UTF8_CAPITAL_SIGMA "\xce\xa3" /* Greek capital letter sigma */
-#define UTF8_CAPITAL_DELTA "\xce\x94" /* Greek capital letter delta */
-
-#define UTF8_MACRON "\xc2\xaf" /* macron symbol */
-#define UTF8_NONSPACE_MACRON "\xcc\x84" /* nonspace macron, use after another char */
-
-#define a_RING "\xc3\xa5" /* small a with a ring */
-#define a_UMLAUT "\xc3\xa4" /* small a with an umlaut */
-#define o_UMLAUT "\xc3\xb6" /* small o with an umlaut */
-#define u_UMLAUT "\xc3\xbc" /* small u with an umlaut */
-#define e_ACUTE "\xc3\xa9" /* small e with an acute */
-#define n_TILDE "\xc3\xb1" /* small n with a tilde */
-
-#define A_RING "\xc3\x85" /* capital A with a ring */
-#define A_UMLAUT "\xc3\x84" /* capital A with an umlaut */
-#define O_UMLAUT "\xc3\x96" /* capital O with an umlaut */
-#define U_UMLAUT "\xc3\x9c" /* capital U with an umlaut */
-#define E_ACUTE "\xc3\x89" /* capital E with an acute */
-#define N_TILDE "\xc3\x91" /* capital N with a tilde */
-
-#define UTF8_LEFT "\xe2\x86\x90" /* cursor left */
-#define UTF8_RIGHT "\xe2\x86\x92" /* cursor right */
-#define UTF8_UP "\xe2\x86\x91" /* cursor up */
-#define UTF8_DOWN "\xe2\x86\x93" /* cursor down */
-
-
//**************************************************************************
// COMMON MACROS
diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp
index 5e0e5735a2e..827b7249e07 100644
--- a/src/emu/emuopts.cpp
+++ b/src/emu/emuopts.cpp
@@ -15,6 +15,7 @@
#include "hashfile.h"
#include "corestr.h"
+#include "path.h"
#include <stack>
diff --git a/src/emu/emupal.h b/src/emu/emupal.h
index 73ee3809e90..cb4884a72fb 100644
--- a/src/emu/emupal.h
+++ b/src/emu/emupal.h
@@ -373,10 +373,10 @@ protected:
virtual void device_start() override;
// device_palette_interface overrides
- virtual u32 palette_entries() const override { return m_entries; }
- virtual u32 palette_indirect_entries() const override { return m_indirect_entries; }
- virtual bool palette_shadows_enabled() const override { return m_enable_shadows; }
- virtual bool palette_hilights_enabled() const override { return m_enable_hilights; }
+ virtual u32 palette_entries() const noexcept override { return m_entries; }
+ virtual u32 palette_indirect_entries() const noexcept override { return m_indirect_entries; }
+ virtual bool palette_shadows_enabled() const noexcept override { return m_enable_shadows; }
+ virtual bool palette_hilights_enabled() const noexcept override { return m_enable_hilights; }
// generic palette init routines
void palette_init_all_black(palette_device &palette);
diff --git a/src/emu/rendfont.cpp b/src/emu/rendfont.cpp
index ed60987e455..998e825b61d 100644
--- a/src/emu/rendfont.cpp
+++ b/src/emu/rendfont.cpp
@@ -16,6 +16,7 @@
#include "corestr.h"
#include "coreutil.h"
+#include "path.h"
#include "osdepend.h"
#include "uismall.fh"
diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp
index f76ea7d24fb..8fed2d6def0 100644
--- a/src/emu/validity.cpp
+++ b/src/emu/validity.cpp
@@ -17,6 +17,7 @@
#include "video/rgbutil.h"
#include "corestr.h"
+#include "path.h"
#include "unicode.h"
#include <cctype>
@@ -321,6 +322,34 @@ void validate_inlines()
if (resultu8 != i)
osd_printf_error("Error testing count_leading_ones_32 %08x=%02x (expected %02x)\n", t, resultu8, i);
}
+
+ u32 expected32 = testu32a << 1 | testu32a >> 31;
+ for (int i = -33; i <= 33; i++)
+ {
+ u32 resultu32r = rotr_32(testu32a, i);
+ u32 resultu32l = rotl_32(testu32a, -i);
+
+ if (resultu32r != expected32)
+ osd_printf_error("Error testing rotr_32 %08x, %d=%08x (expected %08x)\n", u32(testu32a), i, resultu32r, expected32);
+ if (resultu32l != expected32)
+ osd_printf_error("Error testing rotl_32 %08x, %d=%08x (expected %08x)\n", u32(testu32a), -i, resultu32l, expected32);
+
+ expected32 = expected32 >> 1 | expected32 << 31;
+ }
+
+ u64 expected64 = testu64a << 1 | testu64a >> 63;
+ for (int i = -65; i <= 65; i++)
+ {
+ u64 resultu64r = rotr_64(testu64a, i);
+ u64 resultu64l = rotl_64(testu64a, -i);
+
+ if (resultu64r != expected64)
+ osd_printf_error("Error testing rotr_64 %016x, %d=%016x (expected %016x)\n", u64(testu64a), i, resultu64r, expected64);
+ if (resultu64l != expected64)
+ osd_printf_error("Error testing rotl_64 %016x, %d=%016x (expected %016x)\n", u64(testu64a), -i, resultu64l, expected64);
+
+ expected64 = expected64 >> 1 | expected64 << 63;
+ }
}
diff --git a/src/emu/video.cpp b/src/emu/video.cpp
index bccaac58a00..8f9e9e3623a 100644
--- a/src/emu/video.cpp
+++ b/src/emu/video.cpp
@@ -19,6 +19,7 @@
#include "screen.h"
#include "corestr.h"
+#include "path.h"
#include "png.h"
#include "xmlfile.h"
diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp
index 9e04f1ed77b..6faa41dec41 100644
--- a/src/frontend/mame/clifront.cpp
+++ b/src/frontend/mame/clifront.cpp
@@ -31,6 +31,7 @@
#include "chd.h"
#include "corestr.h"
+#include "path.h"
#include "unzip.h"
#include "xmlfile.h"
diff --git a/src/frontend/mame/mameopts.cpp b/src/frontend/mame/mameopts.cpp
index bbdf8a692b4..c6031308592 100644
--- a/src/frontend/mame/mameopts.cpp
+++ b/src/frontend/mame/mameopts.cpp
@@ -15,10 +15,12 @@
#include "fileio.h"
#include "screen.h"
#include "softlist_dev.h"
-#include "zippath.h"
#include "hashfile.h"
#include "clifront.h"
+#include "path.h"
+#include "zippath.h"
+
#include <cctype>
#include <stack>
diff --git a/src/frontend/mame/media_ident.cpp b/src/frontend/mame/media_ident.cpp
index 7e6665bc765..d09858198ea 100644
--- a/src/frontend/mame/media_ident.cpp
+++ b/src/frontend/mame/media_ident.cpp
@@ -14,6 +14,7 @@
#include "softlist_dev.h"
#include "jedparse.h"
+#include "path.h"
#include "unzip.h"
diff --git a/src/frontend/mame/ui/custui.cpp b/src/frontend/mame/ui/custui.cpp
index 090f657169a..febb6a89472 100644
--- a/src/frontend/mame/ui/custui.cpp
+++ b/src/frontend/mame/ui/custui.cpp
@@ -22,6 +22,7 @@
#include "corestr.h"
#include "osdepend.h"
+#include "path.h"
#include <algorithm>
#include <iterator>
diff --git a/src/frontend/mame/ui/devopt.cpp b/src/frontend/mame/ui/devopt.cpp
index 0f20c35486f..1fc1e83564f 100644
--- a/src/frontend/mame/ui/devopt.cpp
+++ b/src/frontend/mame/ui/devopt.cpp
@@ -15,6 +15,8 @@
#include "romload.h"
#include "screen.h"
+#include "utf8.h"
+
namespace ui {
diff --git a/src/frontend/mame/ui/filecreate.cpp b/src/frontend/mame/ui/filecreate.cpp
index 44d50108b8c..675ddc93ea6 100644
--- a/src/frontend/mame/ui/filecreate.cpp
+++ b/src/frontend/mame/ui/filecreate.cpp
@@ -17,6 +17,7 @@
#include "ui/ui.h"
#include "ui/utils.h"
+#include "path.h"
#include "zippath.h"
#include <cstring>
diff --git a/src/frontend/mame/ui/info.cpp b/src/frontend/mame/ui/info.cpp
index da1bc11eb77..5c031d1fe01 100644
--- a/src/frontend/mame/ui/info.cpp
+++ b/src/frontend/mame/ui/info.cpp
@@ -21,6 +21,8 @@
#include "softlist.h"
#include "speaker.h"
+#include "utf8.h"
+
#include <set>
#include <sstream>
#include <type_traits>
diff --git a/src/frontend/mame/ui/inifile.cpp b/src/frontend/mame/ui/inifile.cpp
index 55c7da2d919..c4217f93fa3 100644
--- a/src/frontend/mame/ui/inifile.cpp
+++ b/src/frontend/mame/ui/inifile.cpp
@@ -20,6 +20,7 @@
#include "softlist_dev.h"
#include "corestr.h"
+#include "path.h"
#include <algorithm>
#include <cstring>
diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp
index 0733f554506..d043157dbea 100644
--- a/src/frontend/mame/ui/miscmenu.cpp
+++ b/src/frontend/mame/ui/miscmenu.cpp
@@ -29,6 +29,8 @@
#include "romload.h"
#include "uiinput.h"
+#include "path.h"
+
#include <algorithm>
#include <cstring>
#include <fstream>
diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp
index c15fcff7a26..7255db8427f 100644
--- a/src/frontend/mame/ui/selsoft.cpp
+++ b/src/frontend/mame/ui/selsoft.cpp
@@ -16,7 +16,6 @@
#include "ui/inifile.h"
#include "ui/selector.h"
-#include "corestr.h"
#include "drivenum.h"
#include "emuopts.h"
#include "fileio.h"
@@ -25,6 +24,9 @@
#include "softlist_dev.h"
#include "uiinput.h"
#include "luaengine.h"
+
+#include "corestr.h"
+#include "path.h"
#include "unicode.h"
#include <algorithm>
diff --git a/src/frontend/mame/ui/state.cpp b/src/frontend/mame/ui/state.cpp
index 6aa5d3c6fa4..635b980c6ba 100644
--- a/src/frontend/mame/ui/state.cpp
+++ b/src/frontend/mame/ui/state.cpp
@@ -14,6 +14,8 @@
#include "emuopts.h"
#include "inputdev.h"
+#include "path.h"
+
namespace ui {
diff --git a/src/frontend/mame/ui/ui.cpp b/src/frontend/mame/ui/ui.cpp
index 3299448a1f4..878e175d22a 100644
--- a/src/frontend/mame/ui/ui.cpp
+++ b/src/frontend/mame/ui/ui.cpp
@@ -46,6 +46,8 @@
#include "../osd/modules/lib/osdlib.h"
#include "../osd/modules/lib/osdobj_common.h"
+#include "utf8.h"
+
#include <chrono>
#include <functional>
#include <type_traits>
diff --git a/src/frontend/mame/ui/videoopt.cpp b/src/frontend/mame/ui/videoopt.cpp
index 253271beb4f..67881db6cd0 100644
--- a/src/frontend/mame/ui/videoopt.cpp
+++ b/src/frontend/mame/ui/videoopt.cpp
@@ -14,6 +14,8 @@
#include "rendlay.h"
#include "rendutil.h"
+#include "utf8.h"
+
namespace ui {
diff --git a/src/lib/formats/ap2_dsk.cpp b/src/lib/formats/ap2_dsk.cpp
index bb29cd1702b..6cb22219b93 100644
--- a/src/lib/formats/ap2_dsk.cpp
+++ b/src/lib/formats/ap2_dsk.cpp
@@ -2,7 +2,7 @@
// copyright-holders:Olivier Galibert, R. Belmont
/*********************************************************************
- ap2_dsk.c
+ ap2_dsk.cpp
Apple II disk images
@@ -17,31 +17,6 @@
#include <cstdlib>
#include <cstring>
-
-#define APPLE2_IMAGE_DO 0
-#define APPLE2_IMAGE_PO 1
-#define APPLE2_IMAGE_NIB 2
-
-
-/* used in for all Apple II images */
-static uint32_t apple2_get_track_size(floppy_image_legacy *floppy, int head, int track);
-static int disk_decode_nib(uint8_t *data, const uint8_t *nibble, int *volume, int *track, int *sector);
-static void disk_encode_nib(uint8_t *nibble, const uint8_t *data, int volume, int track, int sector);
-
-/* used in DOS/ProDOS order images */
-static int apple2_do_translate_sector(floppy_image_legacy *floppy, int sector);
-static int apple2_po_translate_sector(floppy_image_legacy *floppy, int sector);
-static floperr_t apple2_dsk_read_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, void *buffer, size_t buflen);
-static floperr_t apple2_dsk_write_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, const void *buffer, size_t buflen);
-
-/* used in nibble order images */
-static floperr_t apple2_nib_read_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, void *buffer, size_t buflen);
-static floperr_t apple2_nib_write_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, const void *buffer, size_t buflen);
-static floperr_t apple2_nib_read_sector(floppy_image_legacy *floppy, int head, int track, int sector, void *buffer, size_t buflen);
-static floperr_t apple2_nib_write_sector(floppy_image_legacy *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam);
-static floperr_t apple2_nib_get_sector_length(floppy_image_legacy *floppy, int head, int track, int sector, uint32_t *sector_length);
-
-
static const uint8_t translate6[0x40] =
{
0x96, 0x97, 0x9a, 0x9b, 0x9d, 0x9e, 0x9f, 0xa6,
@@ -54,476 +29,6 @@ static const uint8_t translate6[0x40] =
0xf7, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
-
-
-/* -----------------------------------------------------------------------
- * Utility code
- * ----------------------------------------------------------------------- */
-
-static const uint8_t *get_untranslate6_map(void)
-{
- static uint8_t map[256];
- static int map_inited = 0;
- uint8_t i;
-
- if (!map_inited)
- {
- memset(map, 0xff, sizeof(map));
- for (i = 0; i < std::size(translate6); i++)
- map[translate6[i]] = i;
- map_inited = 1;
- }
- return map;
-}
-
-
-
-/* -----------------------------------------------------------------------
- * Core constructor
- * ----------------------------------------------------------------------- */
-
-
-static floperr_t apple2_general_construct(floppy_image_legacy *floppy, int floppy_type)
-{
- floperr_t err;
- struct basicdsk_geometry geometry;
- struct FloppyCallbacks *format;
-
- format = floppy_callbacks(floppy);
-
- switch(floppy_type) {
- case APPLE2_IMAGE_DO:
- case APPLE2_IMAGE_PO:
- memset(&geometry, 0, sizeof(geometry));
- geometry.heads = 1;
- geometry.tracks = APPLE2_TRACK_COUNT;
- geometry.sectors = APPLE2_SECTOR_COUNT;
- geometry.sector_length = APPLE2_SECTOR_SIZE;
- geometry.translate_sector = (floppy_type == APPLE2_IMAGE_DO) ? apple2_do_translate_sector : apple2_po_translate_sector;
-
- err = basicdsk_construct(floppy, &geometry);
- if (err)
- return err;
-
- format->read_track = apple2_dsk_read_track;
- format->write_track = apple2_dsk_write_track;
- break;
-
- case APPLE2_IMAGE_NIB:
- format->read_track = apple2_nib_read_track;
- format->write_track = apple2_nib_write_track;
- format->read_sector = apple2_nib_read_sector;
- format->write_sector = apple2_nib_write_sector;
- format->get_sector_length = apple2_nib_get_sector_length;
- break;
-
- default:
- assert(0);
- return FLOPPY_ERROR_INTERNAL;
- }
-
- format->get_track_size = apple2_get_track_size;
-
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-/* -----------------------------------------------------------------------
- * DOS order and ProDOS order code
- * ----------------------------------------------------------------------- */
-
-static FLOPPY_IDENTIFY(apple2_dsk_identify)
-{
- uint64_t size;
- uint64_t expected_size;
-
- size = floppy_image_size(floppy);
- expected_size = APPLE2_TRACK_COUNT * APPLE2_SECTOR_COUNT * APPLE2_SECTOR_SIZE;
-
- if ((size == expected_size) || (size == APPLE2_STD_TRACK_COUNT * APPLE2_SECTOR_COUNT * APPLE2_SECTOR_SIZE))
- *vote = 100;
- else if ((size > expected_size) && ((size - expected_size) < 8))
- *vote = 90; /* tolerate images with up to eight fewer/extra bytes (bug #638) */
- else if ((size < expected_size) && ((expected_size - size) < 8))
- *vote = 90; /* tolerate images with up to eight fewer/extra bytes (bug #638) */
- else
- *vote = 0;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static int apple2_do_translate_sector(floppy_image_legacy *floppy, int sector)
-{
- static const uint8_t skewing[] =
- {
- /* DOS order (*.do) */
- 0x00, 0x07, 0x0E, 0x06, 0x0D, 0x05, 0x0C, 0x04,
- 0x0B, 0x03, 0x0A, 0x02, 0x09, 0x01, 0x08, 0x0F
- };
- return skewing[sector];
-}
-
-
-
-static int apple2_po_translate_sector(floppy_image_legacy *floppy, int sector)
-{
- static const uint8_t skewing[] =
- {
- /* ProDOS order (*.po) */
- 0x00, 0x08, 0x01, 0x09, 0x02, 0x0A, 0x03, 0x0B,
- 0x04, 0x0C, 0x05, 0x0D, 0x06, 0x0E, 0x07, 0x0F
- };
- return skewing[sector];
-}
-
-
-
-static FLOPPY_CONSTRUCT(apple2_do_construct)
-{
- return apple2_general_construct(floppy, APPLE2_IMAGE_DO);
-}
-
-
-
-static FLOPPY_CONSTRUCT(apple2_po_construct)
-{
- return apple2_general_construct(floppy, APPLE2_IMAGE_PO);
-}
-
-
-
-static floperr_t apple2_dsk_read_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, void *buffer, size_t buflen)
-{
- uint8_t sector_buffer[APPLE2_SECTOR_SIZE];
- int sector;
- uint8_t *nibble;
-
- if (buflen < APPLE2_NIBBLE_SIZE*APPLE2_SECTOR_COUNT)
- return FLOPPY_ERROR_INTERNAL;
- if (offset != 0)
- return FLOPPY_ERROR_UNSUPPORTED;
-
- memset(buffer, 0, buflen);
-
- for (sector = 0; sector < APPLE2_SECTOR_COUNT; sector++)
- {
- nibble = (uint8_t *)buffer;
- nibble += sector * APPLE2_SMALL_NIBBLE_SIZE;
-
- floppy_read_sector(floppy, head, track, sector, 0, sector_buffer, sizeof(sector_buffer));
- disk_encode_nib(nibble, sector_buffer, 254, track, sector);
- }
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple2_dsk_write_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, const void *buffer, size_t buflen)
-{
- int sector;
- uint8_t sector_buffer[APPLE2_SECTOR_SIZE];
- const uint8_t *nibble;
-
- if (offset != 0)
- return FLOPPY_ERROR_UNSUPPORTED;
-
- for (sector = 0; sector < APPLE2_SECTOR_COUNT; sector++)
- {
- nibble = (uint8_t *)buffer;
- nibble += sector * APPLE2_SMALL_NIBBLE_SIZE;
-
- disk_decode_nib(sector_buffer, nibble, nullptr, nullptr, nullptr);
- floppy_write_sector(floppy, head, track, sector, 0, sector_buffer, sizeof(sector_buffer), 0);
- }
-
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-/* -----------------------------------------------------------------------
- * Nibble order code
- * ----------------------------------------------------------------------- */
-
-static FLOPPY_IDENTIFY(apple2_nib_identify)
-{
- uint64_t size;
- size = floppy_image_size(floppy);
- *vote = ((size == APPLE2_STD_TRACK_COUNT * APPLE2_SECTOR_COUNT * APPLE2_NIBBLE_SIZE) || (size == (APPLE2_STD_TRACK_COUNT + 1) * APPLE2_SECTOR_COUNT * APPLE2_NIBBLE_SIZE)) ? 100 : 0;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static FLOPPY_CONSTRUCT(apple2_nib_construct)
-{
- return apple2_general_construct(floppy, APPLE2_IMAGE_NIB);
-}
-
-
-
-static floperr_t apple2_nib_read_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, void *buffer, size_t buflen)
-{
- if ((head != 0) || (track < 0) || (track > APPLE2_TRACK_COUNT))
- return FLOPPY_ERROR_SEEKERROR;
- if (offset != 0)
- return FLOPPY_ERROR_UNSUPPORTED;
- floppy_image_read(floppy, buffer, track * APPLE2_NIBBLE_SIZE * APPLE2_SECTOR_COUNT, buflen);
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple2_nib_write_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, const void *buffer, size_t buflen)
-{
- if ((head != 0) || (track < 0) || (track > APPLE2_TRACK_COUNT))
- return FLOPPY_ERROR_SEEKERROR;
- if (offset != 0)
- return FLOPPY_ERROR_UNSUPPORTED;
- floppy_image_write(floppy, buffer, track * APPLE2_NIBBLE_SIZE * APPLE2_SECTOR_COUNT, buflen);
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-/* -----------------------------------------------------------------------
- * Track conversion
- * ----------------------------------------------------------------------- */
-
-static int decode_nibbyte(uint8_t *nibint, const uint8_t *nibdata)
-{
- if ((nibdata[0] & 0xAA) != 0xAA)
- return 1;
- if ((nibdata[1] & 0xAA) != 0xAA)
- return 1;
-
- *nibint = (nibdata[0] & ~0xAA) << 1;
- *nibint |= (nibdata[1] & ~0xAA) << 0;
- return 0;
-}
-
-
-
-static int disk_decode_nib(uint8_t *data, const uint8_t *nibble, int *volume, int *track, int *sector)
-{
- uint8_t read_volume;
- uint8_t read_track;
- uint8_t read_sector;
- uint8_t read_checksum;
- int i;
- uint8_t b, xorvalue, newvalue;
-
- const uint8_t *untranslate6 = get_untranslate6_map();
-
- /* pick apart the volume/track/sector info and checksum */
- if (decode_nibbyte(&read_volume, &nibble[10]))
- return 1;
- if (decode_nibbyte(&read_track, &nibble[12]))
- return 1;
- if (decode_nibbyte(&read_sector, &nibble[14]))
- return 1;
- if (decode_nibbyte(&read_checksum, &nibble[16]))
- return 1;
- if (read_checksum != (read_volume ^ read_track ^ read_sector))
- return 1;
-
- /* decode the nibble core */
- xorvalue = 0;
- for (i = 0; i < 342; i++)
- {
- b = untranslate6[nibble[i+28]];
- if (b == 0xff)
- return 1;
- newvalue = b ^ xorvalue;
-
- if (i >= 0x56)
- {
- /* 6 bit */
- data[i - 0x56] |= (newvalue << 2);
- }
- else
- {
- /* 3 * 2 bit */
- data[i + 0x00] = ((newvalue >> 1) & 0x01) | ((newvalue << 1) & 0x02);
- data[i + 0x56] = ((newvalue >> 3) & 0x01) | ((newvalue >> 1) & 0x02);
- if (i + 0xAC < APPLE2_SECTOR_SIZE)
- data[i + 0xAC] = ((newvalue >> 5) & 0x01) | ((newvalue >> 3) & 0x02);
- }
- xorvalue = newvalue;
- }
-
- /* success; write out values if pointers not null */
- if (volume)
- *volume = read_volume;
- if (track)
- *track = read_track;
- if (sector)
- *sector = read_sector;
- return 0;
-}
-
-
-
-static floperr_t apple2_nib_read_sector(floppy_image_legacy *floppy, int head, int track, int sector, void *buffer, size_t buflen)
-{
- floperr_t err;
- const uint8_t *nibble;
- uint8_t *track_data;
- void *track_data_v;
-
- if ((sector < 0) || (sector >= APPLE2_SECTOR_COUNT))
- return FLOPPY_ERROR_SEEKERROR;
- if (buflen != APPLE2_SECTOR_SIZE)
- return FLOPPY_ERROR_INTERNAL;
-
- err = floppy_load_track(floppy, head, track, false, &track_data_v, nullptr);
- if (err)
- return err;
- track_data = (uint8_t *) track_data_v;
-
- nibble = track_data + (sector * APPLE2_NIBBLE_SIZE);
-
- if (disk_decode_nib((uint8_t *)buffer, nibble, nullptr, nullptr, nullptr))
- return FLOPPY_ERROR_INVALIDIMAGE;
-
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static void disk_encode_nib(uint8_t *nibble, const uint8_t *data, int volume, int track, int sector)
-{
- int checksum, oldvalue, xorvalue, i;
-
- /* setup header values */
- checksum = volume ^ track ^ sector;
-
- memset(nibble, 0xFF, APPLE2_NIBBLE_SIZE);
- nibble[ 7] = 0xD5;
- nibble[ 8] = 0xAA;
- nibble[ 9] = 0x96;
- nibble[10] = (volume >> 1) | 0xAA;
- nibble[11] = volume | 0xAA;
- nibble[12] = (track >> 1) | 0xAA;
- nibble[13] = track | 0xAA;
- nibble[14] = (sector >> 1) | 0xAA;
- nibble[15] = sector | 0xAA;
- nibble[16] = (checksum >> 1) | 0xAA;
- nibble[17] = (checksum) | 0xAA;
- nibble[18] = 0xDE;
- nibble[19] = 0xAA;
- nibble[20] = 0xEB;
- nibble[25] = 0xD5;
- nibble[26] = 0xAA;
- nibble[27] = 0xAD;
- nibble[27+344] = 0xDE;
- nibble[27+345] = 0xAA;
- nibble[27+346] = 0xEB;
- xorvalue = 0;
-
- for (i = 0; i < 342; i++)
- {
- if (i >= 0x56)
- {
- /* 6 bit */
- oldvalue = data[i - 0x56];
- oldvalue = oldvalue >> 2;
- }
- else
- {
- /* 3 * 2 bit */
- oldvalue = 0;
- oldvalue |= (data[i + 0x00] & 0x01) << 1;
- oldvalue |= (data[i + 0x00] & 0x02) >> 1;
- oldvalue |= (data[i + 0x56] & 0x01) << 3;
- oldvalue |= (data[i + 0x56] & 0x02) << 1;
- if (i + 0xAC < APPLE2_SECTOR_SIZE)
- {
- oldvalue |= (data[i + 0xAC] & 0x01) << 5;
- oldvalue |= (data[i + 0xAC] & 0x02) << 3;
- }
-
- }
- xorvalue ^= oldvalue;
- nibble[28+i] = translate6[xorvalue & 0x3F];
- xorvalue = oldvalue;
- }
-
- nibble[27+343] = translate6[xorvalue & 0x3F];
-}
-
-
-
-static floperr_t apple2_nib_write_sector(floppy_image_legacy *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam)
-{
- floperr_t err;
- uint8_t *track_data;
- void *track_data_v;
-
- if ((sector < 0) || (sector >= APPLE2_SECTOR_COUNT))
- return FLOPPY_ERROR_SEEKERROR;
- if (buflen != APPLE2_SECTOR_SIZE)
- return FLOPPY_ERROR_INTERNAL;
-
- err = floppy_load_track(floppy, head, track, true, &track_data_v, nullptr);
- if (err)
- return err;
- track_data = (uint8_t *) track_data_v;
-
- disk_encode_nib(track_data + sector * APPLE2_NIBBLE_SIZE, (const uint8_t *)buffer, 254, track, sector);
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple2_nib_get_sector_length(floppy_image_legacy *floppy, int head, int track, int sector, uint32_t *sector_length)
-{
- *sector_length = APPLE2_SECTOR_SIZE;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static uint32_t apple2_get_track_size(floppy_image_legacy *floppy, int head, int track)
-{
- return APPLE2_NIBBLE_SIZE * APPLE2_SECTOR_COUNT;
-}
-
-
-
-/* ----------------------------------------------------------------------- */
-
-LEGACY_FLOPPY_OPTIONS_START( apple2 )
- LEGACY_FLOPPY_OPTION( apple2_do, "do,dsk,bin", "Apple ][ DOS order disk image", apple2_dsk_identify, apple2_do_construct, nullptr,
- HEADS([1])
- TRACKS([40]) // APPLE2_TRACK_COUNT
- SECTORS([16])
- SECTOR_LENGTH([256])
- FIRST_SECTOR_ID([0]))
- LEGACY_FLOPPY_OPTION( apple2_po, "po,dsk,bin", "Apple ][ ProDOS order disk image", apple2_dsk_identify, apple2_po_construct, nullptr,
- HEADS([1])
- TRACKS([40]) // APPLE2_TRACK_COUNT
- SECTORS([16])
- SECTOR_LENGTH([256])
- FIRST_SECTOR_ID([0]))
- LEGACY_FLOPPY_OPTION( apple2_nib, "dsk,nib", "Apple ][ Nibble order disk image", apple2_nib_identify, apple2_nib_construct, nullptr,
- HEADS([1])
- TRACKS([40]) // APPLE2_TRACK_COUNT
- SECTORS([16])
- SECTOR_LENGTH([256])
- FIRST_SECTOR_ID([0]))
-LEGACY_FLOPPY_OPTIONS_END
-
-// license:BSD-3-Clause
-// copyright-holders:Olivier Galibert
-/***************************************************************************
-
- New implementation
-
-****************************************************************************/
-
static const uint8_t dos_skewing[] =
{
0x00, 0x07, 0x0E, 0x06, 0x0D, 0x05, 0x0C, 0x04,
diff --git a/src/lib/formats/ap2_dsk.h b/src/lib/formats/ap2_dsk.h
index 4d8d5519952..c5503133295 100644
--- a/src/lib/formats/ap2_dsk.h
+++ b/src/lib/formats/ap2_dsk.h
@@ -13,7 +13,6 @@
#pragma once
#include "flopimg.h"
-#include "flopimg_legacy.h"
/***************************************************************************
@@ -22,21 +21,14 @@
***************************************************************************/
-#define APPLE2_NIBBLE_SIZE 416
-#define APPLE2_SMALL_NIBBLE_SIZE 374
-#define APPLE2_STD_TRACK_COUNT 35
-#define APPLE2_TRACK_COUNT 40
-#define APPLE2_SECTOR_COUNT 16
-#define APPLE2_SECTOR_SIZE 256
-
-
+#define APPLE2_NIBBLE_SIZE 416
+#define APPLE2_SMALL_NIBBLE_SIZE 374
+#define APPLE2_STD_TRACK_COUNT 35
+#define APPLE2_TRACK_COUNT 40
+#define APPLE2_SECTOR_COUNT 16
+#define APPLE2_SECTOR_SIZE 256
/**************************************************************************/
-
-LEGACY_FLOPPY_OPTIONS_EXTERN(apple2);
-
-// new style code
-
class a2_16sect_format : public floppy_image_format_t
{
public:
diff --git a/src/lib/formats/ap_dsk35.cpp b/src/lib/formats/ap_dsk35.cpp
index 984ba6ce046..d481fdbb61a 100644
--- a/src/lib/formats/ap_dsk35.cpp
+++ b/src/lib/formats/ap_dsk35.cpp
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Nathan Woods, R. Belmont
+// copyright-holders:O. Galibert, R. Belmont
/*********************************************************************
ap_dsk35.c
@@ -108,1112 +108,6 @@
#include <cstdio>
#include <cstring>
-
-struct apple35_tag
-{
- uint32_t data_offset;
- uint32_t data_size;
- uint8_t format_byte;
- uint8_t sides;
- unsigned int is_1440k : 1;
-
- /* stuff used in DiskCopy images */
- uint32_t tag_offset;
- uint32_t tag_size;
-};
-
-
-
-/* normal number of sector for each track */
-static const uint8_t apple35_tracklen_800kb[80] =
-{
- 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
- 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
-};
-
-/* blocks of data used to nibblize tracks */
-static const uint8_t diskbytes[] =
-{
- 0x96, 0x97, 0x9A, 0x9B, 0x9D, 0x9E, 0x9F, 0xA6, /* 0x00 */
- 0xA7, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB2, 0xB3,
- 0xB4, 0xB5, 0xB6, 0xB7, 0xB9, 0xBA, 0xBB, 0xBC, /* 0x10 */
- 0xBD, 0xBE, 0xBF, 0xCB, 0xCD, 0xCE, 0xCF, 0xD3,
- 0xD6, 0xD7, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, /* 0x20 */
- 0xDF, 0xE5, 0xE6, 0xE7, 0xE9, 0xEA, 0xEB, 0xEC,
- 0xED, 0xEE, 0xEF, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, /* 0x30 */
- 0xF7, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
-};
-
-/* reverse lookup of diskbytes */
-static const int16_t rev_diskbytes[] =
-{
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x00 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x10 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x20 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x30 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x40 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x50 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x60 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x70 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0x80 */
- -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0x00, 0x01, /* 0x90 */
- -1, -1, 0x02, 0x03, -1, 0x04, 0x05, 0x06,
- -1, -1, -1, -1, -1, -1, 0x07, 0x08, /* 0xA0 */
- -1, -1, -1, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
- -1, -1, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, /* 0xB0 */
- -1, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
- -1, -1, -1, -1, -1, -1, -1, -1, /* 0xC0 */
- -1, -1, -1, 0x1B, -1, 0x1C, 0x1D, 0x1E,
- -1, -1, -1, 0x1F, -1, -1, 0x20, 0x21, /* 0xD0 */
- -1, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
- -1, -1, -1, -1, -1, 0x29, 0x2A, 0x2B, /* 0xE0 */
- -1, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32,
- -1, -1, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, /* 0xF0 */
- -1, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F
-};
-
-static const uint8_t blk1[] =
-{
- /*0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xD5, 0xAA, 0x96*/
- 0xFF,
- 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
- 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
- 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
- 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
- 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
- 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
- 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF,
- 0xD5, 0xAA, 0x96
-};
-static const uint8_t blk2[] =
-{
- 0xDE, 0xAA, 0xFF, 0xFF, 0x3F, 0xCF, 0xF3, 0xFC, 0xFF, 0xD5, 0xAA, 0xAD
-};
-static const uint8_t blk3[] =
-{
- 0xDE, 0xAA, 0xFF
-};
-
-
-
-static struct apple35_tag *get_apple35_tag(floppy_image_legacy *floppy)
-{
- struct apple35_tag *tag;
- tag = (struct apple35_tag *) floppy_tag(floppy);
- return tag;
-}
-
-
-
-int apple35_sectors_per_track(floppy_image_legacy *image, int track)
-{
- int sectors;
-
- assert(track >= 0);
- assert(track < std::size(apple35_tracklen_800kb));
-
- if (get_apple35_tag(image)->is_1440k)
- sectors = 18;
- else
- sectors = apple35_tracklen_800kb[track];
- return sectors;
-}
-
-
-
-/*
- converts data to its nibblized representation, and generate checksum
-
- now handles 524-byte-long sectors
-
- tag data IS important, since it allows data recovery when the catalog is trashed
-*/
-static void sony_nibblize35(const uint8_t *in, uint8_t *nib_ptr, uint8_t *csum)
-{
- int i, j;
- uint32_t c1, c2, c3, c4;
- uint8_t val;
- uint8_t w1, w2, w3, w4;
- uint8_t b1[175], b2[175], b3[175];
-
- /* Copy from the user's buffer to our buffer, while computing
- * the three-byte data checksum
- */
-
- i = 0;
- j = 0;
- c1 = 0;
- c2 = 0;
- c3 = 0;
- while (1)
- {
- c1 = (c1 & 0xFF) << 1;
- if (c1 & 0x0100)
- c1++;
-
- val = in[i++];
- c3 += val;
- if (c1 & 0x0100)
- {
- c3++;
- c1 &= 0xFF;
- }
- b1[j] = (val ^ c1) & 0xFF;
-
- val = in[i++];
- c2 += val;
- if (c3 > 0xFF)
- {
- c2++;
- c3 &= 0xFF;
- }
- b2[j] = (val ^ c3) & 0xFF;
-
- if (i == 524) break;
-
- val = in[i++];
- c1 += val;
- if (c2 > 0xFF)
- {
- c1++;
- c2 &= 0xFF;
- }
- b3[j] = (val ^ c2) & 0xFF;
- j++;
- }
- c4 = ((c1 & 0xC0) >> 6) | ((c2 & 0xC0) >> 4) | ((c3 & 0xC0) >> 2);
- b3[174] = 0;
-
- j = 0;
- for (i = 0; i <= 174; i++)
- {
- w1 = b1[i] & 0x3F;
- w2 = b2[i] & 0x3F;
- w3 = b3[i] & 0x3F;
- w4 = ((b1[i] & 0xC0) >> 2);
- w4 |= ((b2[i] & 0xC0) >> 4);
- w4 |= ((b3[i] & 0xC0) >> 6);
-
- nib_ptr[j++] = w4;
- nib_ptr[j++] = w1;
- nib_ptr[j++] = w2;
-
- if (i != 174) nib_ptr[j++] = w3;
- }
-
- csum[0] = c1 & 0x3F;
- csum[1] = c2 & 0x3F;
- csum[2] = c3 & 0x3F;
- csum[3] = c4 & 0x3F;
-}
-
-
-
-/*
- does the reverse process of sony_nibblize35
-*/
-static void sony_denibblize35(uint8_t *out, const uint8_t *nib_ptr, uint8_t *checksum)
-{
- int i, j;
- uint32_t c1,c2,c3,c4;
- uint8_t val;
- uint8_t w1,w2,w3=0,w4;
- uint8_t b1[175],b2[175],b3[175];
-
- j = 0;
- for (i=0; i<=174; i++)
- {
- w4 = nib_ptr[j++];
- w1 = nib_ptr[j++];
- w2 = nib_ptr[j++];
-
- if (i != 174) w3 = nib_ptr[j++];
-
- b1[i] = (w1 & 0x3F) | ((w4 << 2) & 0xC0);
- b2[i] = (w2 & 0x3F) | ((w4 << 4) & 0xC0);
- b3[i] = (w3 & 0x3F) | ((w4 << 6) & 0xC0);
- }
-
- /* Copy from the user's buffer to our buffer, while computing
- * the three-byte data checksum
- */
-
- i = 0;
- j = 0;
- c1 = 0;
- c2 = 0;
- c3 = 0;
- while (1)
- {
- c1 = (c1 & 0xFF) << 1;
- if (c1 & 0x0100)
- c1++;
-
- val = (b1[j] ^ c1) & 0xFF;
- c3 += val;
- if (c1 & 0x0100)
- {
- c3++;
- c1 &= 0xFF;
- }
- out[i++] = val;
-
- val = (b2[j] ^ c3) & 0xFF;
- c2 += val;
- if (c3 > 0xFF)
- {
- c2++;
- c3 &= 0xFF;
- }
- out[i++] = val;
-
- if (i == 524) break;
-
- val = (b3[j] ^ c2) & 0xFF;
- c1 += val;
- if (c2 > 0xFF)
- {
- c1++;
- c2 &= 0xFF;
- }
- out[i++] = val;
- j++;
- }
- c4 = ((c1 & 0xC0) >> 6) | ((c2 & 0xC0) >> 4) | ((c3 & 0xC0) >> 2);
- b3[174] = 0;
-
- checksum[0] = c1 & 0x3F;
- checksum[1] = c2 & 0x3F;
- checksum[2] = c3 & 0x3F;
- checksum[3] = c4 & 0x3F;
-}
-
-
-
-void sony_filltrack(uint8_t *buffer, size_t buffer_len, size_t *pos, uint8_t data)
-{
- buffer[*pos / 8] &= 0xFF << (8 - (*pos % 8));
- buffer[*pos / 8] |= data >> (*pos % 8);
-
- *pos += 8;
- *pos %= buffer_len * 8;
-
- buffer[*pos / 8] &= 0xFF >> (*pos % 8);
- buffer[*pos / 8] |= data << (8 - (*pos % 8));
-}
-
-
-
-uint8_t sony_fetchtrack(const uint8_t *buffer, size_t buffer_len, size_t *pos)
-{
- uint8_t data;
-
- data = buffer[*pos / 8] << (*pos % 8);
- *pos += 8;
- *pos %= (buffer_len * 8);
- data |= buffer[*pos / 8] >> (8 - (*pos % 8));
-
- while ((data & 0x80) == 0)
- {
- /* this code looks weird because it isn't simply rotating the new bit
- * in, but for some reason it won't work if I rotate the bit in; I
- * have to match the algorithm used by the old code */
- data <<= 1;
- data |= (buffer[*pos / 8] >> (8 - ((*pos % 8) + 1)));
- (*pos)++;
- *pos %= (buffer_len * 8);
- }
-
-// printf("sony_fetchtrack: pos %ld = %02x\n", *pos/8, data);
-
- return data;
-}
-
-
-
-static uint32_t apple35_get_offset(floppy_image_legacy *floppy, int head, int track, int sector, uint32_t *tag_offset)
-{
- int i;
- uint32_t sector_index = 0;
- struct apple35_tag *tag;
-
- tag = get_apple35_tag(floppy);
-
- if (track >= std::size(apple35_tracklen_800kb))
- return ~0;
- if (head >= tag->sides)
- return ~0;
- if (sector >= apple35_sectors_per_track(floppy, track))
- return ~0;
-
- for (i = 0; i < track; i++)
- sector_index += apple35_sectors_per_track(floppy, i);
- sector_index *= tag->sides;
- if (head)
- sector_index += apple35_sectors_per_track(floppy, i);
- sector_index += sector;
-
- if (tag_offset)
- {
- *tag_offset = sector_index * 12;
- if (*tag_offset >= tag->tag_size)
- {
- *tag_offset = ~0;
- }
- else
- {
- *tag_offset += tag->tag_offset;
- }
- }
- return sector_index * 0x200 + tag->data_offset;
-}
-
-
-
-static floperr_t apple35_read_sector(floppy_image_legacy *floppy, int head, int track, int sector, void *buffer, size_t buflen)
-{
- uint32_t data_offset;
- data_offset = apple35_get_offset(floppy, head, track, sector, nullptr);
- if (data_offset == ~0)
- {
- return FLOPPY_ERROR_SEEKERROR;
- }
- floppy_image_read(floppy, buffer, data_offset, buflen);
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple35_write_sector(floppy_image_legacy *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam)
-{
- uint32_t data_offset;
-
- data_offset = apple35_get_offset(floppy, head, track, sector, nullptr);
- if (data_offset == ~0)
- return FLOPPY_ERROR_SEEKERROR;
- floppy_image_write(floppy, buffer, data_offset, buflen);
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple35_read_sector_td(floppy_image_legacy *floppy, int head, int track, int sector, void *buffer, size_t buflen)
-{
- floperr_t err;
- uint32_t tag_offset = 0;
-
- assert(buflen == 524);
-
- /* first read the sector */
- err = apple35_read_sector(floppy, head, track, sector, ((uint8_t *) buffer) + 12, 512);
- if (err)
- {
- return err;
- }
-
- /* read the tag data, if possible */
- memset(buffer, '\0', 12);
- apple35_get_offset(floppy, head, track, sector, &tag_offset);
- if (tag_offset != ~0)
- {
- floppy_image_read(floppy, buffer, tag_offset, 12);
- }
-
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple35_write_sector_td(floppy_image_legacy *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam)
-{
- floperr_t err;
- uint32_t tag_offset = 0;
-
- assert(buflen == 524);
-
- /* first write the sector */
- err = apple35_write_sector(floppy, head, track, sector, ((const uint8_t *) buffer) + 12, 512, 0);
- if (err)
- return err;
-
- /* write the tag data, if possible */
- apple35_get_offset(floppy, head, track, sector, &tag_offset);
- if (tag_offset != ~0)
- floppy_image_write(floppy, buffer, tag_offset, 12);
-
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple35_get_sector_length(floppy_image_legacy *floppy, int head, int track, int sector, uint32_t *sector_length)
-{
- *sector_length = 512;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static int apple35_get_heads_per_disk(floppy_image_legacy *floppy)
-{
- return get_apple35_tag(floppy)->sides;
-}
-
-
-
-static int apple35_get_tracks_per_disk(floppy_image_legacy *floppy)
-{
- return 80;
-}
-
-
-
-static uint32_t apple35_get_track_size(floppy_image_legacy *floppy, int head, int track)
-{
- if ((track < 0) || (track >= 80))
- return 0;
- return apple35_sectors_per_track(floppy, track) * 800;
-}
-
-
-
-static uint8_t calculate_side(int head, int track)
-{
- uint8_t side;
- side = head ? 0x20 : 0x00;
- if (track & 0x40)
- side |= 0x01;
- return side;
-}
-
-
-
-static floperr_t apple35_read_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, void *buffer, size_t buflen)
-{
- floperr_t err;
- size_t pos = 0;
- int sector_count, sector, i;
- uint8_t sum, side;
- struct apple35_tag *tag;
- uint8_t sector_data[524];
- uint8_t nibble_data[699];
- uint8_t checksum[4];
-
- tag = get_apple35_tag(floppy);
-
- if (track >= std::size(apple35_tracklen_800kb))
- return FLOPPY_ERROR_SEEKERROR;
- if (offset != 0)
- return FLOPPY_ERROR_UNSUPPORTED;
-
- memset(buffer, 0xFF, buflen);
- sector_count = apple35_sectors_per_track(floppy, track);
- side = calculate_side(head, track);
-
- for (sector = 0; sector < sector_count; sector++)
- {
- /* read the sector */
- err = apple35_read_sector_td(floppy, head, track, sector, sector_data, std::size(sector_data));
- if (err)
- {
- return err;
- }
-
- sony_nibblize35(sector_data, nibble_data, checksum);
-
- for (i = 0; i < std::size(blk1); i++)
- sony_filltrack((uint8_t*)buffer, buflen, &pos, blk1[i]);
-
- sum = (track ^ sector ^ side ^ tag->format_byte) & 0x3F;
-
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[track & 0x3f]);
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[sector]);
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[side]);
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[tag->format_byte]);
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[sum]);
-
- for (i = 0; i < std::size(blk2); i++)
- sony_filltrack((uint8_t*)buffer, buflen, &pos, blk2[i]);
-
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[sector]);
-
- for (i = 0; i < std::size(nibble_data); i++)
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[nibble_data[i]]);
-
- for (i = 3; i >= 0; i--)
- sony_filltrack((uint8_t*)buffer, buflen, &pos, diskbytes[checksum[i]]);
-
- for (i = 0; i < std::size(blk3); i++)
- sony_filltrack((uint8_t*)buffer, buflen, &pos, blk3[i]);
- }
-
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple35_write_track(floppy_image_legacy *floppy, int head, int track, uint64_t offset, const void *buffer, size_t buflen)
-{
- floperr_t err;
- size_t pos = 0;
- int sector_count, sector, i, j;
- struct apple35_tag *tag;
- uint8_t sum, format_byte, val, side;
- uint32_t found_sectors = 0;
- uint8_t sector_data[524];
- uint8_t nibble_data[699];
- uint8_t checksum[4];
-
- tag = get_apple35_tag(floppy);
-
- if (track >= std::size(apple35_tracklen_800kb))
- return FLOPPY_ERROR_SEEKERROR;
- if (offset != 0)
- return FLOPPY_ERROR_UNSUPPORTED;
-
- sector_count = apple35_sectors_per_track(floppy, track);
- side = calculate_side(head, track);
-
- /* do 2 rotations, in case the bit slip stuff prevent us to read the first sector */
- for (j = 0; j < (buflen * 2); j++)
- {
- if (sony_fetchtrack((uint8_t*)buffer, buflen, &pos) != 0xD5)
- continue;
- j++;
-
- if (sony_fetchtrack((uint8_t*)buffer, buflen, &pos) != 0xAA)
- continue;
- j++;
-
- if (sony_fetchtrack((uint8_t*)buffer, buflen, &pos) != 0x96)
- continue;
- j++;
-
- if (rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)] != (track & 0x3F))
- continue;
- j++;
-
- sector = rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)];
- if ((sector < 0) || (sector >= sector_count))
- continue;
- j++;
-
- if (rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)] != side)
- continue;
- j++;
-
- format_byte = rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)];
- if (format_byte != tag->format_byte)
- {
- /* this is an error, but not THAT critical, I guess */
- }
- j++;
-
- sum = track ^ sector ^ side ^ format_byte;
- if (rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)] != sum)
- continue;
- j++;
-
- if (sony_fetchtrack((uint8_t*)buffer, buflen, &pos) != 0xDE)
- continue;
- j++;
-
- if (sony_fetchtrack((uint8_t*)buffer, buflen, &pos) != 0xAA)
- continue;
- j++;
-
- while((val = sony_fetchtrack((uint8_t*)buffer, buflen, &pos)) == 0xFF)
- j++;
- if (val != 0xD5)
- continue; /* lost bit slip mark! */
- j++;
-
- if (sony_fetchtrack((uint8_t*)buffer, buflen, &pos) != 0xAA)
- continue;
- j++;
-
- if (sony_fetchtrack((uint8_t*)buffer, buflen, &pos) != 0xAD)
- continue;
- j++;
-
- /* should this be regarded as a critical error ??? */
- if (rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)] != sector)
- continue;
- j++;
-
- for (i = 0; i < std::size(nibble_data); i++)
- {
- nibble_data[i] = rev_diskbytes[sony_fetchtrack((uint8_t*)buffer, buflen, &pos)];
- j++;
- }
-
- for (i = 3; i >= 0; i--)
- {
- /* should be checking checksum */
- sony_fetchtrack((uint8_t*)buffer, buflen, &pos);
- }
-
- sony_fetchtrack((uint8_t*)buffer, buflen, &pos); /* should get 0xDE */
- sony_fetchtrack((uint8_t*)buffer, buflen, &pos); /* should get 0xAA */
- sony_fetchtrack((uint8_t*)buffer, buflen, &pos); /* should get 0xFF */
-
- /* did we already write this sector? */
- if ((found_sectors & (1 << sector)) == 0)
- {
- sony_denibblize35(sector_data, nibble_data, checksum);
-
- /* write the sector */
- err = apple35_write_sector_td(floppy, head, track, sector, sector_data, std::size(sector_data), 0);
- if (err)
- return err;
-
- found_sectors |= 1 << sector;
- }
- }
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static floperr_t apple35_construct(floppy_image_legacy *floppy, uint32_t data_offset, uint32_t data_size,
- uint32_t tag_offset, uint32_t tag_size, int16_t format_byte, uint8_t sides, bool is_1440k)
-{
- struct apple35_tag *tag;
- struct FloppyCallbacks *format;
-
- /* figure out format byte if not specified */
- if (format_byte < 0)
- {
- switch(sides)
- {
- case 1:
- format_byte = 0x02;
- break;
- case 2:
- format_byte = 0x22;
- break;
- default:
- return FLOPPY_ERROR_INVALIDIMAGE;
- }
- }
-
- /* create tag */
- tag = (struct apple35_tag *) floppy_create_tag(floppy, sizeof(struct apple35_tag));
- if (!tag)
- return FLOPPY_ERROR_OUTOFMEMORY;
- tag->data_offset = data_offset;
- tag->data_size = data_size;
- tag->tag_offset = tag_offset;
- tag->tag_size = tag_size;
- tag->format_byte = (uint8_t) format_byte;
- tag->sides = sides;
- tag->is_1440k = is_1440k ? 1 : 0;
-
- /* set up format callbacks */
- format = floppy_callbacks(floppy);
- format->read_sector = apple35_read_sector;
- format->write_sector = apple35_write_sector;
- format->read_track = apple35_read_track;
- format->write_track = apple35_write_track;
- format->get_sector_length = apple35_get_sector_length;
- format->get_heads_per_disk = apple35_get_heads_per_disk;
- format->get_tracks_per_disk = apple35_get_tracks_per_disk;
- format->get_track_size = apple35_get_track_size;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-/* ----------------------------------------------------------------------- */
-
-static FLOPPY_IDENTIFY(apple35_raw_identify)
-{
- uint64_t size;
- size = floppy_image_size(floppy);
- *vote = ((size == 80*1*10*512) || (size == 80*2*10*512) || (size == (80*2*18*512)+84)
- || (size == 80*2*18*512)) ? 100 : 0;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-
-static FLOPPY_CONSTRUCT(apple35_raw_construct)
-{
- uint64_t size;
- uint8_t sides;
- bool is_1440k;
-
- if (params)
- {
- /* create */
- sides = params->lookup_int(PARAM_HEADS);
- size = 80*sides*10*512;
- is_1440k = false;
- }
- else
- {
- /* load */
- size = floppy_image_size(floppy);
- if (size == 80*1*10*512)
- {
- sides = 1;
- is_1440k = false;
- }
- else if ((size == 80*2*10*512) || (size == 80*2*18*512) || (size == (80*2*18*512)+84))
- {
- sides = 2;
- is_1440k = (size == 80*2*18*512) || (size == (80*2*18*512)+84);
- }
- else
- return FLOPPY_ERROR_INVALIDIMAGE;
- }
-
- return apple35_construct(floppy, 0, (uint32_t) size, 0, 0, -1, sides, is_1440k);
-}
-
-
-
-/* ----------------------------------------------------------------------- */
-
-struct header_diskcopy
-{
- uint8_t disk_name[64]; /* name of the disk */
- uint32_t data_size; /* total size of data for all sectors (512*number_of_sectors) */
- uint32_t tag_size; /* total size of tag data for all sectors (12*number_of_sectors for GCR 3.5" floppies, 20*number_of_sectors for HD20, 0 otherwise) */
- uint32_t data_checksum; /* CRC32 checksum of all sector data */
- uint32_t tag_checksum; /* CRC32 checksum of all tag data */
- uint8_t disk_format; /* 0 = 400K, 1 = 800K, 2 = 720K, 3 = 1440K (other values reserved) */
- uint8_t format_byte; /* should be $00 Apple II, $01 Lisa, $02 Mac MFS ??? */
- /* $12 = 400K, $22 = >400K Macintosh (DiskCopy uses this value for
- all Apple II disks not 800K in size, and even for some of those),
- $24 = 800K Apple II disk */
- uint16_t magic; /* always $0100 (otherwise, the file may be in a different format. */
-};
-
-
-
-static floperr_t apple35_diskcopy_headerdecode(floppy_image_legacy *floppy, uint32_t *data_offset,
- uint32_t *data_size, uint32_t *tag_offset, uint32_t *tag_size, uint8_t *format_byte, uint8_t *sides)
-{
- uint64_t size;
- struct header_diskcopy header;
-
- if (data_offset)
- *data_offset = 0;
- if (data_size)
- *data_size = 0;
- if (tag_offset)
- *tag_offset = 0;
- if (tag_size)
- *tag_size = 0;
- if (format_byte)
- *format_byte = 0;
- if (sides)
- *sides = 0;
-
- size = floppy_image_size(floppy);
- if (size < sizeof(struct header_diskcopy))
- return FLOPPY_ERROR_INVALIDIMAGE;
-
- floppy_image_read(floppy, &header, 0, sizeof(header));
-
- header.data_size = big_endianize_int32(header.data_size);
- header.tag_size = big_endianize_int32(header.tag_size);
- header.data_checksum = big_endianize_int32(header.data_checksum);
- header.tag_checksum = big_endianize_int32(header.tag_checksum);
- header.magic = big_endianize_int16(header.magic);
-
- if (header.disk_name[0] >= sizeof(header.disk_name))
- return FLOPPY_ERROR_INVALIDIMAGE;
- if (header.magic != 0x0100)
- return FLOPPY_ERROR_INVALIDIMAGE;
- if (size != (header.data_size + header.tag_size + sizeof(header)))
- return FLOPPY_ERROR_INVALIDIMAGE;
-
- if (header.data_size == 80*1*10*512)
- {
- if (sides)
- *sides = 1;
- }
- else if (header.data_size == 80*2*10*512)
- {
- if (sides)
- *sides = 2;
- }
- else
- return FLOPPY_ERROR_INVALIDIMAGE;
-
- if (data_offset)
- *data_offset = sizeof(header);
- if (data_size)
- *data_size = header.data_size;
- if (tag_offset)
- *tag_offset = sizeof(header) + header.data_size;
- if (tag_size)
- *tag_size = header.tag_size;
- if (format_byte)
- *format_byte = header.format_byte;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static FLOPPY_IDENTIFY(apple35_diskcopy_identify)
-{
- *vote = apple35_diskcopy_headerdecode(floppy, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr) ? 0 : 100;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-
-static FLOPPY_CONSTRUCT(apple35_diskcopy_construct)
-{
- floperr_t err;
- uint8_t format_byte, sides;
- uint32_t data_offset, data_size;
- uint32_t tag_offset, tag_size;
- int16_t format_byte_param = -1;
- struct header_diskcopy header;
-
- if (params)
- {
- /* create */
- sides = params->lookup_int(PARAM_HEADS);
-
- data_size = 80*sides*10*512;
- tag_size = 80*sides*10*12;
-
- memset(&header, 0, sizeof(header));
- header.data_size = big_endianize_int32(data_size);
- header.tag_size = big_endianize_int32(tag_size);
- header.disk_format = (sides > 1) ? 1 : 0;
- header.magic = big_endianize_int16(0x100);
-
- floppy_image_write(floppy, &header, 0, sizeof(header));
- floppy_image_write_filler(floppy, 0, sizeof(header), data_size + tag_size);
- }
-
- /* load */
- err = apple35_diskcopy_headerdecode(floppy, &data_offset, &data_size,
- &tag_offset, &tag_size, &format_byte, &sides);
- if (err)
- return err;
-
- format_byte_param = format_byte;
-
- return apple35_construct(floppy, data_offset, data_size,
- tag_offset, tag_size, format_byte_param, sides, false);
-}
-
-
-
-/* ----------------------------------------------------------------------- */
-
-struct header_2img
-{
- char magic[4]; /* '2IMG' */
- char creator[4]; /* signature; 'MESS' for MESS */
- uint16_t header_length;
- uint16_t version;
- uint32_t image_format;
- uint32_t flags;
- uint32_t block_count;
- uint32_t data_offset;
- uint32_t data_length;
- uint32_t comment_offset;
- uint32_t comment_length;
- uint32_t creator_offset;
- uint32_t creator_length;
- uint32_t padding[4];
-};
-
-#define IMAGE_FORMAT_DO 0
-#define IMAGE_FORMAT_PO 1
-#define IMAGE_FORMAT_NIB 2
-#define IMAGE_FLAGS_LOCKED 0x80000000
-
-
-
-static floperr_t apple35_2img_decode(floppy_image_legacy *floppy, uint32_t *image_format,
- uint32_t *data_offset, uint32_t *data_length)
-{
- struct header_2img header;
- uint64_t size;
-
- if (image_format)
- *image_format = 0;
- if (data_offset)
- *data_offset = 0;
- if (data_length)
- *data_length = 0;
-
- size = floppy_image_size(floppy);
- if (size < sizeof(header))
- {
- return FLOPPY_ERROR_INVALIDIMAGE;
- }
-
- floppy_image_read(floppy, &header, 0, sizeof(header));
-
- if (memcmp(header.magic, "2IMG", 4))
- {
- return FLOPPY_ERROR_INVALIDIMAGE;
- }
-
- header.header_length = little_endianize_int16(header.header_length);
- header.version = little_endianize_int16(header.version);
- header.image_format = little_endianize_int32(header.image_format);
- header.flags = little_endianize_int32(header.flags);
- header.block_count = little_endianize_int32(header.block_count);
- header.data_offset = little_endianize_int32(header.data_offset);
- header.data_length = little_endianize_int32(header.data_length);
- header.comment_offset = little_endianize_int32(header.comment_offset);
- header.comment_length = little_endianize_int32(header.comment_length);
- header.creator_offset = little_endianize_int32(header.creator_offset);
- header.creator_length = little_endianize_int32(header.creator_length);
-
- // at least some images "in the wild" (e.g. TOSEC Minor Set 1) have big-endian data sizes
- // even though that's against the .2mg spec
- if (header.data_length == 0x800c00)
- {
- LOG_FORMATS("ap_dsk35: corrected bad-endian data length\n");
- header.data_length = 0x0c8000;
- }
-
- if ((((uint64_t) header.data_offset) + header.data_length) > size)
- return FLOPPY_ERROR_INVALIDIMAGE;
- if ((((uint64_t) header.comment_offset) + header.comment_length) > size)
- return FLOPPY_ERROR_INVALIDIMAGE;
- if ((((uint64_t) header.creator_offset) + header.creator_length) > size)
- return FLOPPY_ERROR_INVALIDIMAGE;
- if ((header.image_format != IMAGE_FORMAT_DO) &&
- (header.image_format != IMAGE_FORMAT_PO) &&
- (header.image_format != IMAGE_FORMAT_NIB))
- return FLOPPY_ERROR_INVALIDIMAGE;
-
- if (image_format)
- *image_format = header.image_format;
- if (data_offset)
- *data_offset = header.data_offset;
- if (data_length)
- *data_length = header.data_length;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static FLOPPY_IDENTIFY(apple35_2img_identify)
-{
- *vote = apple35_2img_decode(floppy, nullptr, nullptr, nullptr) ? 0 : 100;
- return FLOPPY_ERROR_SUCCESS;
-}
-
-
-
-static FLOPPY_CONSTRUCT(apple35_2img_construct)
-{
- floperr_t err;
- uint32_t image_format;
- uint32_t data_offset;
- uint32_t data_size;
- uint8_t sides = 2;
- struct header_2img header;
-
- if (params)
- {
- /* create */
- sides = params->lookup_int(PARAM_HEADS);
-
- data_offset = sizeof(header);
- data_size = 80*sides*10*512;
-
- memset(&header, 0, sizeof(header));
- header.header_length = little_endianize_int16(sizeof(header));
- header.block_count = little_endianize_int32(80*sides*10);
- header.data_offset = little_endianize_int32(data_offset);
- header.data_length = little_endianize_int32(data_size);
-
- floppy_image_write(floppy, &header, 0, sizeof(header));
- floppy_image_write_filler(floppy, 0, sizeof(header), data_size);
- }
- else
- {
- /* load */
- err = apple35_2img_decode(floppy, &image_format, &data_offset, &data_size);
- if (err)
- return err;
-
- if (data_size == 80*1*10*512)
- sides = 1; /* single sided */
- else if (data_size == 80*2*10*512)
- sides = 2; /* double sided */
- else
- sides = 2; /* unknown... what to do... */
- }
-
- return apple35_construct(floppy, data_offset, data_size,
- 0, 0, -1, sides, false);
-}
-
-
-
-LEGACY_FLOPPY_OPTIONS_START( apple35_mac )
- LEGACY_FLOPPY_OPTION( apple35_raw, "dsk,img,image", "Apple raw 3.5\" disk image", apple35_raw_identify, apple35_raw_construct, nullptr,
- HEADS([1]-2)
- TRACKS([80])
- SECTOR_LENGTH([512])
- FIRST_SECTOR_ID([0]))
- LEGACY_FLOPPY_OPTION( apple35_dc, "dc,dc42,dsk,img,image", "Apple DiskCopy disk image", apple35_diskcopy_identify, apple35_diskcopy_construct, nullptr,
- HEADS([1]-2)
- TRACKS([80])
- SECTOR_LENGTH([512])
- FIRST_SECTOR_ID([0]))
-LEGACY_FLOPPY_OPTIONS_END
-
-LEGACY_FLOPPY_OPTIONS_START( apple35_iigs )
- LEGACY_FLOPPY_OPTION( apple35_raw, "dsk,img,image,po", "Apple raw 3.5\" disk image", apple35_raw_identify, apple35_raw_construct, nullptr,
- HEADS([1]-2)
- TRACKS([80])
- SECTOR_LENGTH([512])
- FIRST_SECTOR_ID([0]))
- LEGACY_FLOPPY_OPTION( apple35_dc, "dc,dsk,img,image", "Apple DiskCopy disk image", apple35_diskcopy_identify, apple35_diskcopy_construct, nullptr,
- HEADS([1]-2)
- TRACKS([80])
- SECTOR_LENGTH([512])
- FIRST_SECTOR_ID([0]))
- LEGACY_FLOPPY_OPTION( apple35_2img, "2img,2mg", "Apple ][gs 2IMG disk image", apple35_2img_identify, apple35_2img_construct, nullptr,
- HEADS([1]-2)
- TRACKS([80])
- SECTOR_LENGTH([512])
- FIRST_SECTOR_ID([0]))
-LEGACY_FLOPPY_OPTIONS_END
-
-
-// license:BSD-3-Clause
-// copyright-holders:Olivier Galibert
-
dc42_format::dc42_format() : floppy_image_format_t()
{
}
diff --git a/src/lib/formats/ap_dsk35.h b/src/lib/formats/ap_dsk35.h
index f9df62a326d..0b4490348e4 100644
--- a/src/lib/formats/ap_dsk35.h
+++ b/src/lib/formats/ap_dsk35.h
@@ -13,17 +13,6 @@
#pragma once
#include "flopimg.h"
-#include "flopimg_legacy.h"
-
-void sony_filltrack(uint8_t *buffer, size_t buffer_len, size_t *pos, uint8_t data);
-uint8_t sony_fetchtrack(const uint8_t *buffer, size_t buffer_len, size_t *pos);
-
-int apple35_sectors_per_track(floppy_image_legacy *image, int track);
-
-/**************************************************************************/
-
-LEGACY_FLOPPY_OPTIONS_EXTERN(apple35_mac);
-LEGACY_FLOPPY_OPTIONS_EXTERN(apple35_iigs);
class dc42_format : public floppy_image_format_t
{
diff --git a/src/lib/util/corefile.cpp b/src/lib/util/corefile.cpp
index 6bb6a043a04..4fed0e0a28b 100644
--- a/src/lib/util/corefile.cpp
+++ b/src/lib/util/corefile.cpp
@@ -12,13 +12,10 @@
#include "coretmpl.h"
#include "osdcore.h"
-#include "path.h"
#include "unicode.h"
#include "vecstream.h"
-#include <algorithm>
#include <cassert>
-#include <cctype>
#include <cstring>
#include <iterator>
#include <limits>
@@ -1057,71 +1054,3 @@ std::error_condition core_file::load(std::string_view filename, std::vector<uint
}
} // namespace util
-
-
-
-/***************************************************************************
- FILENAME UTILITIES
-***************************************************************************/
-
-// -------------------------------------------------
-// core_filename_extract_base - extract the base
-// name from a filename; note that this makes
-// assumptions about path separators
-// -------------------------------------------------
-
-std::string_view core_filename_extract_base(std::string_view name, bool strip_extension) noexcept
-{
- // find the start of the basename
- auto const start = std::find_if(name.rbegin(), name.rend(), &util::is_directory_separator);
- if (start == name.rbegin())
- return std::string_view();
-
- // find the end of the basename
- auto const chop_position = strip_extension
- ? std::find(name.rbegin(), start, '.')
- : start;
- auto const end = ((chop_position != start) && (std::next(chop_position) != start))
- ? std::next(chop_position)
- : name.rbegin();
-
- return std::string_view(&*start.base(), end.base() - start.base());
-}
-
-
-// -------------------------------------------------
-// core_filename_extract_extension
-// -------------------------------------------------
-
-std::string_view core_filename_extract_extension(std::string_view filename, bool strip_period) noexcept
-{
- auto loc = filename.find_last_of('.');
- if (loc != std::string_view::npos)
- return filename.substr(loc + (strip_period ? 1 : 0));
- else
- return std::string_view();
-}
-
-
-// -------------------------------------------------
-// core_filename_ends_with - does the given
-// filename end with the specified extension?
-// -------------------------------------------------
-
-bool core_filename_ends_with(std::string_view filename, std::string_view extension) noexcept
-{
- auto namelen = filename.length();
- auto extlen = extension.length();
-
- // first if the extension is bigger than the name, we definitely don't match
- bool matches = namelen >= extlen;
-
- // work backwards checking for a match
- while (matches && extlen > 0 && namelen > 0)
- {
- if (tolower((uint8_t)filename[--namelen]) != tolower((uint8_t)extension[--extlen]))
- matches = false;
- }
-
- return matches;
-}
diff --git a/src/lib/util/corefile.h b/src/lib/util/corefile.h
index c2731a1c4ed..6a7d14ea439 100644
--- a/src/lib/util/corefile.h
+++ b/src/lib/util/corefile.h
@@ -100,20 +100,4 @@ public:
} // namespace util
-/***************************************************************************
- FUNCTION PROTOTYPES
-***************************************************************************/
-
-/* ----- filename utilities ----- */
-
-// extract the base part of a filename (remove extensions and paths)
-std::string_view core_filename_extract_base(std::string_view name, bool strip_extension = false) noexcept;
-
-// extracts the file extension from a filename
-std::string_view core_filename_extract_extension(std::string_view filename, bool strip_period = false) noexcept;
-
-// true if the given filename ends with a particular extension
-bool core_filename_ends_with(std::string_view filename, std::string_view extension) noexcept;
-
-
#endif // MAME_LIB_UTIL_COREFILE_H
diff --git a/src/lib/util/hashing.cpp b/src/lib/util/hashing.cpp
index e90c128a8a2..62447c7b6c0 100644
--- a/src/lib/util/hashing.cpp
+++ b/src/lib/util/hashing.cpp
@@ -11,6 +11,8 @@
#include "hashing.h"
#include "strformat.h"
+#include "eminline.h"
+
#include <zlib.h>
#include <iomanip>
@@ -40,50 +42,45 @@ constexpr int char_to_hex(char c)
}
-constexpr uint32_t sha1_rol(uint32_t x, unsigned n)
-{
- return (x << n) | (x >> (32 - n));
-}
-
inline uint32_t sha1_b(uint32_t *data, unsigned i)
{
uint32_t r = data[(i + 13) & 15U];
r ^= data[(i + 8) & 15U];
r ^= data[(i + 2) & 15U];
r ^= data[i & 15U];
- r = sha1_rol(r, 1);
+ r = rotl_32(r, 1);
data[i & 15U] = r;
return r;
}
inline void sha1_r0(const uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5]) + data[i] + 0x5a827999U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5]) + data[i] + 0x5a827999U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r1(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5])+ sha1_b(data, i) + 0x5a827999U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + ((d[(i + 3) % 5] & (d[(i + 2) % 5] ^ d[(i + 1) % 5])) ^ d[(i + 1) % 5])+ sha1_b(data, i) + 0x5a827999U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r2(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0x6ed9eba1U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0x6ed9eba1U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r3(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + (((d[(i + 3) % 5] | d[(i + 2) % 5]) & d[(i + 1) % 5]) | (d[(i + 3) % 5] & d[(i + 2) % 5])) + sha1_b(data, i) + 0x8f1bbcdcU + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + (((d[(i + 3) % 5] | d[(i + 2) % 5]) & d[(i + 1) % 5]) | (d[(i + 3) % 5] & d[(i + 2) % 5])) + sha1_b(data, i) + 0x8f1bbcdcU + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_r4(uint32_t *data, std::array<uint32_t, 5> &d, unsigned i)
{
- d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0xca62c1d6U + sha1_rol(d[(i + 4) % 5], 5);
- d[(i + 3) % 5] = sha1_rol(d[(i + 3) % 5], 30);
+ d[i % 5] = d[i % 5] + (d[(i + 3) % 5] ^ d[(i + 2) % 5] ^ d[(i + 1) % 5]) + sha1_b(data, i) + 0xca62c1d6U + rotl_32(d[(i + 4) % 5], 5);
+ d[(i + 3) % 5] = rotl_32(d[(i + 3) % 5], 30);
}
inline void sha1_process(std::array<uint32_t, 5> &st, uint32_t *data)
diff --git a/src/lib/util/path.cpp b/src/lib/util/path.cpp
index 1b8a2f424dd..bdfb7f4443f 100644
--- a/src/lib/util/path.cpp
+++ b/src/lib/util/path.cpp
@@ -1,3 +1,82 @@
// license:BSD-3-Clause
-// copyright-holders:Vas Crabb
+// copyright-holders:Aaron Giles, Nathan Woods
+/***************************************************************************
+
+ path.cpp
+
+ Path and filename utilities.
+
+***************************************************************************/
+
#include "path.h"
+
+#include <algorithm>
+#include <cctype>
+#include <iterator>
+
+
+/***************************************************************************
+ FILENAME UTILITIES
+***************************************************************************/
+
+// -------------------------------------------------
+// core_filename_extract_base - extract the base
+// name from a filename; note that this makes
+// assumptions about path separators
+// -------------------------------------------------
+
+std::string_view core_filename_extract_base(std::string_view name, bool strip_extension) noexcept
+{
+ // find the start of the basename
+ auto const start = std::find_if(name.rbegin(), name.rend(), &util::is_directory_separator);
+ if (start == name.rbegin())
+ return std::string_view();
+
+ // find the end of the basename
+ auto const chop_position = strip_extension
+ ? std::find(name.rbegin(), start, '.')
+ : start;
+ auto const end = ((chop_position != start) && (std::next(chop_position) != start))
+ ? std::next(chop_position)
+ : name.rbegin();
+
+ return std::string_view(&*start.base(), end.base() - start.base());
+}
+
+
+// -------------------------------------------------
+// core_filename_extract_extension
+// -------------------------------------------------
+
+std::string_view core_filename_extract_extension(std::string_view filename, bool strip_period) noexcept
+{
+ auto loc = filename.find_last_of('.');
+ if (loc != std::string_view::npos)
+ return filename.substr(loc + (strip_period ? 1 : 0));
+ else
+ return std::string_view();
+}
+
+
+// -------------------------------------------------
+// core_filename_ends_with - does the given
+// filename end with the specified extension?
+// -------------------------------------------------
+
+bool core_filename_ends_with(std::string_view filename, std::string_view extension) noexcept
+{
+ auto namelen = filename.length();
+ auto extlen = extension.length();
+
+ // first if the extension is bigger than the name, we definitely don't match
+ bool matches = namelen >= extlen;
+
+ // work backwards checking for a match
+ while (matches && extlen > 0 && namelen > 0)
+ {
+ if (std::tolower(uint8_t(filename[--namelen])) != std::tolower(uint8_t(extension[--extlen])))
+ matches = false;
+ }
+
+ return matches;
+}
diff --git a/src/lib/util/path.h b/src/lib/util/path.h
index 8638bcb332b..204c3503bbf 100644
--- a/src/lib/util/path.h
+++ b/src/lib/util/path.h
@@ -1,5 +1,5 @@
// license:BSD-3-Clause
-// copyright-holders:Vas Crabb
+// copyright-holders:Vas Crabb, Aaron Giles
/***************************************************************************
path.h
@@ -13,6 +13,7 @@
#include "osdfile.h" // for PATH_SEPARATOR
#include <string>
+#include <string_view>
#include <utility>
@@ -80,4 +81,20 @@ inline std::string path_concat(T &&first, U &&... more)
} // namespace util
+
+/***************************************************************************
+ FUNCTION PROTOTYPES
+***************************************************************************/
+
+/* ----- filename utilities ----- */
+
+// extract the base part of a filename (remove extensions and paths)
+std::string_view core_filename_extract_base(std::string_view name, bool strip_extension = false) noexcept;
+
+// extracts the file extension from a filename
+std::string_view core_filename_extract_extension(std::string_view filename, bool strip_period = false) noexcept;
+
+// true if the given filename ends with a particular extension
+bool core_filename_ends_with(std::string_view filename, std::string_view extension) noexcept;
+
#endif // MAME_LIB_UTIL_PATH_H
diff --git a/src/lib/util/utf8.h b/src/lib/util/utf8.h
new file mode 100644
index 00000000000..092e39c0351
--- /dev/null
+++ b/src/lib/util/utf8.h
@@ -0,0 +1,54 @@
+// license:BSD-3-Clause
+// copyright-holders:Aaron Giles, Curt Coder, hap
+/***************************************************************************
+
+ utf8.h
+
+ UTF-8 string literals.
+
+***************************************************************************/
+
+#ifndef MAME_LIB_UTIL_UTF8_H
+#define MAME_LIB_UTIL_UTF8_H
+
+// these are UTF-8 encoded strings for common characters
+#define UTF8_NBSP "\xc2\xa0" /* non-breaking space */
+
+#define UTF8_MULTIPLY "\xc3\x97" /* multiplication sign */
+#define UTF8_DIVIDE "\xc3\xb7" /* division sign */
+#define UTF8_SQUAREROOT "\xe2\x88\x9a" /* square root symbol */
+#define UTF8_PLUSMINUS "\xc2\xb1" /* plusminus symbol */
+
+#define UTF8_POW_2 "\xc2\xb2" /* superscript 2 */
+#define UTF8_POW_X "\xcb\xa3" /* superscript x */
+#define UTF8_POW_Y "\xca\xb8" /* superscript y */
+#define UTF8_PRIME "\xca\xb9" /* prime symbol */
+#define UTF8_DEGREES "\xc2\xb0" /* degrees symbol */
+
+#define UTF8_SMALL_PI "\xcf\x80" /* Greek small letter pi */
+#define UTF8_CAPITAL_SIGMA "\xce\xa3" /* Greek capital letter sigma */
+#define UTF8_CAPITAL_DELTA "\xce\x94" /* Greek capital letter delta */
+
+#define UTF8_MACRON "\xc2\xaf" /* macron symbol */
+#define UTF8_NONSPACE_MACRON "\xcc\x84" /* nonspace macron, use after another char */
+
+#define a_RING "\xc3\xa5" /* small a with a ring */
+#define a_UMLAUT "\xc3\xa4" /* small a with an umlaut */
+#define o_UMLAUT "\xc3\xb6" /* small o with an umlaut */
+#define u_UMLAUT "\xc3\xbc" /* small u with an umlaut */
+#define e_ACUTE "\xc3\xa9" /* small e with an acute */
+#define n_TILDE "\xc3\xb1" /* small n with a tilde */
+
+#define A_RING "\xc3\x85" /* capital A with a ring */
+#define A_UMLAUT "\xc3\x84" /* capital A with an umlaut */
+#define O_UMLAUT "\xc3\x96" /* capital O with an umlaut */
+#define U_UMLAUT "\xc3\x9c" /* capital U with an umlaut */
+#define E_ACUTE "\xc3\x89" /* capital E with an acute */
+#define N_TILDE "\xc3\x91" /* capital N with a tilde */
+
+#define UTF8_LEFT "\xe2\x86\x90" /* cursor left */
+#define UTF8_RIGHT "\xe2\x86\x92" /* cursor right */
+#define UTF8_UP "\xe2\x86\x91" /* cursor up */
+#define UTF8_DOWN "\xe2\x86\x93" /* cursor down */
+
+#endif // MAME_LIB_UTIL_UTF8_H
diff --git a/src/lib/util/zippath.cpp b/src/lib/util/zippath.cpp
index 49cced27ff1..a5bb2cae8af 100644
--- a/src/lib/util/zippath.cpp
+++ b/src/lib/util/zippath.cpp
@@ -11,6 +11,7 @@
#include "zippath.h"
#include "corestr.h"
+#include "path.h"
#include "unzip.h"
#include <algorithm>
diff --git a/src/mame/acorn/accomm.cpp b/src/mame/acorn/accomm.cpp
index 22a5865c606..14bb28621ae 100644
--- a/src/mame/acorn/accomm.cpp
+++ b/src/mame/acorn/accomm.cpp
@@ -44,6 +44,7 @@
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
#include "accomm.lh"
diff --git a/src/mame/acorn/acrnsys.cpp b/src/mame/acorn/acrnsys.cpp
index 04dc578c34d..07779589a20 100644
--- a/src/mame/acorn/acrnsys.cpp
+++ b/src/mame/acorn/acrnsys.cpp
@@ -65,6 +65,7 @@
#include "bus/centronics/ctronics.h"
#include "bus/acorn/bus.h"
#include "softlist_dev.h"
+#include "utf8.h"
namespace {
diff --git a/src/mame/acorn/acrnsys1.cpp b/src/mame/acorn/acrnsys1.cpp
index cbefa37c026..af84fb30161 100644
--- a/src/mame/acorn/acrnsys1.cpp
+++ b/src/mame/acorn/acrnsys1.cpp
@@ -53,6 +53,7 @@ Note that left-most digit is not wired up, and therefore will always be blank.
#include "machine/timer.h"
#include "imagedev/cassette.h"
#include "speaker.h"
+#include "utf8.h"
#include "acrnsys1.lh"
diff --git a/src/mame/acorn/atom.cpp b/src/mame/acorn/atom.cpp
index 129ccec3cbd..59e2dc01809 100644
--- a/src/mame/acorn/atom.cpp
+++ b/src/mame/acorn/atom.cpp
@@ -122,6 +122,7 @@ Hardware: PPIA 8255
#include "screen.h"
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
/***************************************************************************
PARAMETERS
diff --git a/src/mame/acorn/bbc.cpp b/src/mame/acorn/bbc.cpp
index f35c9449ed6..fd2d4ea22dc 100644
--- a/src/mame/acorn/bbc.cpp
+++ b/src/mame/acorn/bbc.cpp
@@ -55,6 +55,8 @@
#include "formats/uef_cas.h"
#include "formats/csw_cas.h"
+#include "utf8.h"
+
#include "bbc.lh"
#include "bbcm.lh"
diff --git a/src/mame/act/victor9k_kb.cpp b/src/mame/act/victor9k_kb.cpp
index 5d533af2235..42c319c642a 100644
--- a/src/mame/act/victor9k_kb.cpp
+++ b/src/mame/act/victor9k_kb.cpp
@@ -337,6 +337,8 @@ Y11 104 103 102 101 100 99 98 97 kN/A k. k00 k0 RGHT LEFT PAUS
#include "emu.h"
#include "victor9k_kb.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/mame/agat/agat.cpp b/src/mame/agat/agat.cpp
index d9f2a2917c1..bb523edca4a 100644
--- a/src/mame/agat/agat.cpp
+++ b/src/mame/agat/agat.cpp
@@ -73,7 +73,7 @@
#include "agat7.h"
#include "agat9.h"
-#include "bus/a2bus/a2diskii.h"
+#include "bus/a2bus/a2diskiing.h"
#include "bus/a2bus/agat7langcard.h"
#include "bus/a2bus/agat7ports.h"
#include "bus/a2bus/agat7ram.h"
@@ -1219,7 +1219,7 @@ static void agat7_cards(device_slot_interface &device)
static void agat9_cards(device_slot_interface &device)
{
// device.option_add("a9ram", A2BUS_AGAT9RAM); // Agat-9 128K RAM Card -- decimal 3.089.170
- device.option_add("diskii", A2BUS_DISKII); /* Disk II Controller Card */
+ device.option_add("diskiing", A2BUS_DISKIING); /* Disk II Controller Card */
device.option_add("a9fdc140", A2BUS_AGAT9_FDC); // Disk II clone -- decimal 3.089.173 (reworked for agat9)
device.option_add("a9fdchle", A2BUS_AGAT840K_HLE); // 840K floppy controller -- decimal 7.104.351 or 3.089.023?
device.option_add("a9fdc", A2BUS_AGAT_FDC); // 840K floppy controller LLE
diff --git a/src/mame/agat/agat7.h b/src/mame/agat/agat7.h
index 30696487f5e..7c54582510b 100644
--- a/src/mame/agat/agat7.h
+++ b/src/mame/agat/agat7.h
@@ -41,7 +41,7 @@ protected:
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
- virtual u32 palette_entries() const override { return 16; }
+ virtual u32 palette_entries() const noexcept override { return 16; }
void text_update_lores(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow);
void text_update_hires(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow);
diff --git a/src/mame/agat/agat9.h b/src/mame/agat/agat9.h
index daea11e7589..d9c2116f72a 100644
--- a/src/mame/agat/agat9.h
+++ b/src/mame/agat/agat9.h
@@ -49,7 +49,7 @@ protected:
virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
- virtual u32 palette_entries() const override { return 16; }
+ virtual u32 palette_entries() const noexcept override { return 16; }
void text_update_lores(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow);
void text_update_hires(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int beginrow, int endrow);
diff --git a/src/mame/agat/agatkeyb.cpp b/src/mame/agat/agatkeyb.cpp
index c4d80ce3fd7..f6ba09d6c45 100644
--- a/src/mame/agat/agatkeyb.cpp
+++ b/src/mame/agat/agatkeyb.cpp
@@ -10,6 +10,7 @@
#include "agatkeyb.h"
#include "machine/keyboard.ipp"
+#include "utf8.h"
/***************************************************************************
diff --git a/src/mame/amstrad/amstrad.cpp b/src/mame/amstrad/amstrad.cpp
index 61fb4761f07..479bbc86651 100644
--- a/src/mame/amstrad/amstrad.cpp
+++ b/src/mame/amstrad/amstrad.cpp
@@ -111,6 +111,7 @@ Some bugs left :
#include "machine/ram.h"
#include "softlist.h"
#include "speaker.h"
+#include "utf8.h"
#define MANUFACTURER_NAME 0x07
#define TV_REFRESH_RATE 0x10
diff --git a/src/mame/amstrad/pc1512kb.cpp b/src/mame/amstrad/pc1512kb.cpp
index 91dc17bea62..febc7d917f9 100644
--- a/src/mame/amstrad/pc1512kb.cpp
+++ b/src/mame/amstrad/pc1512kb.cpp
@@ -9,6 +9,7 @@
#include "emu.h"
#include "pc1512kb.h"
+#include "utf8.h"
//**************************************************************************
diff --git a/src/mame/apple/apple2.cpp b/src/mame/apple/apple2.cpp
index 19cf94e1763..1217a51e1ec 100644
--- a/src/mame/apple/apple2.cpp
+++ b/src/mame/apple/apple2.cpp
@@ -61,6 +61,8 @@ II Plus: RAM options reduced to 16/32/48 KB.
#include "formats/ap2_dsk.h"
+#include "utf8.h"
+
namespace {
diff --git a/src/mame/apple/apple2e.cpp b/src/mame/apple/apple2e.cpp
index c006c8cf2a8..d5fe78f5edf 100644
--- a/src/mame/apple/apple2e.cpp
+++ b/src/mame/apple/apple2e.cpp
@@ -121,9 +121,6 @@ MIG RAM page 2 $CE02 is the speaker/slot bitfield and $CE03 is the paddle/accele
#include "cpu/mcs48/mcs48.h"
#include "cpu/z80/z80.h"
#include "imagedev/cassette.h"
-#include "imagedev/flopdrv.h"
-#include "machine/appldriv.h"
-#include "machine/applefdc.h"
#include "machine/applefdintf.h"
#include "machine/bankdev.h"
#include "machine/ds1315.h"
@@ -155,6 +152,8 @@ MIG RAM page 2 $CE02 is the speaker/slot bitfield and $CE03 is the paddle/accele
#include "formats/ap2_dsk.h"
#include "formats/ap_dsk35.h"
+#include "utf8.h"
+
namespace {
@@ -235,8 +234,7 @@ public:
m_lcbank(*this, A2_LCBANK_TAG),
m_acia1(*this, IIC_ACIA1_TAG),
m_acia2(*this, IIC_ACIA2_TAG),
- m_laserudc(*this, LASER128_UDC_TAG),
- m_iicpiwm(*this, "fdc"),
+ m_iwm(*this, "fdc"),
m_floppy(*this, "fdc:%d", 0U),
m_ds1315(*this, "nsc"),
m_printer_conn(*this, "parallel"),
@@ -255,6 +253,8 @@ public:
m_pal = false;
m_cur_floppy = nullptr;
m_devsel = 0;
+ m_laser_speed = 0;
+ m_laser_fdc_on = false;
}
required_device<cpu_device> m_maincpu;
@@ -279,8 +279,7 @@ public:
memory_view m_0800bank, m_2000bank, m_4000bank, m_c100bank;
memory_view m_c300bank, m_c400bank, m_c800bank, m_lcbank;
optional_device<mos6551_device> m_acia1, m_acia2;
- optional_device<applefdc_base_device> m_laserudc;
- optional_device<applefdintf_device> m_iicpiwm;
+ optional_device<applefdintf_device> m_iwm;
optional_device_array<floppy_connector, 4> m_floppy;
required_device<ds1315_device> m_ds1315;
optional_device<centronics_device> m_printer_conn;
@@ -466,9 +465,10 @@ private:
bool m_accel_temp_slowdown;
bool m_accel_laser;
bool m_has_laser_mouse;
+ bool m_laser_fdc_on;
int m_accel_stage;
u32 m_accel_speed;
- u8 m_accel_slotspk, m_accel_gameio;
+ u8 m_accel_slotspk, m_accel_gameio, m_laser_speed;
emu_timer *m_strobe_timer;
u8 m_next_strobe;
@@ -511,6 +511,7 @@ private:
void accel_full_speed();
void accel_normal_speed();
void accel_slot(int slot);
+ void laser_calc_speed();
u8 m_cec_remap[0x40000];
@@ -525,6 +526,20 @@ private:
floppy_image_device *m_cur_floppy;
int m_devsel;
+ u8 laser_motor_r(offs_t offset)
+ {
+ m_laser_fdc_on = (offset == 1);
+ laser_calc_speed();
+ return m_iwm->read(offset + 8);
+ }
+
+ void laser_motor_w(offs_t offset, u8 data)
+ {
+ m_laser_fdc_on = (offset == 1);
+ laser_calc_speed();
+ m_iwm->write(offset + 8, data);
+ }
+
offs_t dasm_trampoline(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params);
};
@@ -585,7 +600,7 @@ void apple2e_state::mig_w(u16 offset, u8 data)
if (offset == 0x40)
{
- m_iicpiwm->reset();
+ m_iwm->reset();
return;
}
@@ -695,7 +710,7 @@ void apple2e_state::recalc_active_device()
m_cur_floppy = nullptr;
}
- m_iicpiwm->set_floppy(m_cur_floppy);
+ m_iwm->set_floppy(m_cur_floppy);
if (m_cur_floppy)
{
@@ -1101,6 +1116,8 @@ void apple2e_state::machine_start()
save_item(NAME(m_ace500rombank));
save_item(NAME(m_ace_cnxx_bank));
save_item(NAME(m_ace2200_axxx_bank));
+ save_item(NAME(m_laser_speed));
+ save_item(NAME(m_laser_fdc_on));
}
void apple2e_state::machine_reset()
@@ -1138,6 +1155,7 @@ void apple2e_state::machine_reset()
m_accel_temp_slowdown = false;
m_accel_fast = false;
m_centronics_busy = false;
+ m_35sel = false;
// is Zip enabled?
if (m_sysconfig->read() & 0x10)
@@ -2091,30 +2109,43 @@ u8 apple2e_state::c000_laser_r(offs_t offset)
return c000_r(offset);
}
-void apple2e_state::c000_laser_w(offs_t offset, u8 data)
+void apple2e_state::laser_calc_speed()
{
- if ((m_accel_laser) && (offset == 0x74))
+ if (m_laser_fdc_on)
{
- switch ((data & 0xc0) >> 6)
- {
- case 0:
- case 1:
- accel_normal_speed();
- m_accel_fast = false;
- break;
+ accel_normal_speed();
+ m_accel_fast = false;
+ return;
+ }
- case 2:
- m_accel_speed = A2BUS_7M_CLOCK/3; // 2.38 MHz
- m_accel_fast = true;
- accel_full_speed();
- break;
+ switch ((m_laser_speed & 0xc0) >> 6)
+ {
+ case 0:
+ case 1:
+ accel_normal_speed();
+ m_accel_fast = false;
+ break;
- case 3:
- m_accel_speed = A2BUS_7M_CLOCK/2; // 3.58 MHz
- m_accel_fast = true;
- accel_full_speed();
- break;
- }
+ case 2:
+ m_accel_speed = A2BUS_7M_CLOCK/3; // 2.38 MHz
+ m_accel_fast = true;
+ accel_full_speed();
+ break;
+
+ case 3:
+ m_accel_speed = A2BUS_7M_CLOCK/2; // 3.58 MHz
+ m_accel_fast = true;
+ accel_full_speed();
+ break;
+ }
+}
+
+void apple2e_state::c000_laser_w(offs_t offset, u8 data)
+{
+ if ((m_accel_laser) && (offset == 0x74))
+ {
+ m_laser_speed = data;
+ laser_calc_speed();
}
else
{
@@ -2846,7 +2877,7 @@ u8 apple2e_state::c080_r(offs_t offset)
if ((m_isiicplus) && (slot == 6))
{
- return m_iicpiwm->read(offset % 0x10);
+ return m_iwm->read(offset % 0x10);
}
if (m_slotdevice[slot] != nullptr)
@@ -2881,7 +2912,7 @@ void apple2e_state::c080_w(offs_t offset, u8 data)
{
if ((m_isiicplus) && (slot == 6))
{
- m_iicpiwm->write(offset % 0x10, data);
+ m_iwm->write(offset % 0x10, data);
return;
}
@@ -3643,7 +3674,8 @@ void apple2e_state::laser128_map(address_map &map)
map(0xc0a8, 0xc0ab).rw(m_acia2, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
map(0xc0c0, 0xc0cf).rw(FUNC(apple2e_state::laser_mouse_r), FUNC(apple2e_state::laser_mouse_w));
map(0xc0d0, 0xc0d3).rw(FUNC(apple2e_state::memexp_r), FUNC(apple2e_state::memexp_w));
- map(0xc0e0, 0xc0ef).rw(m_laserudc, FUNC(applefdc_base_device::read), FUNC(applefdc_base_device::write));
+ map(0xc0e0, 0xc0ef).rw(m_iwm, FUNC(applefdintf_device::read), FUNC(applefdintf_device::write));
+ map(0xc0e8, 0xc0e9).rw(FUNC(apple2e_state::laser_motor_r), FUNC(apple2e_state::laser_motor_w));
map(0xc1c1, 0xc1c1).r(FUNC(apple2e_state::laserprn_busy_r));
}
@@ -5146,13 +5178,6 @@ void apple2e_state::apple2c(machine_config &config)
m_ram->set_default_size("128K").set_extra_options("128K");
}
-static const floppy_interface floppy_interface =
-{
- FLOPPY_STANDARD_5_25_DSHD,
- LEGACY_FLOPPY_OPTIONS_NAME(apple2),
- "floppy_5_25"
-};
-
void apple2e_state::apple2cp(machine_config &config)
{
apple2c(config);
@@ -5163,10 +5188,10 @@ void apple2e_state::apple2cp(machine_config &config)
config.device_remove("sl4");
config.device_remove("sl6");
- IWM(config, m_iicpiwm, A2BUS_7M_CLOCK, 1021800*2);
- m_iicpiwm->phases_cb().set(FUNC(apple2e_state::phases_w));
- m_iicpiwm->sel35_cb().set(FUNC(apple2e_state::sel35_w));
- m_iicpiwm->devsel_cb().set(FUNC(apple2e_state::devsel_w));
+ IWM(config, m_iwm, A2BUS_7M_CLOCK, 1021800*2);
+ m_iwm->phases_cb().set(FUNC(apple2e_state::phases_w));
+ m_iwm->sel35_cb().set(FUNC(apple2e_state::sel35_w));
+ m_iwm->devsel_cb().set(FUNC(apple2e_state::devsel_w));
applefdintf_device::add_525(config, m_floppy[0]);
applefdintf_device::add_525(config, m_floppy[1]);
@@ -5197,16 +5222,6 @@ void apple2e_state::apple2c_mem(machine_config &config)
m_ram->set_default_size("128K").set_extra_options("128K, 384K, 640K, 896K, 1152K");
}
-const applefdc_interface fdc_interface =
-{
- apple525_set_lines, /* set_lines */
- apple525_set_enable_lines, /* set_enable_lines */
-
- apple525_read_data, /* read_data */
- apple525_write_data, /* write_data */
- apple525_read_status /* read_status */
-};
-
void apple2e_state::laser128(machine_config &config)
{
apple2c(config);
@@ -5216,9 +5231,12 @@ void apple2e_state::laser128(machine_config &config)
m_screen->set_screen_update(FUNC(apple2e_state::screen_update_tf));
- LEGACY_APPLEFDC(config, m_laserudc, &fdc_interface);
- FLOPPY_APPLE(config, FLOPPY_0, &floppy_interface, 15, 16);
- FLOPPY_APPLE(config, FLOPPY_1, &floppy_interface, 15, 16);
+ IWM(config, m_iwm, A2BUS_7M_CLOCK, 1021800 * 2);
+ m_iwm->phases_cb().set(FUNC(apple2e_state::phases_w));
+ m_iwm->devsel_cb().set(FUNC(apple2e_state::devsel_w));
+
+ applefdintf_device::add_525(config, m_floppy[0]);
+ applefdintf_device::add_525(config, m_floppy[1]);
config.device_remove("sl4");
config.device_remove("sl6");
@@ -5248,9 +5266,12 @@ void apple2e_state::laser128o(machine_config &config)
m_screen->set_screen_update(FUNC(apple2e_state::screen_update_tf));
- LEGACY_APPLEFDC(config, m_laserudc, &fdc_interface);
- FLOPPY_APPLE(config, FLOPPY_0, &floppy_interface, 15, 16);
- FLOPPY_APPLE(config, FLOPPY_1, &floppy_interface, 15, 16);
+ IWM(config, m_iwm, A2BUS_7M_CLOCK, 1021800 * 2);
+ m_iwm->phases_cb().set(FUNC(apple2e_state::phases_w));
+ m_iwm->devsel_cb().set(FUNC(apple2e_state::devsel_w));
+
+ applefdintf_device::add_525(config, m_floppy[0]);
+ applefdintf_device::add_525(config, m_floppy[1]);
config.device_remove("sl4");
config.device_remove("sl6");
@@ -5281,9 +5302,12 @@ void apple2e_state::laser128ex2(machine_config &config)
m_screen->set_screen_update(FUNC(apple2e_state::screen_update_tf));
- LEGACY_APPLEFDC(config, m_laserudc, &fdc_interface);
- FLOPPY_APPLE(config, FLOPPY_0, &floppy_interface, 15, 16);
- FLOPPY_APPLE(config, FLOPPY_1, &floppy_interface, 15, 16);
+ IWM(config, m_iwm, A2BUS_7M_CLOCK, 1021800 * 2);
+ m_iwm->phases_cb().set(FUNC(apple2e_state::phases_w));
+ m_iwm->devsel_cb().set(FUNC(apple2e_state::devsel_w));
+
+ applefdintf_device::add_525(config, m_floppy[0]);
+ applefdintf_device::add_525(config, m_floppy[1]);
config.device_remove("sl4");
config.device_remove("sl6");
@@ -5307,7 +5331,7 @@ void apple2e_state::laser128ex2(machine_config &config)
void apple2e_state::ace500(machine_config &config)
{
apple2ee(config);
- subdevice<software_list_device>("flop_a2_orig")->set_filter("A2C"); // Filter list to compatible disks for this machine.
+ subdevice<software_list_device>("flop_a2_orig")->set_filter("A2C"); // Filter list to compatible disks for this machine.
M65C02(config.replace(), m_maincpu, 1021800);
m_maincpu->set_addrmap(AS_PROGRAM, &apple2e_state::ace500_map);
diff --git a/src/mame/apple/apple2gs.cpp b/src/mame/apple/apple2gs.cpp
index 61f0a3809f3..c30678b1f2d 100644
--- a/src/mame/apple/apple2gs.cpp
+++ b/src/mame/apple/apple2gs.cpp
@@ -85,6 +85,8 @@
#include "formats/ap_dsk35.h"
#include "formats/ap2_dsk.h"
+#include "utf8.h"
+
namespace {
diff --git a/src/mame/apple/apple2video.cpp b/src/mame/apple/apple2video.cpp
index f96b1fde45d..0eceaed22ba 100644
--- a/src/mame/apple/apple2video.cpp
+++ b/src/mame/apple/apple2video.cpp
@@ -1343,7 +1343,7 @@ void a2_video_device::init_palette()
set_pen_color(i, apple2_palette[i]);
}
-uint32_t a2_video_device::palette_entries() const
+uint32_t a2_video_device::palette_entries() const noexcept
{
return std::size(apple2_palette);
}
diff --git a/src/mame/apple/apple2video.h b/src/mame/apple/apple2video.h
index c57d60f013e..3962205613c 100644
--- a/src/mame/apple/apple2video.h
+++ b/src/mame/apple/apple2video.h
@@ -69,7 +69,7 @@ protected:
virtual void device_reset() override;
virtual void device_start() override;
- virtual uint32_t palette_entries() const override;
+ virtual uint32_t palette_entries() const noexcept override;
void init_palette();
private:
diff --git a/src/mame/apple/apple3.cpp b/src/mame/apple/apple3.cpp
index cd29758cbc7..4b2ee822fba 100644
--- a/src/mame/apple/apple3.cpp
+++ b/src/mame/apple/apple3.cpp
@@ -29,6 +29,8 @@
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
void apple3_state::apple3_map(address_map &map)
{
map(0x0000, 0xffff).rw(FUNC(apple3_state::apple3_memory_r), FUNC(apple3_state::apple3_memory_w));
diff --git a/src/mame/apple/mactoolbox.h b/src/mame/apple/mactoolbox.h
index 6f16ac60ce7..838f90a15eb 100644
--- a/src/mame/apple/mactoolbox.h
+++ b/src/mame/apple/mactoolbox.h
@@ -7,15 +7,6 @@
#pragma once
-// older versions of libc++ are missing deduction guides that the things using this require
-// FIXME: find a better place to put this
-#if defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION < 10000)
-namespace std { inline namespace __1 {
-template<class R, class... ArgTypes > function( R(*)(ArgTypes...) ) -> function<R(ArgTypes...)>;
-} }
-#endif
-
-
extern offs_t mac68k_dasm_override(std::ostream &stream, offs_t pc, const util::disasm_interface::data_buffer &opcodes, const util::disasm_interface::data_buffer &params);
#endif // MAME_APPLE_MACTOOLBOX_H
diff --git a/src/mame/apple/swim.cpp b/src/mame/apple/swim.cpp
deleted file mode 100644
index 04515a2129b..00000000000
--- a/src/mame/apple/swim.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:R. Belmont
-/*********************************************************************
-
- swim.c
-
- Implementation of the Apple SWIM FDC controller; used on (less)
- early Macs
-
-*********************************************************************/
-
-#include "emu.h"
-#include "swim.h"
-
-
-/***************************************************************************
- CONSTANTS
-***************************************************************************/
-
-#define LOG_SWIM 0
-
-enum
-{
- SWIM_MODE_IWM,
- SWIM_MODE_SWIM,
- SWIM_MODE_SWIM2,
- SWIM_MODE_SWIM3
-};
-
-
-/***************************************************************************
- DEVICE
-***************************************************************************/
-
-DEFINE_DEVICE_TYPE(LEGACY_SWIM, swim_device, "swiml", "Apple SWIM (Sander/Woz Integrated Machine) (legacy)")
-
-//-------------------------------------------------
-// ctor
-//-------------------------------------------------
-
-swim_device::swim_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : applefdc_base_device(APPLEFDC_SWIM, mconfig, LEGACY_SWIM, tag, owner, clock)
-{
-}
-
-
-
-//-------------------------------------------------
-// device_start - device-specific start
-//-------------------------------------------------
-
-void swim_device::device_start()
-{
- // call inherited version
- applefdc_base_device::device_start();
-
- m_swim_mode = SWIM_MODE_IWM;
- m_swim_magic_state = 0x00;
- m_parm_offset = 0x00;
- memset(m_ism_regs, 0, sizeof(m_ism_regs));
- memset(m_parms, 0, sizeof(m_parms));
-}
-
-
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void swim_device::device_reset()
-{
- // call inherited version
- applefdc_base_device::device_reset();
-
- static uint8_t swim_default_parms[16] =
- {
- 0x38, 0x18, 0x41, 0x2e, 0x2e, 0x18, 0x18, 0x1b,
- 0x1b, 0x2f, 0x2f, 0x19, 0x19, 0x97, 0x1b, 0x57
- };
-
- for (int i = 0; i < 16; i++)
- {
- m_parms[i] = swim_default_parms[i];
- }
-
- m_swim_magic_state = 0;
- m_swim_mode = SWIM_MODE_IWM;
- m_parm_offset = 0;
-}
-
-
-
-//-------------------------------------------------
-// read - reads a byte from the FDC
-//-------------------------------------------------
-
-uint8_t swim_device::read(offs_t offset)
-{
- uint8_t result = 0;
-
- if (m_swim_mode == SWIM_MODE_IWM)
- {
- // IWM mode
- result = applefdc_base_device::read(offset);
- }
- else if (m_swim_mode >= SWIM_MODE_SWIM)
- {
- // reading parameter RAM?
- if ((offset & 7) == 3)
- {
- result = m_parms[m_parm_offset++];
- m_parm_offset &= 0xf;
- }
- else
- {
- result = m_ism_regs[offset&7];
- }
-
- if (LOG_SWIM)
- logerror("SWIM: read %02x from offset %x\n", result, offset & 7);
- }
- return result;
-}
-
-
-
-//-------------------------------------------------
-// write - write a byte to the FDC
-//-------------------------------------------------
-
-void swim_device::write(offs_t offset, uint8_t data)
-{
- if (m_swim_mode == SWIM_MODE_IWM)
- {
- // IWM mode
- applefdc_base_device::write(offset, data);
- }
- else if (m_swim_mode >= SWIM_MODE_SWIM)
- {
- if (LOG_SWIM)
- logerror("SWIM: write %02x to offset %x\n", data, offset & 7);
-
- switch (offset & 7)
- {
- case 2: // write CRC
- break;
-
- case 3: // write parameter
- m_parms[m_parm_offset++] = data;
- m_parm_offset &= 0xf;
- break;
-
- case 6: // write zeros to status (also zeroes parameter RAM pointer)
- m_ism_regs[6] &= ~data;
- m_parm_offset = 0;
-
- if (data == 0xf8) // magic "revert to IWM" value
- {
- if (LOG_SWIM)
- logerror("SWIM: reverting to IWM\n");
- m_swim_mode = SWIM_MODE_IWM;
- }
- break;
-
- case 7: // write ones to status
- m_ism_regs[6] |= data;
- break;
-
- default:
- m_ism_regs[offset & 7] = data;
- break;
-
- }
- }
-}
-
-
-
-//-------------------------------------------------
-// iwm_modereg_w - changes the mode register
-//-------------------------------------------------
-
-void swim_device::iwm_modereg_w(uint8_t data)
-{
- // SWIM mode is unlocked by writing 1/0/1/1 in a row to bit 6 (which is unused on IWM)
- // when SWIM mode engages, the IWM is disconnected from both the 68k and the drives,
- // and the ISM is substituted.
-
- switch (m_swim_magic_state)
- {
- case 0:
- case 2:
- case 3:
- if (data & 0x40)
- {
- m_swim_magic_state++;
- }
- else
- {
- m_swim_magic_state = 0;
- }
- break;
- case 1:
- if (!(data & 0x40))
- {
- m_swim_magic_state++;
- }
- else
- {
- m_swim_magic_state = 0;
- }
- break;
- }
-
- if (m_swim_magic_state == 4)
- {
- m_swim_magic_state = 0;
- m_swim_mode = SWIM_MODE_SWIM;
- }
-
- // call inherited version
- applefdc_base_device::iwm_modereg_w(data);
-}
diff --git a/src/mame/apple/swim.h b/src/mame/apple/swim.h
deleted file mode 100644
index ac3b072a449..00000000000
--- a/src/mame/apple/swim.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:R. Belmont
-/*********************************************************************
-
- swim.h
-
- Implementation of the Apple SWIM FDC controller; used on (less)
- early Macs
-
-*********************************************************************/
-#ifndef MAME_MACHINE_SWIM_H
-#define MAME_MACHINE_SWIM_H
-
-#pragma once
-
-#include "machine/applefdc.h"
-
-
-/***************************************************************************
- DEVICE
-***************************************************************************/
-
-DECLARE_DEVICE_TYPE(LEGACY_SWIM, swim_device)
-
-class swim_device : public applefdc_base_device
-{
-public:
- swim_device(const machine_config &mconfig, const char *tag, device_t *owner, const applefdc_interface *intrf)
- : swim_device(mconfig, tag, owner, (uint32_t)0)
- {
- set_config(intrf);
- }
-
- swim_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- // read/write
- virtual uint8_t read(offs_t offset) override;
- virtual void write(offs_t offset, uint8_t data) override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
- // other overrides
- virtual void iwm_modereg_w(uint8_t data) override;
-
-private:
- uint8_t m_swim_mode = 0;
- uint8_t m_swim_magic_state = 0;
- uint8_t m_parm_offset = 0;
- uint8_t m_ism_regs[8]{};
- uint8_t m_parms[16]{};
-};
-
-#endif // MAME_MACHINE_SWIM_H
diff --git a/src/mame/apple/tk2000.cpp b/src/mame/apple/tk2000.cpp
index 2924d234f44..426106b244a 100644
--- a/src/mame/apple/tk2000.cpp
+++ b/src/mame/apple/tk2000.cpp
@@ -37,6 +37,8 @@
#include "formats/ap2_dsk.h"
+#include "utf8.h"
+
namespace {
diff --git a/src/mame/appliedconcepts/ggm.cpp b/src/mame/appliedconcepts/ggm.cpp
index 011adfc976a..ecb58c3df4d 100644
--- a/src/mame/appliedconcepts/ggm.cpp
+++ b/src/mame/appliedconcepts/ggm.cpp
@@ -108,7 +108,6 @@ private:
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(load_cart);
DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER(unload_cart);
- u8 cartridge_r(offs_t offset);
void select_w(u8 data);
void control_w(u8 data);
@@ -122,7 +121,6 @@ private:
u8 m_shift_data = 0;
u8 m_shift_clock = 0;
- u32 m_cart_mask = 0;
u8 m_overlay = 0;
};
@@ -170,8 +168,6 @@ void ggm_state::update_reset(ioport_value state)
DEVICE_IMAGE_LOAD_MEMBER(ggm_state::load_cart)
{
u32 size = m_cart->common_get_size("rom");
- m_cart_mask = ((1 << (31 - count_leading_zeros_32(size))) - 1) & 0xffff;
-
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
@@ -196,11 +192,6 @@ DEVICE_IMAGE_UNLOAD_MEMBER(ggm_state::unload_cart)
}
}
-u8 ggm_state::cartridge_r(offs_t offset)
-{
- return m_cart->read_rom(offset & m_cart_mask);
-}
-
// 6522 ports
@@ -266,7 +257,7 @@ u8 ggm_state::input_r()
void ggm_state::main_map(address_map &map)
{
// external slot has potential bus conflict with RAM/VIA
- map(0x0000, 0xffff).r(FUNC(ggm_state::cartridge_r));
+ map(0x0000, 0xffff).r(m_cart, FUNC(generic_slot_device::read_rom));
map(0x0000, 0x07ff).ram().share("nvram");
map(0x8000, 0x800f).m(m_via, FUNC(via6522_device::map));
}
@@ -455,7 +446,7 @@ void ggm_state::ggm(machine_config &config)
DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25);
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "ggm");
+ GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "ggm");
m_cart->set_device_load(FUNC(ggm_state::load_cart));
m_cart->set_device_unload(FUNC(ggm_state::unload_cart));
m_cart->set_must_be_loaded(true);
diff --git a/src/mame/arcade.flt b/src/mame/arcade.flt
index b1e38a6a136..58914f3cb64 100644
--- a/src/mame/arcade.flt
+++ b/src/mame/arcade.flt
@@ -138,6 +138,7 @@ barcrest/mpu4mod2sw.cpp
barcrest/mpu4mod4oki.cpp
barcrest/mpu4mod4yam.cpp
barcrest/mpu4plasma.cpp
+barcrest/mpu4redpoint.cpp
barcrest/mpu4union.cpp
barcrest/mpu4unsorted.cpp
barcrest/mpu4vid.cpp
diff --git a/src/mame/atari/atarist.cpp b/src/mame/atari/atarist.cpp
index fdc49ef8b77..88d6f2cd7b3 100644
--- a/src/mame/atari/atarist.cpp
+++ b/src/mame/atari/atarist.cpp
@@ -53,6 +53,8 @@
#include "formats/dfi_dsk.h"
#include "formats/ipf_dsk.h"
+#include "utf8.h"
+
//**************************************************************************
// CONSTANTS / MACROS
diff --git a/src/mame/atari/atarist_v.h b/src/mame/atari/atarist_v.h
index 50a15dc50cb..dd41f293652 100644
--- a/src/mame/atari/atarist_v.h
+++ b/src/mame/atari/atarist_v.h
@@ -56,7 +56,7 @@ protected:
virtual void device_resolve_objects() override;
virtual void device_start() override;
virtual void device_reset() override;
- virtual uint32_t palette_entries() const override { return 16; }
+ virtual uint32_t palette_entries() const noexcept override { return 16; }
private:
inline pen_t shift_mode_0();
@@ -118,7 +118,7 @@ public:
protected:
virtual void device_start() override;
- virtual uint32_t palette_entries() const override { return 512; }
+ virtual uint32_t palette_entries() const noexcept override { return 512; }
private:
// shifter state
diff --git a/src/mame/atari/pofo_kbd.cpp b/src/mame/atari/pofo_kbd.cpp
index 2b2010c6652..35c5f56c6b7 100644
--- a/src/mame/atari/pofo_kbd.cpp
+++ b/src/mame/atari/pofo_kbd.cpp
@@ -7,6 +7,8 @@
#include "machine/keyboard.ipp"
+#include "utf8.h"
+
DEFINE_DEVICE_TYPE(POFO_KEYBOARD, pofo_keyboard_device, "pofo_keyboard", "Atari Portfolio keyboard");
pofo_keyboard_device::pofo_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
diff --git a/src/mame/atari/tia.h b/src/mame/atari/tia.h
index 4b7100b6896..8a169e24415 100644
--- a/src/mame/atari/tia.h
+++ b/src/mame/atari/tia.h
@@ -61,7 +61,7 @@ protected:
virtual void device_reset() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return TIA_PALETTE_LENGTH; }
+ virtual uint32_t palette_entries() const noexcept override { return TIA_PALETTE_LENGTH; }
void extend_palette();
virtual void init_palette() = 0;
diff --git a/src/mame/ausnz/poly.cpp b/src/mame/ausnz/poly.cpp
index e91b9869d1a..46449fe23d0 100644
--- a/src/mame/ausnz/poly.cpp
+++ b/src/mame/ausnz/poly.cpp
@@ -34,6 +34,7 @@
#include "poly.h"
#include "formats/flex_dsk.h"
#include "softlist_dev.h"
+#include "utf8.h"
void poly_state::poly_bank(address_map &map)
diff --git a/src/mame/ausnz/super80.cpp b/src/mame/ausnz/super80.cpp
index a4c1999d72f..50c9113bb32 100644
--- a/src/mame/ausnz/super80.cpp
+++ b/src/mame/ausnz/super80.cpp
@@ -213,6 +213,8 @@ ToDo:
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
#include "super80.lh"
diff --git a/src/mame/barcrest/mpu4.cpp b/src/mame/barcrest/mpu4.cpp
index 7c86bd62749..c20a3e1563b 100644
--- a/src/mame/barcrest/mpu4.cpp
+++ b/src/mame/barcrest/mpu4.cpp
@@ -333,7 +333,10 @@ void mpu4_state::update_meters()
switch (m_reel_mux)
{
case STANDARD_REEL:
- // Change nothing
+ if (m_hopper_type != TUBES)
+ {
+ data = (data & 0x0F); //Strip reel data from meter drives, leaving active elements
+ }
break;
case FIVE_REEL_5TO8:
@@ -709,39 +712,21 @@ uint8_t mpu4_state::pia_ic4_portb_r()
{
m_ic4_input_b |= 0x80;
}
- else
- {
- m_ic4_input_b &= ~0x80;
- }
if (!m_reel_mux)
{
if ( m_optic_pattern & 0x01 ) m_ic4_input_b |= 0x40; /* reel A tab */
- else m_ic4_input_b &= ~0x40;
if ( m_optic_pattern & 0x02 ) m_ic4_input_b |= 0x20; /* reel B tab */
- else m_ic4_input_b &= ~0x20;
if ( m_optic_pattern & 0x04 ) m_ic4_input_b |= 0x10; /* reel C tab */
- else m_ic4_input_b &= ~0x10;
if ( m_optic_pattern & 0x08 ) m_ic4_input_b |= 0x08; /* reel D tab */
- else m_ic4_input_b &= ~0x08;
-
}
else
{
- if (m_optic_pattern & (1<<m_active_reel))
- {
- m_ic4_input_b |= 0x08;
- }
- else
- {
- m_ic4_input_b &= ~0x08;
- }
+ if (m_optic_pattern & (1<<m_active_reel)) m_ic4_input_b |= 0x08;
}
- if ( m_signal_50hz ) m_ic4_input_b |= 0x04; /* 50 Hz */
- else m_ic4_input_b &= ~0x04;
if ( m_overcurrent )
{
@@ -789,17 +774,38 @@ uint8_t mpu4_state::pia_ic5_porta_r()
}
}
}
- if (m_hopper == HOPPER_NONDUART_A)
+ if (m_hopper_type == HOPPER_NONDUART_A)
{
-/* if (hopper1_active)
- {
- m_aux1_input |= 0x04;
- }
- else
- {
- m_aux1_input &= ~0x04;
- }*/
+ if (m_hopper1->line_r() && m_hopper1_opto)
+ {
+ m_aux1_input |= 0x04;
+ }
+ else
+ {
+ m_aux1_input &= ~0x04;
+ }
+ }
+ else if (m_hopper_type == HOPPER_TWIN_HOPPER)
+ {
+ if (m_hopper1->line_r())
+ {
+ m_aux1_input |= 0x08;
+ }
+ else
+ {
+ m_aux1_input &= ~0x08;
+ }
+
+ if (m_hopper2->line_r())
+ {
+ m_aux1_input |= 0x04;
+ }
+ else
+ {
+ m_aux1_input &= ~0x04;
+ }
}
+
LOG(("%s: IC5 PIA Read of Port A (AUX1)\n",machine().describe_context()));
@@ -811,10 +817,9 @@ uint8_t mpu4_state::pia_ic5_porta_r()
void mpu4_state::pia_ic5_porta_w(uint8_t data)
{
int i;
- if (m_hopper == HOPPER_NONDUART_A)
+ if (m_hopper_type == HOPPER_NONDUART_A)
{
- //opto line
- //hopper1_drive_sensor(data&0x10);
+ m_hopper1_opto = (data & 0x10);
}
switch (m_lamp_extender)
@@ -884,10 +889,10 @@ void mpu4_state::pia_ic5_porta_w(uint8_t data)
void mpu4_state::pia_ic5_portb_w(uint8_t data)
{
- if (m_hopper == HOPPER_NONDUART_B)
+ if (m_hopper_type == HOPPER_NONDUART_B)
{
- //hopper1_drive_motor(data &0x01) motor
- //hopper1_drive_sensor(data &0x08) opto
+ m_hopper1->motor_w(data & 0x01);
+ m_hopper1_opto = (data & 0x08);
}
if (m_led_extender == CARD_A)
{
@@ -910,16 +915,16 @@ void mpu4_state::pia_ic5_portb_w(uint8_t data)
uint8_t mpu4_state::pia_ic5_portb_r()
{
- if (m_hopper == HOPPER_NONDUART_B)
- {/*
- if (hopper1_active)
- {
- m_aux2_input |= 0x08;
- }
- else
- {
- m_aux2_input &= ~0x08;
- }*/
+ if (m_hopper_type == HOPPER_NONDUART_B)
+ {
+ if (m_hopper1->line_r() && m_hopper1_opto)
+ {
+ m_aux2_input |= 0x08;
+ }
+ else
+ {
+ m_aux2_input &= ~0x08;
+ }
}
LOG(("%s: IC5 PIA Read of Port B (coin input AUX2)\n",machine().describe_context()));
@@ -1031,7 +1036,7 @@ void mpu4_state::pia_ic6_portb_w(uint8_t data)
void mpu4_state::pia_ic6_porta_w(uint8_t data)
{
LOG(("%s: IC6 PIA Write A %2x\n", machine().describe_context(),data));
- if (m_mod_number <4)
+ if (m_ay8913.found())
{
m_ay_data = data;
update_ay(m_pia6);
@@ -1042,7 +1047,7 @@ void mpu4_state::pia_ic6_porta_w(uint8_t data)
WRITE_LINE_MEMBER(mpu4_state::pia_ic6_ca2_w)
{
LOG(("%s: IC6 PIA write CA2 %2x (AY8913 BC1)\n", machine().describe_context(),state));
- if (m_mod_number <4)
+ if (m_ay8913.found())
{
if ( state ) m_ay8913_address |= 0x01;
else m_ay8913_address &= ~0x01;
@@ -1054,7 +1059,7 @@ WRITE_LINE_MEMBER(mpu4_state::pia_ic6_ca2_w)
WRITE_LINE_MEMBER(mpu4_state::pia_ic6_cb2_w)
{
LOG(("%s: IC6 PIA write CB2 %2x (AY8913 BCDIR)\n", machine().describe_context(),state));
- if (m_mod_number <4)
+ if (m_ay8913.found())
{
if ( state ) m_ay8913_address |= 0x02;
else m_ay8913_address &= ~0x02;
@@ -1085,13 +1090,19 @@ void mpu4_state::pia_ic7_porta_w(uint8_t data)
void mpu4_state::pia_ic7_portb_w(uint8_t data)
{
- if (m_hopper == HOPPER_DUART_A)
+ if (m_hopper_type == HOPPER_DUART_A)
{
- //duart write data
+ m_hopper1->motor_w(data & 0x10);
+ //opto line is DUART op BIT 4 (MR, channel B)
}
- else if (m_hopper == HOPPER_NONDUART_A)
+ else if (m_hopper_type == HOPPER_NONDUART_A)
{
- //hoppr1_drive_motor(data & 0x10);
+ m_hopper1->motor_w(data & 0x20);
+ }
+ else if (m_hopper_type == HOPPER_TWIN_HOPPER)
+ {
+ m_hopper1->motor_w(data & 0x20);
+ m_hopper2->motor_w(data & 0x40);
}
m_mmtr_data = data;
@@ -1156,13 +1167,20 @@ uint8_t mpu4_state::pia_ic8_porta_r()
void mpu4_state::pia_ic8_portb_w(uint8_t data)
{
- if (m_hopper == HOPPER_DUART_B)
+ if (m_hopper_type == HOPPER_DUART_B)
{
-// duart.drive_sensor(data & 0x04, data & 0x01, 0, 0);
+ m_hopper1->motor_w(data & 0x01);
+ m_hopper1_opto = (data & 0x04);
+ data &= ~0x05; //remove Triacs from use
}
- else if (m_hopper == HOPPER_DUART_C)
+ else if (m_hopper_type == HOPPER_DUART_C)
{
-// duart.drive_sensor(data & 0x04, data & 0x01, data & 0x04, data & 0x02);
+ // Dual DUART hoppers share an opto line for some reason
+ m_hopper1->motor_w(data & 0x01);
+ m_hopper1_opto = (data & 0x04);
+ m_hopper2->motor_w(data & 0x02);
+ m_hopper2_opto = (data & 0x04);
+ data &= ~0x07; //remove Triacs from use
}
LOG_IC8(("%s: IC8 PIA Port B Set to %2x (OUTPUT PORT, TRIACS)\n", machine().describe_context(),data));
for (int i = 0; i < 8; i++)
@@ -1960,24 +1978,6 @@ INPUT_PORTS_END
/* Common configurations */
-void mpu4_state::mpu4_ym2413_w(offs_t offset, uint8_t data)
-{
- if (m_ym2413) m_ym2413->write(offset,data);
-}
-
-uint8_t mpu4_state::mpu4_ym2413_r(offs_t offset)
-{
-// if (m_ym2413) return m_ym2413->read(offset);
- return 0xff;
-}
-
-
-void mpu4_state::mpu4_install_mod4yam_space(address_space &space)
-{
- space.install_read_handler(0x0880, 0x0882, read8sm_delegate(*this, FUNC(mpu4_state::mpu4_ym2413_r)));
- space.install_write_handler(0x0880, 0x0881, write8sm_delegate(*this, FUNC(mpu4_state::mpu4_ym2413_w)));
-}
-
void mpu4_state::mpu4_install_mod4oki_space(address_space &space)
{
pia6821_device *const pia_ic4ss = subdevice<pia6821_device>("pia_ic4ss");
@@ -2005,17 +2005,6 @@ MACHINE_START_MEMBER(mpu4_state,mod2)
mpu4_config_common();
m_link7a_connected=false;
- m_mod_number=2;
-}
-
-MACHINE_START_MEMBER(mpu4_state,mpu4yam)
-{
- address_space &space = m_maincpu->space(AS_PROGRAM);
- mpu4_config_common();
-
- m_link7a_connected=false;
- m_mod_number=4;
- mpu4_install_mod4yam_space(space);
}
MACHINE_START_MEMBER(mpu4_state,mpu4oki)
@@ -2024,375 +2013,274 @@ MACHINE_START_MEMBER(mpu4_state,mpu4oki)
mpu4_config_common();
m_link7a_connected=false;
- m_mod_number=4;
mpu4_install_mod4oki_space(space);
}
-//TODO: Replace with standard six reels once sets are sorted out - is really six_reel_std
-void mpu4_state::init_m4altreels()
+void mpu4_state::init_m4()
{
- m_reel_mux = SIX_REEL_1TO8;
- m_reels = 6;
+ m_bwb_bank = 0;
setup_rom_banks();
}
-void mpu4_state::init_m4altreels_big()
+void mpu4_state::init_m4big()
{
- init_m4default_big();
- m_reel_mux = SIX_REEL_1TO8;
- m_reels = 6;
-}
-
-
-void mpu4_state::init_m4default_sextender()
-{
- init_m4default();
- use_m4_small_extender();
-}
-
-void mpu4_state::init_m4default_big_five_std()
-{
- init_m4default_big();
- use_m4_five_reel_std();
-}
-
-void mpu4_state::init_m4default_big_five_rev()
-{
- init_m4default_big();
- use_m4_five_reel_rev();
-}
-
-void mpu4_state::init_m4default_big_five_rev_lextender()
-{
- init_m4default_big_five_rev();
- use_m4_large_extender_b();
-}
-
-void mpu4_state::init_m4default_big_six()
-{
- init_m4default_big();
- use_m4_six_reel_std();
-}
-
-void mpu4_state::init_m4default_big_six_lextender()
-{
- init_m4default_big_six();
- use_m4_large_extender_b();
-}
-
-void mpu4_state::init_m4default_big_six_alt()
-{
- init_m4default_big();
- use_m4_six_reel_alt();
-}
-
-
-void mpu4_state::init_m4default_five_std()
-{
- init_m4default();
- use_m4_five_reel_std();
-}
-
-void mpu4_state::init_m4default_five_std_sextender()
-{
- init_m4default_five_std();
- use_m4_small_extender();
-}
-
-void mpu4_state::init_m4default_five_rev()
-{
- init_m4default();
- use_m4_five_reel_rev();
-}
-
-void mpu4_state::init_m4default_five_rev_lextender()
-{
- init_m4default_five_rev();
- use_m4_large_extender_b();
-}
+ int size = memregion("maincpu")->bytes();
+ if (size <= 0x10000)
+ {
+ fatalerror("Error: Extended banking selected on set <=0x10000 in size\n");
+ }
-void mpu4_state::init_m4default_five_rev_sextender()
-{
- init_m4default_five_rev();
- use_m4_small_extender();
-}
+ address_space &space = m_maincpu->space(AS_PROGRAM);
-void mpu4_state::init_m4default_five_alt()
-{
- init_m4default();
- use_m4_five_reel_alt();
-}
+ m_bwb_bank = 1;
+ space.install_write_handler(0x0858, 0x0858, write8smo_delegate(*this, FUNC(mpu4_state::bankswitch_w)));
+ space.install_write_handler(0x0878, 0x0878, write8smo_delegate(*this, FUNC(mpu4_state::bankset_w)));
+ uint8_t *rom = memregion("maincpu")->base();
+ m_numbanks = size / 0x10000;
+ m_bank1->configure_entries(0, m_numbanks, &rom[0x01000], 0x10000);
+ m_numbanks--;
-void mpu4_state::init_m4default_six()
-{
- init_m4default();
- use_m4_six_reel_std();
+ // some Bwb games must default to the last bank, does anything not like this
+ // behavior?
+ // some Bwb games don't work anyway tho, they seem to dislike something else
+ // about the way the regular banking behaves, not related to the CB2 stuff
+ m_bank1->set_entry(m_numbanks);
}
-void mpu4_state::init_m4default_six_sextender()
+void mpu4_state::init_m4big_low()
{
- init_m4default_six();
- use_m4_small_extender();
+ init_m4big();
+ m_default_to_low_bank = true;
}
-void mpu4_state::init_m4default_six_alt()
+void mpu4_state::setup_rom_banks()
{
- init_m4default();
- use_m4_six_reel_alt();
+ //Initialise paging for non-extended ROM space
+ uint8_t *rom = memregion("maincpu")->base();
+ membank("bank1")->configure_entries(0, 4, &rom[0x01000], 0x10000);
+ membank("bank1")->set_entry(0);
}
-
-void mpu4_state::init_m4default_seven()
+/* generate a 50 Hz signal (based on an RC time) */
+TIMER_DEVICE_CALLBACK_MEMBER(mpu4_state::gen_50hz)
{
- init_m4default();
- use_m4_seven_reel();
+ if (m_low_volt_detect)
+ {
+ /* Although reported as a '50Hz' signal, the fact that both rising and
+ falling edges of the pulse are used means the timer actually gives a 100Hz
+ oscillating signal.*/
+ m_signal_50hz = m_signal_50hz?0:1;
+ m_pia4->ca1_w(m_signal_50hz); /* signal is connected to IC4 CA1 */
+ }
+ update_meters();//run at 100Hz to sync with PIAs
}
-void mpu4_state::init_big_extenda()
-{
- init_m4default_big();
- m_lamp_extender = LARGE_CARD_A;
-}
-
-void mpu4_state::init_m4default_big_low()
+void mpu4_state::mpu4_memmap(address_map &map)
{
- init_m4default_big();
- m_default_to_low_bank = true;
+ map(0x0000, 0x07ff).ram().share("nvram");
+// map(0x0800, 0x081f) // optional protection device lives here, see other maps
+ map(0x0850, 0x0850).rw(FUNC(mpu4_state::bankswitch_r), FUNC(mpu4_state::bankswitch_w)); /* write bank (rom page select) */
+ map(0x08e0, 0x08ef).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); //Runs hoppers
+ map(0x08ed, 0x08ed).r(FUNC(mpu4_state::hack_duart_r)); // hack until the hopper is hooked up to the duart in games wanting that setup (eg m4ready)
+ map(0x0900, 0x0907).rw(m_6840ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));/* PTM6840 IC2 */
+ map(0x0a00, 0x0a03).rw(m_pia3, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */
+ map(0x0b00, 0x0b03).rw(m_pia4, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */
+ map(0x0c00, 0x0c03).rw(m_pia5, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */
+ map(0x0d00, 0x0d03).rw(m_pia6, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */
+ map(0x0e00, 0x0e03).rw(m_pia7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC7 */
+ map(0x0f00, 0x0f03).rw(m_pia8, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC8 */
+ map(0x1000, 0xffff).bankr("bank1"); /* 64k paged ROM (4 pages) */
}
-void mpu4_state::init_m4default_alt()
+void mpu4_state::mpu4_memmap_characteriser(address_map &map)
{
- m_reel_mux = STANDARD_REEL;
- m_reels = 8;
- setup_rom_banks();
-
- m_bwb_bank=0;
+ mpu4_memmap(map);
+ map(0x0800, 0x0810).rw(m_characteriser, FUNC(mpu4_characteriser_pal::read), FUNC(mpu4_characteriser_pal::write));
}
-void mpu4_state::init_m4default()
+void mpu4_state::mpu4_memmap_bootleg_characteriser(address_map &map)
{
- use_m4_standard_reels();
- m_bwb_bank = 0;
- setup_rom_banks();
+ mpu4_memmap(map);
+ // a few sets use 0x840 for protection, 0x850 is where banking maps, so map up to that point
+ map(0x0800, 0x084f).rw(m_characteriser_bl, FUNC(mpu4_characteriser_bl::read), FUNC(mpu4_characteriser_bl::write));
}
-void mpu4_state::init_m4default_lextender()
+void mpu4_state::mpu4_memmap_bl_characteriser_blastbank(address_map &map)
{
- init_m4default();
- use_m4_large_extender_b();
+ mpu4_memmap(map);
+ map(0x0800, 0x081f).rw(m_characteriser_blastbank, FUNC(mpu4_characteriser_bl_blastbank::read), FUNC(mpu4_characteriser_bl_blastbank::write));
}
-
-void mpu4_state::init_m4default_big()
+void mpu4_state::mpu4_reels(machine_config &config, uint8_t NumberOfReels, int16_t start_index, int16_t end_index)
{
- use_m4_standard_reels();
-
- int size = memregion("maincpu")->bytes();
- if (size <= 0x10000)
+ for(uint8_t i=0; i != NumberOfReels; i++)
{
- fatalerror("Error: Extended banking selected on set <=0x10000 in size\n");
+ REEL(config, m_reel[i], BARCREST_48STEP_REEL, start_index, end_index, 0x00, 2);
+ m_reel[i]->optic_handler().set([this, i](int state) {
+ if (state)
+ m_optic_pattern |= (1 << i);
+ else
+ m_optic_pattern &= ~(1 << i);
+ });
}
-
- address_space &space = m_maincpu->space(AS_PROGRAM);
-
- m_bwb_bank = 1;
- space.install_write_handler(0x0858, 0x0858, write8smo_delegate(*this, FUNC(mpu4_state::bankswitch_w)));
- space.install_write_handler(0x0878, 0x0878, write8smo_delegate(*this, FUNC(mpu4_state::bankset_w)));
- uint8_t *rom = memregion("maincpu")->base();
-
- m_numbanks = size / 0x10000;
- m_bank1->configure_entries(0, m_numbanks, &rom[0x01000], 0x10000);
- m_numbanks--;
-
- // some Bwb games must default to the last bank, does anything not like this
- // behavior?
- // some Bwb games don't work anyway tho, they seem to dislike something else
- // about the way the regular banking behaves, not related to the CB2 stuff
- m_bank1->set_entry(m_numbanks);
-}
-
-void mpu4_state::init_m4default_big_lextender()
-{
- init_m4default_big();
- use_m4_large_extender_b();
}
-
-// these are not 'init' functions in their own right, they can be called from init functions
-void mpu4_state::use_m4_standard_reels()
+void mpu4_state::tr_r4(machine_config &config)
{
m_reel_mux = STANDARD_REEL;
m_reels = 4;
}
-void mpu4_state::use_m4_five_reel_std()
+void mpu4_state::tr_r5(machine_config &config)
{
m_reel_mux = FIVE_REEL_5TO8;
m_reels = 5;
}
-void mpu4_state::use_m4_five_reel_rev()
+void mpu4_state::tr_r5r(machine_config &config)
{
m_reel_mux = FIVE_REEL_8TO5;
m_reels = 5;
}
-void mpu4_state::use_m4_five_reel_alt()
+void mpu4_state::tr_r5a(machine_config &config)
{
m_reel_mux = FIVE_REEL_3TO6;
m_reels = 5;
}
-void mpu4_state::use_m4_six_reel_std()
+void mpu4_state::tr_r6(machine_config &config)
{
m_reel_mux = SIX_REEL_1TO8;
m_reels = 6;
}
-void mpu4_state::use_m4_six_reel_alt()
+void mpu4_state::tr_r6a(machine_config &config)
{
m_reel_mux = SIX_REEL_5TO8;
m_reels = 6;
}
-void mpu4_state::use_m4_seven_reel()
+void mpu4_state::tr_r7(machine_config &config)
{
m_reel_mux = SEVEN_REEL;
m_reels = 7;
}
-void mpu4_state::use_m4_low_volt_alt()
+void mpu4_state::tr_r8(machine_config &config)
{
- //Some games can't use the 50Hz circuit to check voltage issues, handle it here
- m_low_volt_detect = false;
-}
-
-void mpu4_state::use_m4_small_extender()
-{
- m_lamp_extender = SMALL_CARD;
+ m_reel_mux = STANDARD_REEL;
+ m_reels = 8;
}
-void mpu4_state::use_m4_large_extender_b()
+void mpu4_state::tr_rt1(machine_config &config)
{
- m_lamp_extender = LARGE_CARD_B;
+ mpu4_reels(config, m_reels, 1, 3);
}
-void mpu4_state::use_m4_large_extender_c()
+void mpu4_state::tr_rt2(machine_config &config)
{
- m_lamp_extender = LARGE_CARD_C;
+ mpu4_reels(config, m_reels, 4, 12);
}
-void mpu4_state::use_m4_hopper_tubes()
+void mpu4_state::tr_rt3(machine_config &config)
{
- m_hopper = TUBES;
+ mpu4_reels(config, m_reels, 96, 3);
}
-void mpu4_state::use_m4_hopper_duart_a()
+void mpu4_state::tr_lps(machine_config &config)
{
- m_hopper = HOPPER_DUART_A;
+ m_lamp_extender = SMALL_CARD;
}
-void mpu4_state::use_m4_hopper_duart_b()
+void mpu4_state::tr_lpla(machine_config &config)
{
- m_hopper = HOPPER_DUART_B;
+ m_lamp_extender = LARGE_CARD_A;
}
-void mpu4_state::use_m4_hopper_duart_c()
+void mpu4_state::tr_lplb(machine_config &config)
{
- m_hopper = HOPPER_DUART_C;
+ m_lamp_extender = LARGE_CARD_B;
}
-void mpu4_state::use_m4_hopper_nonduart_a()
+void mpu4_state::tr_lplc(machine_config &config)
{
- m_hopper = HOPPER_NONDUART_A;
+ m_lamp_extender = LARGE_CARD_C;
}
-void mpu4_state::use_m4_hopper_nonduart_b()
+void mpu4_state::tr_lds(machine_config &config)
{
- m_hopper = HOPPER_NONDUART_B;
+ m_led_extender = SIMPLE_CARD;
}
-void mpu4_state::use_m4_led_a()
+void mpu4_state::tr_lda(machine_config &config)
{
m_led_extender = CARD_A;
}
-void mpu4_state::use_m4_led_b()
+void mpu4_state::tr_ldb(machine_config &config)
{
m_led_extender = CARD_B;
}
-void mpu4_state::use_m4_led_c()
+void mpu4_state::tr_ldc(machine_config &config)
{
m_led_extender = CARD_C;
}
-void mpu4_state::use_m4_led_simple()
+void mpu4_state::tr_ht(machine_config &config)
{
- m_led_extender = SIMPLE_CARD;
+ m_hopper_type = TUBES;
}
-void mpu4_state::setup_rom_banks()
+void mpu4_state::tr_hda(machine_config &config)
{
- //Initialise paging for non-extended ROM space
- uint8_t *rom = memregion("maincpu")->base();
- membank("bank1")->configure_entries(0, 4, &rom[0x01000], 0x10000);
- membank("bank1")->set_entry(0);
+ m_hopper_type = HOPPER_DUART_A;
}
-/* generate a 50 Hz signal (based on an RC time) */
-TIMER_DEVICE_CALLBACK_MEMBER(mpu4_state::gen_50hz)
+void mpu4_state::tr_hdb(machine_config &config)
{
- if (m_low_volt_detect)
- {
- /* Although reported as a '50Hz' signal, the fact that both rising and
- falling edges of the pulse are used means the timer actually gives a 100Hz
- oscillating signal.*/
- m_signal_50hz = m_signal_50hz?0:1;
- m_pia4->ca1_w(m_signal_50hz); /* signal is connected to IC4 CA1 */
- }
- update_meters();//run at 100Hz to sync with PIAs
+ m_hopper_type = HOPPER_DUART_B;
}
+void mpu4_state::tr_hdc(machine_config &config)
+{
+ m_hopper_type = HOPPER_DUART_C;
+}
-void mpu4_state::mpu4_memmap(address_map &map)
+void mpu4_state::tr_hna(machine_config &config)
{
- map(0x0000, 0x07ff).ram().share("nvram");
-// map(0x0800, 0x081f) // optional protection device lives here, see other maps
- map(0x0850, 0x0850).rw(FUNC(mpu4_state::bankswitch_r), FUNC(mpu4_state::bankswitch_w)); /* write bank (rom page select) */
- map(0x08e0, 0x08ef).rw(m_duart68681, FUNC(mc68681_device::read), FUNC(mc68681_device::write)); //Runs hoppers
- map(0x08ed, 0x08ed).r(FUNC(mpu4_state::hack_duart_r)); // hack until the hopper is hooked up to the duart in games wanting that setup (eg m4ready)
- map(0x0900, 0x0907).rw(m_6840ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write));/* PTM6840 IC2 */
- map(0x0a00, 0x0a03).rw(m_pia3, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC3 */
- map(0x0b00, 0x0b03).rw(m_pia4, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC4 */
- map(0x0c00, 0x0c03).rw(m_pia5, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC5 */
- map(0x0d00, 0x0d03).rw(m_pia6, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC6 */
- map(0x0e00, 0x0e03).rw(m_pia7, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC7 */
- map(0x0f00, 0x0f03).rw(m_pia8, FUNC(pia6821_device::read), FUNC(pia6821_device::write)); /* PIA6821 IC8 */
- map(0x1000, 0xffff).bankr("bank1"); /* 64k paged ROM (4 pages) */
+ m_hopper_type = HOPPER_NONDUART_A;
}
-void mpu4_state::mpu4_memmap_characteriser(address_map &map)
+void mpu4_state::tr_hnb(machine_config &config)
{
- mpu4_memmap(map);
- map(0x0800, 0x0810).rw(m_characteriser, FUNC(mpu4_characteriser_pal::read), FUNC(mpu4_characteriser_pal::write));
+ m_hopper_type = HOPPER_NONDUART_B;
}
-void mpu4_state::mpu4_memmap_bootleg_characteriser(address_map &map)
+void mpu4_state::tr_htw(machine_config &config)
{
- mpu4_memmap(map);
- // a few sets use 0x840 for protection, 0x850 is where banking maps, so map up to that point
- map(0x0800, 0x084f).rw(m_characteriser_bl, FUNC(mpu4_characteriser_bl::read), FUNC(mpu4_characteriser_bl::write));
+ m_hopper_type = HOPPER_TWIN_HOPPER;
}
-void mpu4_state::mpu4_memmap_bl_characteriser_blastbank(address_map &map)
+void mpu4_state::tr_over(machine_config &config)
{
- mpu4_memmap(map);
- map(0x0800, 0x081f).rw(m_characteriser_blastbank, FUNC(mpu4_characteriser_bl_blastbank::read), FUNC(mpu4_characteriser_bl_blastbank::write));
+ m_overcurrent_detect = true;
+}
+
+void mpu4_state::tr_p4l(machine_config &config)
+{
+ m_use_pia4_porta_leds = true;
+}
+
+void mpu4_state::tr_scardl(machine_config &config)
+{
+ m_use_simplecard_leds = true;
}
+
void mpu4_state::mpu4_common(machine_config &config)
{
TIMER(config, "50hz").configure_periodic(FUNC(mpu4_state::gen_50hz), attotime::from_hz(100));
@@ -2463,6 +2351,8 @@ void mpu4_state::mpu4_common(machine_config &config)
BACTA_DATALOGGER(config, m_dataport, 0);
m_dataport->rxd_handler().set(FUNC(mpu4_state::dataport_rxd));
+
+ HOPPER(config, m_hopper1, attotime::from_msec(100), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
}
void mpu4_state::mpu4_common2(machine_config &config)
@@ -2514,7 +2404,7 @@ void mpu4_state::mpu4base(machine_config &config)
***********************************************************************************************/
-void mpu4_state::mod2(machine_config &config)
+void mpu4_state::mod2_f(machine_config &config)
{
mpu4base(config);
AY8913(config, m_ay8913, MPU4_MASTER_CLOCK/4);
@@ -2522,181 +2412,25 @@ void mpu4_state::mod2(machine_config &config)
m_ay8913->set_resistors_load(820, 0, 0);
m_ay8913->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_ay8913->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- mpu4_reels<0, 6>(config);
}
-void mpu4_state::mod2_no_bacta(machine_config &config)
+void mpu4_state::mod2_no_bacta_f(machine_config &config)
{
- mod2(config);
+ mod2_f(config);
config.device_remove("dataport");
m_pia5->ca2_handler().set(m_pia4, FUNC(pia6821_device::cb1_w));
}
-void mpu4_state::mod2_7reel(machine_config &config)
-{
- mpu4base(config);
- AY8913(config, m_ay8913, MPU4_MASTER_CLOCK/4);
- m_ay8913->set_flags(AY8910_SINGLE_OUTPUT);
- m_ay8913->set_resistors_load(820, 0, 0);
- m_ay8913->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_ay8913->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- mpu4_reels<0, 7>(config);
-}
-
-void mpu4_state::mod2_cheatchr_table(machine_config &config, const uint8_t* table)
-{
- mod2(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(table);
-}
-
-void mpu4_state::mod2_chr(machine_config &config)
-{
- mod2(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
-}
-
-void mpu4_state::mod2_cheatchr(machine_config &config)
-{
- mod2_cheatchr_table(config, nullptr);
-}
-
-
-void mpu4_state::mod2_chr_blastbnk(machine_config &config)
-{
- mod2(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bl_characteriser_blastbank);
-
- MPU4_CHARACTERISER_BL_BLASTBANK(config, m_characteriser_blastbank, 0);
-}
-
-void mpu4_state::mod2_chr_copcash(machine_config &config)
+void mpu4_state::mod2_cheatchr_f(machine_config &config)
{
- mod2(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bl_characteriser_blastbank);
-
- MPU4_CHARACTERISER_BL_BLASTBANK(config, m_characteriser_blastbank, 0);
- m_characteriser_blastbank->set_retxor(0x03);
-
-}
-
-
-// alt reel setup
-
-void mpu4_state::mod2_alt(machine_config &config)
-{
- mpu4base(config);
- AY8913(config, m_ay8913, MPU4_MASTER_CLOCK/4);
- m_ay8913->set_flags(AY8910_SINGLE_OUTPUT);
- m_ay8913->set_resistors_load(820, 0, 0);
- m_ay8913->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_ay8913->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
- mpu4_reels<1, 6>(config);
-}
-
-void mpu4_state::mod2_alt_cheatchr_table(machine_config &config, const uint8_t* table)
-{
- mod2_alt(config);
+ mod2_f(config);
m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
m_characteriser->set_cpu_tag("maincpu");
m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(table);
-}
-
-void mpu4_state::mod2_alt_cheatchr(machine_config &config)
-{
- mod2_alt_cheatchr_table(config, nullptr);
-}
-
-/***********************************************************************************************
-
- Configs for Mod4 with YM
-
- TODO: mod4yam should eventually become a subclass
-
-***********************************************************************************************/
-
-void mpu4_state::add_ym2413(machine_config &config)
-{
- YM2413(config, m_ym2413, XTAL(3'579'545)); // XTAL on sound board
- m_ym2413->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_ym2413->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
-
-void mpu4_state::mod4yam(machine_config &config)
-{
- mpu4base(config);
- MCFG_MACHINE_START_OVERRIDE(mpu4_state,mpu4yam)
-
- mpu4_reels<0, 6>(config);
-
- add_ym2413(config);
-}
-
-void mpu4_state::mod4yam_no_bacta(machine_config &config)
-{
- mod4yam(config);
- config.device_remove("dataport");
- m_pia5->ca2_handler().set(m_pia4, FUNC(pia6821_device::cb1_w));
-}
-
-void mpu4_state::mod4yam_chr(machine_config &config)
-{
- mod4yam(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
-}
-
-void mpu4_state::mod4yam_cheatchr_table(machine_config& config, const uint8_t* table)
-{
- mod4yam(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(table);
-}
-
-void mpu4_state::mod4yam_cheatchr(machine_config &config)
-{
- mod4yam_cheatchr_table(config, nullptr);
-}
-
-void mpu4_state::mod4yam_alt(machine_config &config)
-{
- mpu4base(config);
- MCFG_MACHINE_START_OVERRIDE(mpu4_state,mpu4yam)
-
- mpu4_reels<1, 6>(config);
-
- add_ym2413(config);
-}
-
-void mpu4_state::mod4yam_7reel(machine_config &config)
-{
- mpu4base(config);
- MCFG_MACHINE_START_OVERRIDE(mpu4_state,mpu4yam)
-
- mpu4_reels<0, 7>(config);
-
- add_ym2413(config);
+ m_characteriser->set_lamp_table(nullptr);
}
/***********************************************************************************************
@@ -2709,161 +2443,33 @@ void mpu4_state::mod4yam_7reel(machine_config &config)
// standard reel setup
-void mpu4_state::mod4oki(machine_config &config)
+void mpu4_state::mod4oki_f(machine_config &config)
{
mpu4base(config);
MCFG_MACHINE_START_OVERRIDE(mpu4_state,mpu4oki)
mpu4_common2(config);
- mpu4_reels<0, 6>(config);
OKIM6376(config, m_msm6376, 128000); //Adjusted by IC3, default to 16KHz sample. Can also be 85430 at 10.5KHz and 64000 at 8KHz
m_msm6376->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
}
-void mpu4_state::mod4oki_no_bacta(machine_config &config)
+void mpu4_state::mod4oki_no_bacta_f(machine_config &config)
{
- mod4oki(config);
+ mod4oki_f(config);
config.device_remove("dataport");
m_pia5->ca2_handler().set(m_pia4, FUNC(pia6821_device::cb1_w));
}
-void mpu4_state::mod4oki_7reel(machine_config &config)
-{
- mpu4base(config);
- MCFG_MACHINE_START_OVERRIDE(mpu4_state,mpu4oki)
-
- mpu4_common2(config);
- mpu4_reels<0, 7>(config);
-
- OKIM6376(config, m_msm6376, 128000); //Adjusted by IC3, default to 16KHz sample. Can also be 85430 at 10.5KHz and 64000 at 8KHz
- m_msm6376->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
-
-void mpu4_state::mod4oki_chr(machine_config &config)
+void mpu4_state::mod4oki_cheatchr_f(machine_config &config)
{
- mod4oki(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
-}
-
-
-void mpu4_state::mod4oki_cheatchr_table(machine_config &config, const uint8_t* table)
-{
- mod4oki(config);
+ mod4oki_f(config);
m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
m_characteriser->set_cpu_tag("maincpu");
m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(table);
-}
-
-void mpu4_state::mod4oki_cheatchr(machine_config &config)
-{
- mod4oki_cheatchr_table(config, nullptr);
-}
-
-
-
-
-// alt reel setup
-
-void mpu4_state::mod4oki_alt(machine_config &config)
-{
- mpu4base(config);
- MCFG_MACHINE_START_OVERRIDE(mpu4_state,mpu4oki)
-
- mpu4_common2(config);
- mpu4_reels<1, 6>(config);
-
- OKIM6376(config, m_msm6376, 128000); //Adjusted by IC3, default to 16KHz sample. Can also be 85430 at 10.5KHz and 64000 at 8KHz
- m_msm6376->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
-
-
-
-void mpu4_state::mod4oki_alt_cheatchr_table(machine_config& config, const uint8_t* table)
-{
- mod4oki_alt(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(table);
-}
-
-void mpu4_state::mod4oki_alt_cheatchr(machine_config &config)
-{
- mod4oki_alt_cheatchr_table(config, nullptr);
-}
-
-
-// 5 reel setup
-
-void mpu4_state::mod4oki_5r(machine_config &config)
-{
- mpu4base(config);
- MCFG_MACHINE_START_OVERRIDE(mpu4_state,mpu4oki)
-
- mpu4_common2(config);
- mpu4_reels<0, 5>(config);
-
- OKIM6376(config, m_msm6376, 128000); //Adjusted by IC3, default to 16KHz sample. Can also be 85430 at 10.5KHz and 64000 at 8KHz
- m_msm6376->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
-}
-
-void mpu4_state::mod4oki_5r_chr(machine_config &config)
-{
- mod4oki_5r(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
-}
-
-void mpu4_state::mod4oki_5r_cheatchr_table(machine_config &config, const uint8_t* table)
-{
- mod4oki_5r(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(table);
-}
-
-void mpu4_state::mod4oki_5r_cheatchr(machine_config &config)
-{
- mod4oki_5r_cheatchr_table(config, nullptr);
-}
-
-
-/***********************************************************************************************
-
- Inits
-
-***********************************************************************************************/
-
-// TODO: move this to mpu4_characteriser_bootleg.cpp, it's for a single game that requires
-// a different 'fixed' value depending on the address
-uint8_t mpu4_state::bootleg806_r(address_space &space, offs_t offset)
-{
- return 0x6a;
-}
-
-void mpu4_state::init_m4default_806prot()
-{
- init_m4default_sextender();
- m_maincpu->space(AS_PROGRAM).install_read_handler(0x0806, 0x0806, read8m_delegate(*this, FUNC(mpu4_state::bootleg806_r)));
+ m_characteriser->set_lamp_table(nullptr);
}
diff --git a/src/mame/barcrest/mpu4.h b/src/mame/barcrest/mpu4.h
index 2528cdabd4e..e37ee4794c7 100644
--- a/src/mame/barcrest/mpu4.h
+++ b/src/mame/barcrest/mpu4.h
@@ -14,25 +14,13 @@
#include "machine/nvram.h"
#include "machine/roc10937.h"
#include "machine/steppers.h"
-#include "machine/timer.h"
+#include "machine/ticket.h"
+#include "machine/timer.h" //hoppers
#include "sound/ay8910.h"
#include "sound/okim6376.h"
-#include "sound/upd7759.h"
-#include "sound/ymopl.h"
-
-#include "emupal.h"
#define MPU4_MASTER_CLOCK XTAL(6'880'000)
-#define VIDEO_MASTER_CLOCK XTAL(10'000'000)
-
-#ifdef MAME_DEBUG
-#define MPU4VIDVERBOSE 1
-#else
-#define MPU4VIDVERBOSE 0
-#endif
-
-#define LOGSTUFF(x) do { if (MPU4VIDVERBOSE) logerror x; } while (0)
@@ -75,12 +63,13 @@
//Hopper info
-#define TUBES 0
-#define HOPPER_DUART_A 1
-#define HOPPER_DUART_B 2
-#define HOPPER_DUART_C 3
-#define HOPPER_NONDUART_A 4
-#define HOPPER_NONDUART_B 5
+#define TUBES 0
+#define HOPPER_DUART_A 1
+#define HOPPER_DUART_B 2
+#define HOPPER_DUART_C 3
+#define HOPPER_NONDUART_A 4
+#define HOPPER_NONDUART_B 5
+#define HOPPER_TWIN_HOPPER 6
INPUT_PORTS_EXTERN( mpu4 );
INPUT_PORTS_EXTERN( mpu4_dutch );
@@ -101,6 +90,52 @@ INPUT_PORTS_EXTERN( mpu4_70pc );
// currently in mpu4.cpp this may get moved into the driver, or renamed to something more generic based on the setup
INPUT_PORTS_EXTERN( grtecp );
+namespace mpu4_traits {
+ enum {
+ // Reels configurations
+ R4,
+ R5,
+ R5R, // reversed
+ R5A, // alternative
+ R6,
+ R6A, // alternative
+ R7,
+ R8,
+
+ // Reel types (must be set after reel count)
+ RT1, // 1-3
+ RT2, // 4-12
+ RT3, // 96-3
+
+ // Lamp extenders
+ LPS, // small
+ LPLA, // large A
+ LPLB, // large B
+ LPLC, // large C
+
+ // Led extenders
+ LDS, // simple
+ LDA, // card A
+ LDB, // card B
+ LDC, // card C
+
+ // Hopper
+ HT, // tubes
+ HDA, // duart type A
+ HDB, // duart type B
+ HDC, // duart type C
+ HNA, // non-duart type A
+ HNB, // non-duart type B
+ HTW, // twin
+
+ // Features
+ OVER, // overcurrent detection
+ P4L, // use pia4 port a leds
+ SCARDL, // use simple card leds
+ };
+}
+
+
class mpu4_state : public driver_device
{
public:
@@ -123,9 +158,7 @@ public:
, m_bank1(*this, "bank1")
, m_msm6376(*this, "msm6376")
, m_reel(*this, "reel%u", 0U)
- , m_palette(*this, "palette")
, m_meters(*this, "meters")
- , m_ym2413(*this, "ym2413")
, m_ay8913(*this, "ay8913")
, m_dataport(*this, "dataport")
, m_characteriser(*this, "characteriser")
@@ -133,309 +166,183 @@ public:
, m_characteriser_blastbank(*this, "characteriser_blastbank")
, m_characteriser_bwb(*this, "characteriser_bwb")
, m_duart68681(*this, "duart68681")
+ , m_hopper1(*this, "hopper")
+ , m_hopper2(*this, "hopper2")
, m_lamps(*this, "lamp%u", 0U)
, m_mpu4leds(*this, "mpu4led%u", 0U)
, m_digits(*this, "digit%u", 0U)
, m_triacs(*this, "triac%u", 0U)
- { }
-
- void init_m4default_alt();
-
- void init_m4default();
- void init_m4default_lextender();
- void init_m4default_sextender();
-
- void init_m4default_big();
- void init_m4default_big_lextender();
-
- void init_m4default_big_low();
- void init_m4default_big_aux2inv();
- void init_m4default_806prot();
- void init_m4tst2();
-
- void init_m4default_big_five_std();
- void init_m4default_big_five_rev();
- void init_m4default_big_five_rev_lextender();
-
- void init_m4default_big_six();
- void init_m4default_big_six_lextender();
-
- void init_m4default_big_six_alt();
-
- void init_m4tst();
- void init_big_extenda();
- void init_m4altreels();
- void init_m4altreels_big();
- void init_m4default_five_std();
- void init_m4default_five_std_sextender();
-
- void init_m4default_five_rev();
- void init_m4default_five_rev_lextender();
- void init_m4default_five_rev_sextender();
-
- void init_m4default_five_alt();
- void init_m4default_six();
- void init_m4default_six_sextender();
+ { }
- void init_m4default_six_alt();
- void init_m4default_seven();
+ void init_m4();
+ void init_m4big();
+ void init_m4big_low();
+
+ void mpu4_reels(machine_config &config, uint8_t NumberOfReels, int16_t start_index, int16_t end_index);
+
+ void tr_r4(machine_config &config);
+ void tr_r5(machine_config &config);
+ void tr_r5r(machine_config &config);
+ void tr_r5a(machine_config &config);
+ void tr_r6(machine_config &config);
+ void tr_r6a(machine_config &config);
+ void tr_r7(machine_config &config);
+ void tr_r8(machine_config &config);
+ void tr_rt1(machine_config &config);
+ void tr_rt2(machine_config &config);
+ void tr_rt3(machine_config &config);
+ void tr_lps(machine_config &config);
+ void tr_lpla(machine_config &config);
+ void tr_lplb(machine_config &config);
+ void tr_lplc(machine_config &config);
+ void tr_lds(machine_config &config);
+ void tr_lda(machine_config &config);
+ void tr_ldb(machine_config &config);
+ void tr_ldc(machine_config &config);
+ void tr_ht(machine_config &config);
+ void tr_hda(machine_config &config);
+ void tr_hdb(machine_config &config);
+ void tr_hdc(machine_config &config);
+ void tr_hna(machine_config &config);
+ void tr_hnb(machine_config &config);
+ void tr_htw(machine_config &config);
+ void tr_over(machine_config &config);
+ void tr_p4l(machine_config &config);
+ void tr_scardl(machine_config &config);
+
+ template <typename Class, unsigned Count>
+ struct trait_wrapper_impl
+ {
+ public:
+ using config_func = void (Class::*)(machine_config &);
- void mod2(machine_config &config);
- void mod2_no_bacta(machine_config &config);
- void mod2_7reel(machine_config &config);
+ template <typename... T>
+ trait_wrapper_impl(Class *_state, T... traits)
+ : state(_state)
+ , fragments{ apply(traits)... }
+ {
+ }
- void mod2_cheatchr(machine_config &config);
- void mod2_chr(machine_config &config);
+ void operator()(machine_config &config)
+ {
+ for (auto &t : fragments)
+ (state->*t)(config);
+ }
- template<const uint8_t ReelNo, uint8_t Type>
- void mpu4_add_reel(machine_config &config)
- {
- switch (Type)
+ private:
+ config_func apply(int trait)
{
- default:
- case 0x00: REEL(config, m_reel[ReelNo], BARCREST_48STEP_REEL, 1, 3, 0x00, 2); break;
- case 0x01: REEL(config, m_reel[ReelNo], BARCREST_48STEP_REEL, 4, 12, 0x00, 2); break;
- case 0x02: REEL(config, m_reel[ReelNo], BARCREST_48STEP_REEL, 92, 3, 0x00, 2); break;
- case 0x03: REEL(config, m_reel[ReelNo], BARCREST_48STEP_REEL, 93, 2, 0x00, 2); break;
- case 0x04: REEL(config, m_reel[ReelNo], BARCREST_48STEP_REEL, 96, 3, 0x00, 2); break; // BWB
+ switch (trait)
+ {
+ case mpu4_traits::R4: return &mpu4_state::tr_r4;
+ case mpu4_traits::R5: return &mpu4_state::tr_r5;
+ case mpu4_traits::R5R: return &mpu4_state::tr_r5r;
+ case mpu4_traits::R5A: return &mpu4_state::tr_r5a;
+ case mpu4_traits::R6: return &mpu4_state::tr_r6;
+ case mpu4_traits::R6A: return &mpu4_state::tr_r6a;
+ case mpu4_traits::R7: return &mpu4_state::tr_r7;
+ case mpu4_traits::R8: return &mpu4_state::tr_r8;
+ case mpu4_traits::RT1: return &mpu4_state::tr_rt1;
+ case mpu4_traits::RT2: return &mpu4_state::tr_rt2;
+ case mpu4_traits::RT3: return &mpu4_state::tr_rt3;
+ case mpu4_traits::LPS: return &mpu4_state::tr_lps;
+ case mpu4_traits::LPLA: return &mpu4_state::tr_lpla;
+ case mpu4_traits::LPLB: return &mpu4_state::tr_lplb;
+ case mpu4_traits::LPLC: return &mpu4_state::tr_lplc;
+ case mpu4_traits::LDS: return &mpu4_state::tr_lds;
+ case mpu4_traits::LDA: return &mpu4_state::tr_lda;
+ case mpu4_traits::LDB: return &mpu4_state::tr_ldb;
+ case mpu4_traits::LDC: return &mpu4_state::tr_ldc;
+ case mpu4_traits::HT: return &mpu4_state::tr_ht;
+ case mpu4_traits::HDA: return &mpu4_state::tr_hda;
+ case mpu4_traits::HDB: return &mpu4_state::tr_hdb;
+ case mpu4_traits::HDC: return &mpu4_state::tr_hdc;
+ case mpu4_traits::HNA: return &mpu4_state::tr_hna;
+ case mpu4_traits::HNB: return &mpu4_state::tr_hnb;
+ case mpu4_traits::HTW: return &mpu4_state::tr_htw;
+ case mpu4_traits::OVER: return &mpu4_state::tr_over;
+ case mpu4_traits::P4L: return &mpu4_state::tr_p4l;
+ case mpu4_traits::SCARDL: return &mpu4_state::tr_scardl;
+ default: return nullptr; // crash later on invalid arguments
+ }
}
- if (m_reel[ReelNo])
- m_reel[ReelNo]->optic_handler().set(FUNC(mpu4_state::reel_optic_cb<ReelNo>));
- }
+ config_func apply(config_func f)
+ {
+ return f;
+ }
- template<uint8_t Type, uint8_t NumberOfReels>
- void mpu4_reels(machine_config &config)
- {
- if (NumberOfReels>0) mpu4_add_reel<0, Type>(config);
- if (NumberOfReels>1) mpu4_add_reel<1, Type>(config);
- if (NumberOfReels>2) mpu4_add_reel<2, Type>(config);
- if (NumberOfReels>3) mpu4_add_reel<3, Type>(config);
- if (NumberOfReels>4) mpu4_add_reel<4, Type>(config);
- if (NumberOfReels>5) mpu4_add_reel<5, Type>(config);
- if (NumberOfReels>6) mpu4_add_reel<6, Type>(config);
- if (NumberOfReels>7) mpu4_add_reel<7, Type>(config);
- }
+ Class *state;
+ config_func fragments[Count];
+ };
- template<const uint8_t* Table> void mod2_cheatchr_pal(machine_config &config)
+ template <typename T, typename... U>
+ auto trait_wrapper(T *state, U... traits)
{
- mod2(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper_impl<T, sizeof...(U)>(state, traits...);
}
- template<const uint8_t* Table> void mod2_7reel_cheatchr_pal(machine_config &config)
- {
- mod2_7reel(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
- }
+ void mod2_f(machine_config &config);
+ void mod2_no_bacta_f(machine_config &config);
+ void mod2_cheatchr_f(machine_config &config);
- template<const uint8_t* Table> void mod2_alt_cheatchr_pal(machine_config &config)
+ template<typename... T>
+ auto mod2(T... traits)
{
- mod2_alt(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper(this, &mpu4_state::mod2_f, traits...);
}
- template<const uint8_t* Table> void mod4oki_cheatchr_pal(machine_config &config)
+ template<typename... T>
+ auto mod2_no_bacta(T... traits)
{
- mod4oki(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper(this, &mpu4_state::mod2_no_bacta_f, traits...);
}
- template<const uint8_t* Table> void mod4oki_7reel_cheatchr_pal(machine_config &config)
+ template<typename... T>
+ auto mod2_cheatchr(T... traits)
{
- mod4oki_7reel(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper(this, &mpu4_state::mod2_cheatchr_f, traits...);
}
- template<const uint8_t* Table> void mod4oki_alt_cheatchr_pal(machine_config &config)
- {
- mod4oki_alt(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
- }
+ void mod4oki_f(machine_config &config);
+ void mod4oki_no_bacta_f(machine_config &config);
+ void mod4oki_cheatchr_f(machine_config &config);
+ template<const uint8_t* Table> void mod4oki_cheatchr_pal_f(machine_config &config);
+ template<uint8_t Fixed> void mod4oki_bootleg_fixedret_f(machine_config &config);
- template<const uint8_t* Table> void mod4yam_cheatchr_pal(machine_config &config)
+ template<typename... T>
+ auto mod4oki(T... traits)
{
- mod4yam(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper(this, &mpu4_state::mod4oki_f, traits...);
}
- template<const uint8_t* Table> void mod4yam_alt_cheatchr_pal(machine_config &config)
+ template<typename... T>
+ auto mod4oki_no_bacta(T... traits)
{
- mod4yam_alt(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper(this, &mpu4_state::mod4oki_no_bacta_f, traits...);
}
- template<const uint8_t* Table> void mod4yam_7reel_cheatchr_pal(machine_config &config)
+ template<typename... T>
+ auto mod4oki_cheatchr(T... traits)
{
- mod4yam_7reel(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper(this, &mpu4_state::mod4oki_cheatchr_f, traits...);
}
-
- template<const uint8_t* Table> void mod4oki_5r_cheatchr_pal(machine_config &config)
+ template<const uint8_t* Table, typename... T>
+ auto mod4oki_cheatchr_pal(T... traits)
{
- mod4oki_5r(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
-
- MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
- m_characteriser->set_cpu_tag("maincpu");
- m_characteriser->set_allow_6809_cheat(true);
- m_characteriser->set_lamp_table(Table);
+ return trait_wrapper(this, &mpu4_state::mod4oki_cheatchr_pal_f<Table>, traits...);
}
- template<uint8_t Fixed> void mod4oki_5r_bootleg_fixedret(machine_config &config)
+ template<uint8_t Fixed, typename... T>
+ auto mod4oki_bootleg_fixedret(T... traits)
{
- mod4oki_5r(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bootleg_characteriser);
-
- MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
- m_characteriser_bl->set_bl_fixed_return(Fixed);
+ return trait_wrapper(this, &mpu4_state::mod4oki_bootleg_fixedret_f<Fixed>, traits...);
}
- void mod2_cheatchr_table(machine_config &config, const uint8_t* table);
-
- // bootleg mod2
- template<uint8_t Fixed> void mod2_bootleg_fixedret(machine_config &config)
- {
- mod2(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bootleg_characteriser);
-
- MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
- m_characteriser_bl->set_bl_fixed_return(Fixed);
- }
-
- template<uint8_t Fixed> void mod2_alt_bootleg_fixedret(machine_config &config)
- {
- mod2_alt(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bootleg_characteriser);
-
- MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
- m_characteriser_bl->set_bl_fixed_return(Fixed);
- }
-
- template<uint8_t Fixed> void mod4yam_bootleg_fixedret(machine_config &config)
- {
- mod4yam(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bootleg_characteriser);
-
- MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
- m_characteriser_bl->set_bl_fixed_return(Fixed);
- }
-
- template<uint8_t Fixed> void mod4oki_bootleg_fixedret(machine_config &config)
- {
- mod4oki(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bootleg_characteriser);
-
- MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
- m_characteriser_bl->set_bl_fixed_return(Fixed);
- }
-
- template<uint8_t Fixed> void mod4oki_alt_bootleg_fixedret(machine_config &config)
- {
- mod4oki_alt(config);
-
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bootleg_characteriser);
-
- MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
- m_characteriser_bl->set_bl_fixed_return(Fixed);
- }
-
-
- void mod2_chr_blastbnk(machine_config &config);
- void mod2_chr_copcash(machine_config &config);
-
- void mod2_alt(machine_config &config);
- void mod2_alt_cheatchr(machine_config &config);
- void mod2_alt_cheatchr_table(machine_config &config, const uint8_t* table);
-
- void mod4oki_5r(machine_config &config);
- void mod4oki_5r_chr(machine_config &config);
- void mod4oki_5r_cheatchr(machine_config &config);
- void mod4oki_5r_cheatchr_table(machine_config &config, const uint8_t* table);
-
- void mod4oki_alt(machine_config &config);
- void mod4oki_alt_cheatchr(machine_config &config);
- void mod4oki_alt_cheatchr_table(machine_config& config, const uint8_t* table);
-
- void mod4oki(machine_config &config);
- void mod4oki_no_bacta(machine_config &config);
- void mod4oki_7reel(machine_config &config);
- void mod4oki_cheatchr(machine_config &config);
- void mod4oki_cheatchr_table(machine_config &config, const uint8_t* table);
- void mod4oki_chr(machine_config &config);
-
- void mod4yam(machine_config &config);
- void mod4yam_no_bacta(machine_config &config);
- void mod4yam_7reel(machine_config &config);
- void mod4yam_cheatchr(machine_config &config);
- void mod4yam_cheatchr_table(machine_config& config, const uint8_t* table);
- void mod4yam_chr(machine_config &config);
-
- void mod4yam_alt(machine_config &config);
-
-
void mpu4_common(machine_config &config);
void mpu4_common2(machine_config &config);
@@ -443,29 +350,6 @@ public:
void mpu4_bacta(machine_config &config);
protected:
-
- void use_m4_standard_reels();
- void use_m4_low_volt_alt();
- void use_m4_five_reel_std();
- void use_m4_five_reel_rev();
- void use_m4_five_reel_alt();
- void use_m4_six_reel_std();
- void use_m4_six_reel_alt();
- void use_m4_seven_reel();
- void use_m4_small_extender();
- void use_m4_large_extender_b();
- void use_m4_large_extender_c();
- void use_m4_hopper_tubes();
- void use_m4_hopper_duart_a();
- void use_m4_hopper_duart_b();
- void use_m4_hopper_duart_c();
- void use_m4_hopper_nonduart_a();
- void use_m4_hopper_nonduart_b();
- void use_m4_led_a();
- void use_m4_led_b();
- void use_m4_led_c();
- void use_m4_led_simple();
-
void setup_rom_banks();
TIMER_CALLBACK_MEMBER(update_ic24);
@@ -483,27 +367,19 @@ protected:
void ic24_output(int data);
void ic24_setup();
void update_ay(device_t *device);
- void mpu4_install_mod4yam_space(address_space &space);
void mpu4_install_mod4oki_space(address_space &space);
void mpu4_config_common();
- void add_ym2413(machine_config& config);
DECLARE_MACHINE_START(mod2);
DECLARE_MACHINE_RESET(mpu4);
- DECLARE_MACHINE_START(mpu4yam);
DECLARE_MACHINE_START(mpu4oki);
TIMER_DEVICE_CALLBACK_MEMBER(gen_50hz);
- template <unsigned N> DECLARE_WRITE_LINE_MEMBER(reel_optic_cb) { if (state) m_optic_pattern |= (1 << N); else m_optic_pattern &= ~(1 << N); }
-
void bankswitch_w(uint8_t data);
uint8_t bankswitch_r();
void bankset_w(uint8_t data);
- void mpu4_ym2413_w(offs_t offset, uint8_t data);
- uint8_t mpu4_ym2413_r(offs_t offset);
-
void ic3ss_w(offs_t offset, uint8_t data);
DECLARE_WRITE_LINE_MEMBER(cpu0_irq);
DECLARE_WRITE_LINE_MEMBER(ic2_o1_callback);
@@ -544,14 +420,30 @@ protected:
DECLARE_WRITE_LINE_MEMBER(dataport_rxd);
+
+ //The DUART hoppers connect via the standard IP
+ //Hopper 1 opto connects to IP5, hopper 2 to IP6
+ //TODO: Configure this correctly via lines
uint8_t hack_duart_r()
{
if (m_hack_duart_fixed_low)
+ {
return 0x00;
+ }
else
- return machine().rand() & 0x10;
+ {
+ int duart_data = 0;
+ if (m_hopper1->line_r() && m_hopper1_opto)
+ {
+ duart_data |= 0x10;
+ }
+ if (m_hopper2->line_r() && m_hopper2_opto)
+ {
+ duart_data |= 0x20;
+ }
+ return duart_data;
+ }
}
-
uint8_t bootleg806_r(address_space &space, offs_t offset);
required_device<cpu_device> m_maincpu;
@@ -571,10 +463,8 @@ protected:
optional_memory_bank m_bank1;
optional_device<okim6376_device> m_msm6376;
optional_device_array<stepper_device, 8> m_reel;
- optional_device<palette_device> m_palette;
required_device<meters_device> m_meters;
- optional_device<ym2413_device> m_ym2413;
- optional_device<ay8913_device> m_ay8913;
+ optional_device<ay8910_device> m_ay8913;
optional_device<bacta_datalogger_device> m_dataport;
optional_device<mpu4_characteriser_pal> m_characteriser;
optional_device<mpu4_characteriser_bl> m_characteriser_bl;
@@ -583,6 +473,9 @@ protected:
optional_device<mc68681_device> m_duart68681;
+ optional_device<hopper_device> m_hopper1;
+ optional_device<hopper_device> m_hopper2;
+
// not all systems have this many lamps/LEDs/digits but the driver is too much of a mess to split up now
// 0-63 are on PIA IC3 port A (always present)
@@ -606,7 +499,6 @@ protected:
output_finder<8> m_triacs;
- int m_mod_number = 0;
int m_mmtr_data = 0;
int m_ay8913_address = 0;
int m_signal_50hz = 0;
@@ -656,7 +548,7 @@ protected:
int m_pageval = 0;
int m_pageset = 0;
- int m_hopper = 0;
+ int m_hopper_type = 0;
int m_reels = 0;
int m_chrdata = 0;
int m_t1 = 0;
@@ -678,7 +570,32 @@ protected:
bool m_hack_duart_fixed_low = false;
+ bool m_hopper1_opto = false;
+ bool m_hopper2_opto = false;
+
static constexpr uint8_t reel_mux_table[8]= {0,4,2,6,1,5,3,7};//include 7, although I don't think it's used, this is basically a wire swap
static constexpr uint8_t reel_mux_table7[8]= {3,1,5,6,4,2,0,7};
};
+
+template<const uint8_t* Table> void mpu4_state::mod4oki_cheatchr_pal_f(machine_config &config)
+{
+ mod4oki_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_characteriser);
+
+ MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
+ m_characteriser->set_cpu_tag("maincpu");
+ m_characteriser->set_allow_6809_cheat(true);
+ m_characteriser->set_lamp_table(Table);
+}
+
+template<uint8_t Fixed> void mpu4_state::mod4oki_bootleg_fixedret_f(machine_config &config)
+{
+ mod4oki_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4_state::mpu4_memmap_bootleg_characteriser);
+
+ MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
+ m_characteriser_bl->set_bl_fixed_return(Fixed);
+}
diff --git a/src/mame/barcrest/mpu4avan.cpp b/src/mame/barcrest/mpu4avan.cpp
index 162d322171f..aee2f80fe73 100644
--- a/src/mame/barcrest/mpu4avan.cpp
+++ b/src/mame/barcrest/mpu4avan.cpp
@@ -26,6 +26,7 @@ public:
} // anonymous namespace
+using namespace mpu4_traits;
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
@@ -35,7 +36,7 @@ public:
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod2, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod2(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// robotica - latvia
@@ -114,7 +115,7 @@ GAME_CUSTOM( 199?, m4robo__0, m4robo, "rou2b317.bin", 0x0000, 0x010000, CRC(8
ROM_LOAD( name, offset, length, hash ) \
M4ABEAUT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// ab
GAME_CUSTOM( 199?, m4abeaut, 0, "aba305.bin", 0x0000, 0x010000, CRC(ab70802c) SHA1(0cb59947b0bc177b10c55e02a0c8016620e0c346), "Avantime?","American Beauty (Avantime?) (MPU4) (AB, set 1)" )
@@ -322,7 +323,7 @@ GAME_CUSTOM( 199?, m4abeaut_k2, m4abeaut, "a2k0b618.bin", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TRG_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// roms of different sizes again, might also be main / sub setups
@@ -372,7 +373,7 @@ GAME_CUSTOM( 199?, m4trg__4, m4trg, "rmtp4cz", 0x0000, 0x010000, CRC(1c5f
ROM_LOAD( name, offset, length, hash ) \
M4RMTP_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4rmtp, 0, "r4iha202.bin", 0x0000, 0x010000, CRC(b1588632) SHA1(ad21bbc5e99fd6b511e6881e8b20dcad177b937f), "Avantime?","Reel Magic Turbo Play (Avantime?) (MPU4) (set 1)" )
@@ -398,7 +399,7 @@ GAME_CUSTOM( 199?, m4rmtp__g, m4rmtp, "r4iua205.bin", 0x0000, 0x010000, CRC(4
ROM_LOAD( name, offset, length, hash ) \
M4RMTPD_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
@@ -465,7 +466,7 @@ GAME_CUSTOM( 199?, m4rmtpd__am, m4rmtpd, "rduhb511.bin", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4MBEL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4mbel, 0, "mb1.1k", 0x0000, 0x020000, CRC(00763b37) SHA1(2314ea5e8541e2be2492135785317f4fdd998692), "Avantime?","Millennium Bells (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4mbel__a, m4mbel, "mb1.1kw", 0x0000, 0x010000, CRC(d1ccefe4) SHA1(dba63d0a75fe614e77ac24ae23bfd0d924dd3e9a), "Avantime?","Millennium Bells (Avantime?) (MPU4) (set 2)" )
@@ -546,7 +547,7 @@ GAME_CUSTOM( 199?, m4mbel__a0, m4mbel, "mbpl3.3c", 0x0000, 0x020000, C
ROM_LOAD( name, offset, length, hash ) \
M4CMONT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// cmc
GAME_CUSTOM( 199?, m4cmont, 0, "cmc1.7", 0x0000, 0x020000, CRC(aaebab34) SHA1(36145b7d062ad5a740bcf326933f78274b99495c), "Avantime?","Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 1)" )
@@ -634,7 +635,7 @@ GAME_CUSTOM( 199?, m4cmont_gt3, m4cmont, "gtr58gaa", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4BLKMGC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// new - latvia
@@ -661,7 +662,7 @@ GAME_CUSTOM( 199?, m4blkmgc_u6, m4blkmgc, "bau1b307.bin", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4AMALAD_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4amalad, 0, "aag1.4", 0x0000, 0x020000, CRC(0da943a1) SHA1(50915ce67687f15a36b5c38b1c1c6773bd3ecf9f), "Avantime?","American Aladdin (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4amalad__a, m4amalad, "aag1.3", 0x0000, 0x020000, CRC(3a9552a9) SHA1(7695899b6ed52d0c7530b5ed0829cfdbb3892fa2), "Avantime?","American Aladdin (Avantime?) (MPU4) (set 2)" )
@@ -692,7 +693,7 @@ GAME_CUSTOM( 199?, m4amalad__n, m4amalad, "jpaltst2.dat", 0x0000, 0x020
ROM_LOAD( name, offset, length, hash ) \
M4BBEN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4bben, 0, "bbc1a102.bin", 0x0000, 0x010000, CRC(c5010bb6) SHA1(f39ab219eafaa391b5b777c2918f059ba67b4504), "Avantime?","Big Ben (Avantime?) (MPU4) (set 1)" )
@@ -719,7 +720,7 @@ GAME_CUSTOM( 199?, m4bben__i, m4bben, "bbc2b106.bin", 0x0000, 0x010000, CRC(d
ROM_LOAD( name, offset, length, hash ) \
M4BBOX_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4bbox, 0, "bbb1.bin", 0x0000, 0x010000, CRC(b668e08e) SHA1(f401405419689ea5ad06dfd815aaef9e1b7ed4e1), "Avantime?","Brain Box (Avantime?) (MPU4) (set 1)" )
@@ -745,7 +746,7 @@ GAME_CUSTOM( 199?, m4bbox__i, m4bbox, "bbb9.bin", 0x0000, 0x010000, CRC(1
ROM_LOAD( name, offset, length, hash ) \
M4FRNUDG_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4frnudg, 0, "fanhc11.bin", 0x0000, 0x010000, CRC(d2fe9df9) SHA1(7b519e4ed447f8c59fda972fc398f6ff423a8f92), "Avantime?","Fruit & Nudge (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4frnudg__a, m4frnudg, "fanhc12.bin", 0x0000, 0x010000, CRC(2b2176e0) SHA1(9acffc05c02e76a6cbe4cfd708ff2d94ecb6c308), "Avantime?","Fruit & Nudge (Avantime?) (MPU4) (set 2)" )
@@ -765,7 +766,7 @@ GAME_CUSTOM( 199?, m4frnudg__c, m4frnudg, "fanhc9.bin", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4FRMTX_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4frmtx, 0, "fm1.bin", 0x0000, 0x010000, CRC(0d11ffee) SHA1(50a3f97cf76855ba503a833e4198c154a57b6847), "Avantime?","Fruit Matrix (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4frmtx__a, m4frmtx, "fm2.bin", 0x0000, 0x010000, CRC(ab143a49) SHA1(c4ba0671b154707fd69d58fd3bf65f5ba4d2bf53), "Avantime?","Fruit Matrix (Avantime?) (MPU4) (set 2)" )
GAME_CUSTOM( 199?, m4frmtx__b, m4frmtx, "fm4.bin", 0x0000, 0x010000, CRC(cbe09e1d) SHA1(00d17c6a189ac1a60ec9acbe2babb5a69dec3711), "Avantime?","Fruit Matrix (Avantime?) (MPU4) (set 3)" )
@@ -786,7 +787,7 @@ GAME_CUSTOM( 199?, m4frmtx__f, m4frmtx, "frmatx3", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4JOK2K_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// latvia
GAME_CUSTOM( 199?, m4jok2k, 0, "j300 1.512", 0x0000, 0x010000, CRC(3a52da14) SHA1(b2b7f32093938f8b793fa4c425cd5beaeaa83286), "Avantime?","Joker 2000 (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4jok2k__a, m4jok2k, "j300 2.512", 0x0000, 0x010000, CRC(6d3c6b99) SHA1(b5f34043e3cc93908b7ff969ae2546862a3a79ce), "Avantime?","Joker 2000 (Avantime?) (MPU4) (set 2)" )
@@ -806,7 +807,7 @@ GAME_CUSTOM( 199?, m4jok2k__b, m4jok2k, "joker2000.dat", 0x0000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4MJP_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4mjp, 0, "code.bin", 0x0000, 0x020000, CRC(c57d0148) SHA1(4d21a501ea64eb4fcf22ae9fba81b8982a55730e), "Avantime?","Mega Jackpot (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4mjp__a, m4mjp, "mjl02.bin", 0x0000, 0x010000, CRC(014d1765) SHA1(5cc4039e574b3a68be6d639453b217ce9a0841f0), "Avantime?","Mega Jackpot (Avantime?) (MPU4) (set 2)" )
@@ -828,7 +829,7 @@ GAME_CUSTOM( 199?, m4mjp__g, m4mjp, "tl01.bin", 0x0000, 0x010000, CRC(a36a
ROM_LOAD( name, offset, length, hash ) \
M4MILROU_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4milrou, 0, "nonp1.dat", 0x0000, 0x020000, CRC(b7503d57) SHA1(dc0ba6073ae278b8406cc7e30e4b4fed21df61c8), "Avantime?","Millennium Roulette (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4milrou__a, m4milrou, "p1.dat", 0x0000, 0x020000, CRC(b3f4a2b0) SHA1(01ee5ef5eea0f83791d68b2d9bdb5be6c6495a28), "Avantime?","Millennium Roulette (Avantime?) (MPU4) (set 2)" )
@@ -845,7 +846,7 @@ GAME_CUSTOM( 199?, m4milrou__a, m4milrou, "p1.dat", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4KINGG_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4avan_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4avan_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4kingg, 0, "kgiha101.bin", 0x0000, 0x010000, CRC(4da8bea1) SHA1(63fbad82877f772f3f559026eaddb69e09d6556b), "Avantime?","King George (Avantime?) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4kingg__a, m4kingg, "kgiha102.bin", 0x0000, 0x010000, CRC(573687b0) SHA1(eafc90120297201fc1ba40029b592ec25d972690), "Avantime?","King George (Avantime?) (MPU4) (set 2)" )
diff --git a/src/mame/barcrest/mpu4bwb.cpp b/src/mame/barcrest/mpu4bwb.cpp
index 467e7b35574..2eb735ff55f 100644
--- a/src/mame/barcrest/mpu4bwb.cpp
+++ b/src/mame/barcrest/mpu4bwb.cpp
@@ -89,17 +89,15 @@ public:
m_hack_duart_fixed_low = true;
}
- void bwboki(machine_config &config);
-
- template<const uint32_t* Key> void bwboki_chr_cheat(machine_config &config)
+ void bwboki_f(machine_config &config);
+ template<const uint32_t* Key> void bwboki_chr_cheat_f(machine_config &config);
+ template<const uint32_t* Key, typename... T>
+ auto bwboki_chr_cheat(T... traits)
{
- bwboki(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4bwb_machines_state::mpu4_memmap_characteriser_bwb);
- MPU4_CHARACTERISER_PAL_BWB(config, m_characteriser_bwb, 0);
- m_characteriser_bwb->set_common_key(Key[0] & 0xff);
- m_characteriser_bwb->set_other_key(Key[1]);
+ return trait_wrapper(this, &mpu4bwb_machines_state::bwboki_chr_cheat_f<Key>, traits...);
}
+
protected:
void mpu4_memmap_characteriser_bwb(address_map &map);
@@ -122,22 +120,29 @@ MACHINE_START_MEMBER(mpu4bwb_machines_state,mpu4bwb)
mpu4_config_common();
m_link7a_connected=false;
- m_mod_number=4;
mpu4_install_mod4bwb_space(space);
}
-void mpu4bwb_machines_state::bwboki(machine_config &config)
+void mpu4bwb_machines_state::bwboki_f(machine_config &config)
{
mpu4base(config);
MCFG_MACHINE_START_OVERRIDE(mpu4bwb_machines_state,mpu4bwb)
mpu4_common2(config);
- mpu4_reels<4, 5>(config);
OKIM6376(config, m_msm6376, 128000); //Adjusted by IC3, default to 16KHz sample. Can also be 85430 at 10.5KHz and 64000 at 8KHz
m_msm6376->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
}
+template<const uint32_t* Key> void mpu4bwb_machines_state::bwboki_chr_cheat_f(machine_config &config)
+{
+ bwboki_f(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4bwb_machines_state::mpu4_memmap_characteriser_bwb);
+ MPU4_CHARACTERISER_PAL_BWB(config, m_characteriser_bwb, 0);
+ m_characteriser_bwb->set_common_key(Key[0] & 0xff);
+ m_characteriser_bwb->set_other_key(Key[1]);
+}
+
void mpu4bwb_machines_state::mpu4_memmap_characteriser_bwb(address_map &map)
{
mpu4_memmap(map);
@@ -243,6 +248,8 @@ INPUT_PORTS_END
} // anonymous namespace
+using namespace mpu4_traits;
+
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
@@ -268,10 +275,10 @@ static const uint32_t m4abra_keys[2] = { 0x11, 0x192703 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4abra, 0, bwboki_chr_cheat<m4abra_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "nn_sj___.4_0", 0x0000, 0x040000, CRC(48437d29) SHA1(72a2e9337fc0a004c382931f3af856253c44ed61), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4abra__a, m4abra, bwboki_chr_cheat<m4abra_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "nn_sja__.4_0", 0x0000, 0x040000, CRC(766cd4ae) SHA1(4d630b967ede615d325f524c2e4c92c7e7a60886), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2)" )
-GAME_CUSTOM( 199?, m4abra__b, m4abra, bwboki_chr_cheat<m4abra_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "nn_sjb__.4_0", 0x0000, 0x040000, CRC(ca77a68a) SHA1(e753c065d299038bae4c451e647b9bcda36421d9), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3)" ) // Datapak
-GAME_CUSTOM( 199?, m4abra__c, m4abra, bwboki_chr_cheat<m4abra_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "nn_sjk__.4_0", 0x0000, 0x040000, CRC(19018556) SHA1(6df993939e70a24621d4e732d0670d64fac1cf56), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4)" ) // % key
+GAME_CUSTOM( 199?, m4abra, 0, bwboki_chr_cheat<m4abra_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "nn_sj___.4_0", 0x0000, 0x040000, CRC(48437d29) SHA1(72a2e9337fc0a004c382931f3af856253c44ed61), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4abra__a, m4abra, bwboki_chr_cheat<m4abra_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "nn_sja__.4_0", 0x0000, 0x040000, CRC(766cd4ae) SHA1(4d630b967ede615d325f524c2e4c92c7e7a60886), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2)" )
+GAME_CUSTOM( 199?, m4abra__b, m4abra, bwboki_chr_cheat<m4abra_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "nn_sjb__.4_0", 0x0000, 0x040000, CRC(ca77a68a) SHA1(e753c065d299038bae4c451e647b9bcda36421d9), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4abra__c, m4abra, bwboki_chr_cheat<m4abra_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "nn_sjk__.4_0", 0x0000, 0x040000, CRC(19018556) SHA1(6df993939e70a24621d4e732d0670d64fac1cf56), "BWB",u8"Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4)" ) // % key
/*****************************************************************************************************************************************************************************
@@ -296,7 +303,7 @@ static const uint32_t m4bigmt_keys[2] = { 0x10, 0x241215 };
ROM_LOAD( name, offset, length, hash ) \
M4BIGMT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4bigmt_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4bigmt_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4bigmt, 0, "bigm1320", 0x0000, 0x010000, CRC(a5085347) SHA1(93a7f7656e53461270e04190ff538959d6c917c1), "BWB","The Big Match (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4bigmt__a, m4bigmt, "tb_20___.7_1", 0x0000, 0x010000, CRC(22fae0f0) SHA1(a875adccf96fbbff69f5fe76720514767cdcae66), "BWB","The Big Match (BWB) (MPU4) (set 2)" )
@@ -325,7 +332,7 @@ static const uint32_t m4bingbl_keys[2] = { 0x10, 0x322214 };
ROM_LOAD( name, offset, length, hash ) \
M4BINGBL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4bingbl_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4bingbl_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4bingbl, 0, "bb_20a__.8_1", 0x0000, 0x010000, CRC(10f29ba3) SHA1(739b413f35676834ebafeb121c6059759586ec72), "BWB","Bingo Belle (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4bingbl__a, m4bingbl, "bb_20bg_.8_1", 0x0000, 0x010000, CRC(9969c9ce) SHA1(8c754335e7ff75bc46f02095c2c7d57df046db47), "BWB","Bingo Belle (BWB) (MPU4) (set 2)" )
@@ -356,7 +363,7 @@ static const uint32_t m4bingbs_keys[2] = { 0x10, 0x322214 };
ROM_LOAD( name, offset, length, hash ) \
M4BINGBS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4bingbs_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4bingbs_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4bingbs, 0, "bp_20a__.2_1", 0x0000, 0x010000, CRC(ca005003) SHA1(271ff0dbee529ca15c79c9aa1047efa8993ea073), "BWB","Bingo Belle Showcase (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4bingbs__a, m4bingbs, "bp_20bg_.2_1", 0x0000, 0x010000, CRC(1b59c32f) SHA1(0c7df33f921639bfedbddd969dcbcd62e38ff912), "BWB","Bingo Belle Showcase (BWB) (MPU4) (set 2)" )
@@ -387,7 +394,7 @@ static const uint32_t m4bingcl_keys[2] = { 0x03, 0x072114 };
ROM_LOAD( name, offset, length, hash ) \
M4BINGCL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4bingcl_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4bingcl_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4bingcl, 0, "bc_xe___.2_1", 0x0000, 0x010000, CRC(3abbc215) SHA1(b5e59b30c07c4ffef69c5729f1a28d7ee55636bd), "BWB","Bingo Club (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4bingcl__a, m4bingcl, "bc_xe_b_.2_1", 0x0000, 0x010000, CRC(3e11c5c0) SHA1(2d9bc987fed040664f211bb9d13984b6cba5e25f), "BWB","Bingo Club (BWB) (MPU4) (set 2)" )
@@ -416,7 +423,7 @@ static const uint32_t m4blsbys_g_keys[2] = { 0x36, 0x010e20 };
ROM_LOAD( name, offset, length, hash ) \
M4BLSBYS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4blsbys_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big_five_std, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4blsbys_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4blsbys, 0, "bbprog.bin", 0x0000, 0x020000, CRC(c262cfda) SHA1(f004895e0dd3f8420683927915554e19e41bd20b), "BWB","Blues Boys (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4blsbys__a, m4blsbys, "bf_20a__.3_1", 0x0000, 0x020000, CRC(fca7764f) SHA1(a88378247b6710d6122c515c31c39c5cd9678ce2), "BWB","Blues Boys (BWB) (MPU4) (set 2)" )
@@ -451,7 +458,7 @@ GAME_CUSTOM( 199?, m4blsbys__8, m4blsbys, "bs_25a_c.2_1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4BLSBYS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4blsbys_g_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big_five_std, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4blsbys_g_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4blsbys__g, m4blsbys, "bs_05___.3v1", 0x0000, 0x020000, CRC(26e8eb95) SHA1(7d8dbca127e1867714cbeb9d699b2173de724eb2), "BWB","Blues Boys (BWB) (MPU4) (set 26)" )
GAME_CUSTOM( 199?, m4blsbys__h, m4blsbys, "bs_05__c.3v1", 0x0000, 0x020000, CRC(12e51237) SHA1(68235cf5f36862a26d5d44464041dabb01b9f95c), "BWB","Blues Boys (BWB) (MPU4) (set 27)" )
@@ -495,21 +502,21 @@ static const uint32_t m4csoc_keys[2] = { 0x11, 0x101230 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4csoc, 0, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"sg_sj___.1_0", 0x0000, 0x040000, CRC(f21cd1aa) SHA1(dc010a315a8d738ad9e5e384197499e08a8d5ef6), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4csoc__a, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"sg_sj___.2_0", 0x0000, 0x040000, CRC(5513f2a3) SHA1(e9e59461a007be02beae6cd1610b8582d367c15e), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 2)" )
-GAME_CUSTOM( 199?, m4csoc__b, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"sg_sj_d_.2_0", 0x0000, 0x040000, CRC(b0058d0f) SHA1(635c4f729c27c5cb4356f62dcc13127043ea0e5c), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4csoc, 0, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"sg_sj___.1_0", 0x0000, 0x040000, CRC(f21cd1aa) SHA1(dc010a315a8d738ad9e5e384197499e08a8d5ef6), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4csoc__a, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"sg_sj___.2_0", 0x0000, 0x040000, CRC(5513f2a3) SHA1(e9e59461a007be02beae6cd1610b8582d367c15e), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 2)" )
+GAME_CUSTOM( 199?, m4csoc__b, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"sg_sj_d_.2_0", 0x0000, 0x040000, CRC(b0058d0f) SHA1(635c4f729c27c5cb4356f62dcc13127043ea0e5c), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 3)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4csoc__c, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"so_sj___.b_0", 0x0000, 0x040000, CRC(65d5bb2d) SHA1(61c6896d97ed79e2f31b37b9d8998980ceac4fc5), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4csoc__d, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"so_sj_d_.b_0", 0x0000, 0x040000, CRC(5e79ba34) SHA1(cb8c689319b5f94ce0385b3b7846a49589358ccc), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4csoc__e, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"so_sjs__.b_0", 0x0000, 0x040000, CRC(2f50675e) SHA1(baed8e3a455ec5bfa810e64dc4c66996d6746bbc), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3)" ) // Datapak
-GAME_CUSTOM( 199?, m4csoc__f, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"ch_socc.5", 0x0000, 0x040000, CRC(1b2ea78d) SHA1(209534ccd537c0ca9d02301830a52ebc29b93cb7), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 4)" )
+GAME_CUSTOM( 199?, m4csoc__c, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"so_sj___.b_0", 0x0000, 0x040000, CRC(65d5bb2d) SHA1(61c6896d97ed79e2f31b37b9d8998980ceac4fc5), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4csoc__d, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"so_sj_d_.b_0", 0x0000, 0x040000, CRC(5e79ba34) SHA1(cb8c689319b5f94ce0385b3b7846a49589358ccc), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4csoc__e, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"so_sjs__.b_0", 0x0000, 0x040000, CRC(2f50675e) SHA1(baed8e3a455ec5bfa810e64dc4c66996d6746bbc), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4csoc__f, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"ch_socc.5", 0x0000, 0x040000, CRC(1b2ea78d) SHA1(209534ccd537c0ca9d02301830a52ebc29b93cb7), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 4)" )
//
-GAME_CUSTOM( 199?, m4csoc__g, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big ,"so_vc___.c_0", 0x0000, 0x040000, CRC(d683b202) SHA1(95803008a50229bc85ed177b587fdf05cb152df3), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4csoc__h, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big ,"so_vc_d_.c_0", 0x0000, 0x040000, CRC(ed2fb31b) SHA1(de72d8abbb4a22125ed312e6ccfcab6b3e591ec2), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4csoc__g, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big ,"so_vc___.c_0", 0x0000, 0x040000, CRC(d683b202) SHA1(95803008a50229bc85ed177b587fdf05cb152df3), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4csoc__h, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big ,"so_vc_d_.c_0", 0x0000, 0x040000, CRC(ed2fb31b) SHA1(de72d8abbb4a22125ed312e6ccfcab6b3e591ec2), "BWB",u8"Championship Soccer (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 2)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4csoc__i, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"ch_socc", 0x0000, 0x040000, CRC(ea9af5bd) SHA1(99319995ee886196ddd540bf37960a4e5b9d4f34), "BWB",u8"Championship Soccer (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot)" )
+GAME_CUSTOM( 199?, m4csoc__i, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"ch_socc", 0x0000, 0x040000, CRC(ea9af5bd) SHA1(99319995ee886196ddd540bf37960a4e5b9d4f34), "BWB",u8"Championship Soccer (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot)" )
//
-GAME_CUSTOM( 199?, m4csoc__j, m4csoc, bwboki_chr_cheat<m4csoc_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big ,"chsoc8ac", 0x0000, 0x040000, CRC(8e0471ba) SHA1(3b7e6edbb3490e99af148c0cfe8d39c13c282880), "hack",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £8 jackpot, 20/25/30p stake / £15 jackpot) (hack)" ) // BWB string at the start of the demo has been blanked out
+GAME_CUSTOM( 199?, m4csoc__j, m4csoc, bwboki_chr_cheat<m4csoc_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big ,"chsoc8ac", 0x0000, 0x040000, CRC(8e0471ba) SHA1(3b7e6edbb3490e99af148c0cfe8d39c13c282880), "hack",u8"Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £8 jackpot, 20/25/30p stake / £15 jackpot) (hack)" ) // BWB string at the start of the demo has been blanked out
/*****************************************************************************************************************************************************************************
@@ -533,7 +540,7 @@ static const uint32_t m4cpfinl_keys[2] = { 0x10, 0x241215 };
ROM_LOAD( name, offset, length, hash ) \
M4CPFINL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4cpfinl_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4cpfinl_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4cpfinl, 0, "cu_10___.5_1", 0x0000, 0x010000, CRC(47a85443) SHA1(d308b9a6dcb0200f72d5c5b380907d2d55f3e40d), "BWB","Cup Final (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4cpfinl__a, m4cpfinl, "cu_10_b_.5_1", 0x0000, 0x010000, CRC(2583f410) SHA1(447a2316e3c3da6f835699602834f7ca5bafbdf9), "BWB","Cup Final (BWB) (MPU4) (set 2)" )
@@ -569,7 +576,7 @@ static const uint32_t m4danced_keys[2] = { 0x10, 0x3b240d };
ROM_LOAD( name, offset, length, hash ) \
M4DANCED_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4danced_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4danced_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4danced, 0, "dd_22bg_.2_1", 0x0000, 0x020000, CRC(f79525a1) SHA1(babfbf8beae423626057235bcad5eae18531160e), "BWB","Dancing Diamonds (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4danced__a, m4danced, "dd_22bg_.4_1", 0x0000, 0x020000, CRC(e50ffa46) SHA1(b42d806422f85573bcbe284b4192f393e3e57306), "BWB","Dancing Diamonds (BWB) (MPU4) (set 2)" )
@@ -617,7 +624,7 @@ static const uint32_t m4daytn_keys[2] = { 0x13, 0x1f1e23 };
ROM_LOAD( name, offset, length, hash ) \
M4DAYTN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4daytn_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4daytn_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4daytn, 0, "da_78___.1_0", 0x0000, 0x040000, CRC(50beafdd) SHA1(0ef6dd4fc9c8cda596fd383e47b9c7976b5d15f0), "BWB","Daytona (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4daytn__a, m4daytn, "da_78_d_.1_0", 0x0000, 0x040000, CRC(d55d3f9a) SHA1(a145379237947601f2ecb84138c113b71842cd34), "BWB","Daytona (BWB) (MPU4) (set 2)" )
@@ -658,7 +665,7 @@ static const uint32_t m4excal_keys[2] = { 0xff, 0xffffffff };
ROM_LOAD( name, offset, length, hash ) \
M4EXCAL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4excal_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4excal_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4excal, 0, "ex_05a__.6_1", 0x0000, 0x020000, CRC(317fa289) SHA1(8a0e83a764e2a04285367e0f7ebb814fedc81400), "BWB","Excalibur (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4excal__a, m4excal, "ex_20a_6.6_1", 0x0000, 0x020000, CRC(284937c8) SHA1(3be8bf21ab0ff97f67ce170cee48cd08ea325571), "BWB","Excalibur (BWB) (MPU4) (set 2)" )
@@ -695,13 +702,13 @@ static const uint32_t m4exotic_keys[2] = { 0x34, 0x3f0e26 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
// don't require stake/jp set
-GAME_CUSTOM( 199?, m4exotic, 0, bwboki_chr_cheat<m4exotic_keys>, mpu4_impcoin, init_m4default_big, "eo_49bm_.2_0", 0x0000, 0x020000, CRC(c748c4ca) SHA1(7d0d498f9edd792ed861c8bf9cf1bb03698d144d), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4exotic__a, m4exotic, bwboki_chr_cheat<m4exotic_keys>, mpu4_impcoin, init_m4default_big, "eo_49bmd.2_0", 0x0000, 0x020000, CRC(98436c04) SHA1(1db7c95f7a0297aa3da7f1ce27c790ffa1fa4ebe), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4exotic__b, m4exotic, bwboki_chr_cheat<m4exotic_keys>, mpu4_impcoin, init_m4default_big, "eo_49bmd.2g0", 0x0000, 0x020000, CRC(425a0152) SHA1(6a235c613f52c4b8985a589f89542eebd3574fde), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 3)" ) // Datapak
-GAME_CUSTOM( 199?, m4exotic__c, m4exotic, bwboki_chr_cheat<m4exotic_keys>, mpu4_impcoin, init_m4default_big, "eo_49bg_.2_0", 0x0000, 0x020000, CRC(c3bf2286) SHA1(74090fd0a103a6c311d426f4aae8e7af8b1d3bc0), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 4)" ) // Datapak
+GAME_CUSTOM( 199?, m4exotic, 0, bwboki_chr_cheat<m4exotic_keys>(R5, RT3), mpu4_impcoin, init_m4big, "eo_49bm_.2_0", 0x0000, 0x020000, CRC(c748c4ca) SHA1(7d0d498f9edd792ed861c8bf9cf1bb03698d144d), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4exotic__a, m4exotic, bwboki_chr_cheat<m4exotic_keys>(R5, RT3), mpu4_impcoin, init_m4big, "eo_49bmd.2_0", 0x0000, 0x020000, CRC(98436c04) SHA1(1db7c95f7a0297aa3da7f1ce27c790ffa1fa4ebe), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4exotic__b, m4exotic, bwboki_chr_cheat<m4exotic_keys>(R5, RT3), mpu4_impcoin, init_m4big, "eo_49bmd.2g0", 0x0000, 0x020000, CRC(425a0152) SHA1(6a235c613f52c4b8985a589f89542eebd3574fde), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4exotic__c, m4exotic, bwboki_chr_cheat<m4exotic_keys>(R5, RT3), mpu4_impcoin, init_m4big, "eo_49bg_.2_0", 0x0000, 0x020000, CRC(c3bf2286) SHA1(74090fd0a103a6c311d426f4aae8e7af8b1d3bc0), "BWB",u8"Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 4)" ) // Datapak
// require stake/jp set
-GAME_CUSTOM( 199?, m4exotic__d, m4exotic, bwboki_chr_cheat<m4exotic_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "eo_s9bt_.2g0", 0x0000, 0x020000, CRC(c527d333) SHA1(083d7be95d73d259fe8ec1d87a3a41089a4c44df), "BWB",u8"Exotic Fruits (BWB) (MPU4) (20/25/30p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4exotic__e, m4exotic, bwboki_chr_cheat<m4exotic_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "eo_sja__.2_0", 0x0000, 0x020000, CRC(5ca9557f) SHA1(5fa42c56c67b505272d358a54ebe911fdb0b905e), "BWB",u8"Exotic Fruits (BWB) (MPU4) (20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4exotic__d, m4exotic, bwboki_chr_cheat<m4exotic_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "eo_s9bt_.2g0", 0x0000, 0x020000, CRC(c527d333) SHA1(083d7be95d73d259fe8ec1d87a3a41089a4c44df), "BWB",u8"Exotic Fruits (BWB) (MPU4) (20/25/30p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4exotic__e, m4exotic, bwboki_chr_cheat<m4exotic_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "eo_sja__.2_0", 0x0000, 0x020000, CRC(5ca9557f) SHA1(5fa42c56c67b505272d358a54ebe911fdb0b905e), "BWB",u8"Exotic Fruits (BWB) (MPU4) (20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
/*****************************************************************************************************************************************************************************
@@ -728,18 +735,18 @@ static const uint32_t m4firice_keys[2] = { 0x11, 0x162413 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
// allows you to boot with 50p stake, but still shows '20p'
-GAME_CUSTOM( 199?, m4firice, 0, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "fi_20__d.5_0", 0x0000, 0x040000, CRC(ab46574c) SHA1(d233b137f8f42b9b644b34a627fbcc5b662e8ae1), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4firice__a, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "fi_20_bd.5_0", 0x0000, 0x040000, CRC(9b2bc052) SHA1(34b970659218fde097238b852dadedcb928f69fd), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4firice__b, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "fi_20_dd.5_0", 0x0000, 0x040000, CRC(2bbc9855) SHA1(84d51eeadc01ac74d630a05b933343f01f04b2af), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 3)" ) // Datapak
-GAME_CUSTOM( 199?, m4firice__c, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "fi_20_kd.5_0", 0x0000, 0x040000, CRC(529b43b1) SHA1(80d4d928918fdc869b1693e21a5c25045e5c9449), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 4)" ) // % key
-GAME_CUSTOM( 199?, m4firice__d, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "fi_20a_d.5_0", 0x0000, 0x040000, CRC(8d6ce79d) SHA1(05954ed4b34af73c065b6203a50da9af7d8373fe), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 5)" )
-GAME_CUSTOM( 199?, m4firice__e, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "fi_20s_d.5_0", 0x0000, 0x040000, CRC(d0aa53af) SHA1(f71801344c17a759ec4eb8958377bbcf4b4cae65), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 6)" ) // Datapak
+GAME_CUSTOM( 199?, m4firice, 0, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "fi_20__d.5_0", 0x0000, 0x040000, CRC(ab46574c) SHA1(d233b137f8f42b9b644b34a627fbcc5b662e8ae1), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4firice__a, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "fi_20_bd.5_0", 0x0000, 0x040000, CRC(9b2bc052) SHA1(34b970659218fde097238b852dadedcb928f69fd), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4firice__b, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "fi_20_dd.5_0", 0x0000, 0x040000, CRC(2bbc9855) SHA1(84d51eeadc01ac74d630a05b933343f01f04b2af), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4firice__c, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "fi_20_kd.5_0", 0x0000, 0x040000, CRC(529b43b1) SHA1(80d4d928918fdc869b1693e21a5c25045e5c9449), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 4)" ) // % key
+GAME_CUSTOM( 199?, m4firice__d, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "fi_20a_d.5_0", 0x0000, 0x040000, CRC(8d6ce79d) SHA1(05954ed4b34af73c065b6203a50da9af7d8373fe), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 5)" )
+GAME_CUSTOM( 199?, m4firice__e, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "fi_20s_d.5_0", 0x0000, 0x040000, CRC(d0aa53af) SHA1(f71801344c17a759ec4eb8958377bbcf4b4cae65), "BWB",u8"Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 6)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4firice__f, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot10_20p, init_m4default_big, "fi_sj___.e_0", 0x0000, 0x040000, CRC(7f12e37a) SHA1(fb09ff782f66972b8bdeff105c5f3d1f9f676809), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4firice__g, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot10_20p, init_m4default_big, "fi_sj_b_.e_0", 0x0000, 0x040000, CRC(5aef48d2) SHA1(73f410951a737f75f3e7c14e704eca9c26cfa750), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4firice__h, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot10_20p, init_m4default_big, "fi_sj_d_.e_0", 0x0000, 0x040000, CRC(61822af2) SHA1(8c721229a5ce9f491cbc638b8c5fa5c0c3032700), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3)" ) // Datapak
-GAME_CUSTOM( 199?, m4firice__i, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot10_20p, init_m4default_big, "fi_sj_k_.e_0", 0x0000, 0x040000, CRC(2b57036b) SHA1(60cec130770ff643af1148f16a3afe3b102e94e2), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4)" ) // % key
-GAME_CUSTOM( 199?, m4firice__j, m4firice, bwboki_chr_cheat<m4firice_keys>, mpu4impcoin_jackpot10_20p, init_m4default_big, "fi_sja__.e_0", 0x0000, 0x040000, CRC(da5e0eff) SHA1(9f5ddce366786bdf898c9410be417c8028cebeb4), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 5)" )
+GAME_CUSTOM( 199?, m4firice__f, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot10_20p, init_m4big, "fi_sj___.e_0", 0x0000, 0x040000, CRC(7f12e37a) SHA1(fb09ff782f66972b8bdeff105c5f3d1f9f676809), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4firice__g, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot10_20p, init_m4big, "fi_sj_b_.e_0", 0x0000, 0x040000, CRC(5aef48d2) SHA1(73f410951a737f75f3e7c14e704eca9c26cfa750), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4firice__h, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot10_20p, init_m4big, "fi_sj_d_.e_0", 0x0000, 0x040000, CRC(61822af2) SHA1(8c721229a5ce9f491cbc638b8c5fa5c0c3032700), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4firice__i, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot10_20p, init_m4big, "fi_sj_k_.e_0", 0x0000, 0x040000, CRC(2b57036b) SHA1(60cec130770ff643af1148f16a3afe3b102e94e2), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4)" ) // % key
+GAME_CUSTOM( 199?, m4firice__j, m4firice, bwboki_chr_cheat<m4firice_keys>(R5, RT3), mpu4impcoin_jackpot10_20p, init_m4big, "fi_sja__.e_0", 0x0000, 0x040000, CRC(da5e0eff) SHA1(9f5ddce366786bdf898c9410be417c8028cebeb4), "BWB",u8"Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 5)" )
/*****************************************************************************************************************************************************************************
*
@@ -762,7 +769,7 @@ static const uint32_t m4harle_keys[2] = { 0x10, 0x220525 };
ROM_LOAD( name, offset, length, hash ) \
M4HARLE_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4harle_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4harle_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4harle, 0, "hq_20a__.1_1", 0x0000, 0x010000, CRC(b8ae3025) SHA1(94a449eff103bf6ba1fc6e85b03061b9ce658ae0), "BWB","Harlequin (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4harle__a, m4harle, "hq_20bg_.1_1", 0x0000, 0x010000, CRC(31356248) SHA1(d8791b1c861ed4388660bbe78f2589db7f1e779e), "BWB","Harlequin (BWB) (MPU4) (set 2)" )
@@ -815,18 +822,18 @@ static const uint32_t m4hvhel_keys[2] = { 0x11, 0x3f0b26 };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4hvhel, 0, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "hh_20__d.2_0", 0x0000, 0x040000, CRC(801de788) SHA1(417b985714d8f0ebed93b65a3f865e03474ce9e5), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 1)" )
-GAME_CUSTOM( 199?, m4hvhel__a, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "hh_20a_d.2_0", 0x0000, 0x040000, CRC(ea4e7876) SHA1(5bf711c2bdff50fe745edefa0eebf719824d9e5b), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 2)" )
-GAME_CUSTOM( 199?, m4hvhel__b, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "hh_20s_d.2_0", 0x0000, 0x040000, CRC(a519a441) SHA1(f3c19d316c82d1ebbcfdabb6d4eaa6cfa369d287), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4hvhel, 0, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "hh_20__d.2_0", 0x0000, 0x040000, CRC(801de788) SHA1(417b985714d8f0ebed93b65a3f865e03474ce9e5), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 1)" )
+GAME_CUSTOM( 199?, m4hvhel__a, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "hh_20a_d.2_0", 0x0000, 0x040000, CRC(ea4e7876) SHA1(5bf711c2bdff50fe745edefa0eebf719824d9e5b), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 2)" )
+GAME_CUSTOM( 199?, m4hvhel__b, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "hh_20s_d.2_0", 0x0000, 0x040000, CRC(a519a441) SHA1(f3c19d316c82d1ebbcfdabb6d4eaa6cfa369d287), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 3)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4hvhel__c, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot10_20p, init_m4default_big, "hh_sj___", 0x0000, 0x040000, CRC(04577b99) SHA1(48689c3a96bc42ad64dc4d363dad38c967f0cdcc), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot)" )
+GAME_CUSTOM( 199?, m4hvhel__c, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot10_20p, init_m4big, "hh_sj___", 0x0000, 0x040000, CRC(04577b99) SHA1(48689c3a96bc42ad64dc4d363dad38c967f0cdcc), "BWB", u8"Heaven & Hell (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot)" )
//
-GAME_CUSTOM( 199?, m4hvhel__d, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "hh_sj___.f_0", 0x0000, 0x040000, CRC(8ab33720) SHA1(0c9283a20c3f008baa8ce027d1266e4ef49ca56b), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4hvhel__e, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "hh_sjs__.f_0", 0x0000, 0x040000, CRC(8854763d) SHA1(323bd76a014e52e3b12427998b0e2851463246c8), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4hvhel__f, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "h_hell._pound5", 0x0000, 0x040000, CRC(cd59c0d0) SHA1(8caad9043a277fa39a3ad2d5ec3388c121e7f697), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3)" )
+GAME_CUSTOM( 199?, m4hvhel__d, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "hh_sj___.f_0", 0x0000, 0x040000, CRC(8ab33720) SHA1(0c9283a20c3f008baa8ce027d1266e4ef49ca56b), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4hvhel__e, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "hh_sjs__.f_0", 0x0000, 0x040000, CRC(8854763d) SHA1(323bd76a014e52e3b12427998b0e2851463246c8), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4hvhel__f, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "h_hell._pound5", 0x0000, 0x040000, CRC(cd59c0d0) SHA1(8caad9043a277fa39a3ad2d5ec3388c121e7f697), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3)" )
//
-GAME_CUSTOM( 199?, m4hvhel__g, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "hh_vc___.g_0", 0x0000, 0x040000, CRC(db338fb7) SHA1(e7e92293374721e7360493e9ef189991dad0a1ee), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10p stake / £5 jackpot, set 1)" )
-GAME_CUSTOM( 199?, m4hvhel__h, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "hh_vc_d_.g_0", 0x0000, 0x040000, CRC(292468bd) SHA1(f9b19f57a49c1afd670c68b7acd85d4141adfce1), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10p stake / £5 jackpot, set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4hvhel__g, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "hh_vc___.g_0", 0x0000, 0x040000, CRC(db338fb7) SHA1(e7e92293374721e7360493e9ef189991dad0a1ee), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10p stake / £5 jackpot, set 1)" )
+GAME_CUSTOM( 199?, m4hvhel__h, m4hvhel, bwboki_chr_cheat<m4hvhel_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "hh_vc_d_.g_0", 0x0000, 0x040000, CRC(292468bd) SHA1(f9b19f57a49c1afd670c68b7acd85d4141adfce1), "BWB", u8"Heaven & Hell (BWB) (MPU4) (5/10p stake / £5 jackpot, set 2)" ) // Datapak
/*****************************************************************************************************************************************************************************
@@ -858,14 +865,14 @@ static const uint32_t m4indycr_keys[2] = { 0x13, 0x102233 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4indycr, 0, bwboki_chr_cheat<m4indycr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ic_sj___.1_0", 0x0000, 0x040000, CRC(4dea0d17) SHA1(4fa19896dbb5e8f21ac7e74efc56de5cadd5bf54), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4indycr__a, m4indycr, bwboki_chr_cheat<m4indycr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ic_sj_b_.1_0", 0x0000, 0x040000, CRC(4bc0cb73) SHA1(d4c048ba9578add0104f0c529f20356c3502ea71), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4indycr__b, m4indycr, bwboki_chr_cheat<m4indycr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ic_sj_d_.1_0", 0x0000, 0x040000, CRC(165ad977) SHA1(daa444e0d128859832094d3b07026483cd3466ce), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 3)" ) // Datapak
-GAME_CUSTOM( 199?, m4indycr__c, m4indycr, bwboki_chr_cheat<m4indycr_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "ic_sj_k_.1_0", 0x0000, 0x040000, CRC(857fda64) SHA1(3eb230ea1adf9acb4cf83422c4bb1cde40756310), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 4)" ) // % key
-GAME_CUSTOM( 199?, m4indycr__d, m4indycr, bwboki_chr_cheat<m4indycr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ic_sjs__.1_0", 0x0000, 0x040000, CRC(6310b904) SHA1(0f2cd7ed83f77423bcfb2a71144fab2047dfea13), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 5)" ) // Datapak
+GAME_CUSTOM( 199?, m4indycr, 0, bwboki_chr_cheat<m4indycr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ic_sj___.1_0", 0x0000, 0x040000, CRC(4dea0d17) SHA1(4fa19896dbb5e8f21ac7e74efc56de5cadd5bf54), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4indycr__a, m4indycr, bwboki_chr_cheat<m4indycr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ic_sj_b_.1_0", 0x0000, 0x040000, CRC(4bc0cb73) SHA1(d4c048ba9578add0104f0c529f20356c3502ea71), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4indycr__b, m4indycr, bwboki_chr_cheat<m4indycr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ic_sj_d_.1_0", 0x0000, 0x040000, CRC(165ad977) SHA1(daa444e0d128859832094d3b07026483cd3466ce), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4indycr__c, m4indycr, bwboki_chr_cheat<m4indycr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "ic_sj_k_.1_0", 0x0000, 0x040000, CRC(857fda64) SHA1(3eb230ea1adf9acb4cf83422c4bb1cde40756310), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 4)" ) // % key
+GAME_CUSTOM( 199?, m4indycr__d, m4indycr, bwboki_chr_cheat<m4indycr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ic_sjs__.1_0", 0x0000, 0x040000, CRC(6310b904) SHA1(0f2cd7ed83f77423bcfb2a71144fab2047dfea13), u8"BWB","Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 5)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4indycr__e, m4indycr, bwboki_chr_cheat<m4indycr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ic_sj___.2_0", 0x0000, 0x040000, CRC(6d0ddf54) SHA1(0985aa9fddb71a499d266c12893aabbab8755319), u8"BWB","Indy Cars (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4indycr__f, m4indycr, bwboki_chr_cheat<m4indycr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ic_sj_d_.2_0", 0x0000, 0x040000, CRC(36bd0b34) SHA1(306d6e6536a4137353f9b895e64c7e9a5c79561a), u8"BWB","Indy Cars (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4indycr__e, m4indycr, bwboki_chr_cheat<m4indycr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ic_sj___.2_0", 0x0000, 0x040000, CRC(6d0ddf54) SHA1(0985aa9fddb71a499d266c12893aabbab8755319), u8"BWB","Indy Cars (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4indycr__f, m4indycr, bwboki_chr_cheat<m4indycr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ic_sj_d_.2_0", 0x0000, 0x040000, CRC(36bd0b34) SHA1(306d6e6536a4137353f9b895e64c7e9a5c79561a), u8"BWB","Indy Cars (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
/*****************************************************************************************************************************************************************************
*
@@ -890,12 +897,12 @@ static const uint32_t m4jakjok_keys[2] = { 0x11, 0x103218 };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 2000, m4jakjok, 0, bwboki_chr_cheat<m4jakjok_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "jj_sj___.6_0", 0x0000, 0x040000, CRC(7bc45b0e) SHA1(f30fef8fccdac04859f1ff93198a497eff723020), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 6) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot)" )
+GAME_CUSTOM( 2000, m4jakjok, 0, bwboki_chr_cheat<m4jakjok_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "jj_sj___.6_0", 0x0000, 0x040000, CRC(7bc45b0e) SHA1(f30fef8fccdac04859f1ff93198a497eff723020), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 6) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot)" )
//
-GAME_CUSTOM( 1998, m4jakjok__a, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "jj_sj_k_.3_0", 0x0000, 0x040000, CRC(c33dd82f) SHA1(c1f3f6ca1c45503b7f71e897e5c27368f5efb439), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 3) (20/25/30p stake / £5/£15 jackpot)" ) // % key
-GAME_CUSTOM( 2000, m4jakjok__b, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "jj_sjs__.6_0", 0x0000, 0x040000, CRC(4bcac6f5) SHA1(7dc07a7a61a6ba044020d6c2496143168c103a70), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 6) (20/25/30p stake / £5/£15 jackpot)" ) // Datapak
+GAME_CUSTOM( 1998, m4jakjok__a, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "jj_sj_k_.3_0", 0x0000, 0x040000, CRC(c33dd82f) SHA1(c1f3f6ca1c45503b7f71e897e5c27368f5efb439), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 3) (20/25/30p stake / £5/£15 jackpot)" ) // % key
+GAME_CUSTOM( 2000, m4jakjok__b, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "jj_sjs__.6_0", 0x0000, 0x040000, CRC(4bcac6f5) SHA1(7dc07a7a61a6ba044020d6c2496143168c103a70), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 6) (20/25/30p stake / £5/£15 jackpot)" ) // Datapak
//
-GAME_CUSTOM( 2000, m4jakjok__c, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "jj_vc___.7_0", 0x0000, 0x040000, CRC(4cdca8da) SHA1(ee7448b12380416a3bea2713ed5feca7473be8aa), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 7) (5/10p stake / £5 jackpot)" )
+GAME_CUSTOM( 2000, m4jakjok__c, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "jj_vc___.7_0", 0x0000, 0x040000, CRC(4cdca8da) SHA1(ee7448b12380416a3bea2713ed5feca7473be8aa), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 7) (5/10p stake / £5 jackpot)" )
#define M4JAKJOKA_EXTRA_ROMS \
ROM_REGION( 0x200000, "msm6376", 0 ) \
@@ -912,7 +919,7 @@ GAME_CUSTOM( 2000, m4jakjok__c, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>, mp
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 1998, m4jakjoka, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "j_joker", 0x0000, 0x040000, CRC(4f0c7ab8) SHA1(af962863ee55f6c2752bbe8a997e3b2102e42431), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot)" )
+GAME_CUSTOM( 1998, m4jakjoka, m4jakjok, bwboki_chr_cheat<m4jakjok_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "j_joker", 0x0000, 0x040000, CRC(4f0c7ab8) SHA1(af962863ee55f6c2752bbe8a997e3b2102e42431), "BWB",u8"Jackpot Jokers (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot)" )
/*****************************************************************************************************************************************************************************
@@ -935,7 +942,7 @@ static const uint32_t m4jflash_keys[2] = { 0x10, 0x3c3801 };
ROM_LOAD( name, offset, length, hash ) \
M4JFLASH_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4jflash_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4jflash_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4jflash, 0, "jf_25__c.2_1", 0x0000, 0x020000, CRC(4d5f1a12) SHA1(c25b6d899b74231da505bde7b671be001bdcea5d), "BWB","Jumping Jack Flash (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4jflash__a, m4jflash, "jf_25a_c.2_1", 0x0000, 0x020000, CRC(76722e15) SHA1(4bd107049ad98b848cdaba3a1318373bbd06ab9f), "BWB","Jumping Jack Flash (BWB) (MPU4) (set 2)" )
@@ -969,7 +976,7 @@ static const uint32_t m4ln7_keys[2] = { 0x10, 0x050107 };
ROM_LOAD( name, offset, length, hash ) \
M4LN7_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4ln7_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4ln7_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4ln7, 0, "l7_20a__.1_1", 0x0000, 0x010000, CRC(bfe82d2a) SHA1(4477d737a2326602a355758d8fc06220312fc085), "BWB","Lucky Number 7 (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4ln7__a, m4ln7, "l7_20s__.1_1", 0x0000, 0x010000, CRC(0037cd57) SHA1(b5882027269cf71878a73009bc3e40d9fcfac60d), "BWB","Lucky Number 7 (BWB) (MPU4) (set 2)" )
@@ -998,7 +1005,7 @@ static const uint32_t m4madmon_keys[2] = { 0x10, 0x351f3a };
ROM_LOAD( name, offset, length, hash ) \
M4MADMON_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4madmon_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4madmon_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4madmon, 0, "mm_20a__.7_1", 0x0000, 0x020000, CRC(7df66388) SHA1(4e5bcbcb2fb08b23989c83f11751400f666bbdc2), "BWB","Mad Money (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4madmon__a, m4madmon, "mm_20b__.7_1", 0x0000, 0x020000, CRC(7f592e44) SHA1(05e78347cd09d1e58f0a50a724e0563490ec5185), "BWB","Mad Money (BWB) (MPU4) (set 2)" )
@@ -1034,7 +1041,7 @@ static const uint32_t m4madmnc_keys[2] = { 0x10, 0x351f3a };
ROM_LOAD( name, offset, length, hash ) \
M4MADMNC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4madmnc_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4madmnc_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4madmnc, 0, "cm_25__c.3_1", 0x0000, 0x020000, CRC(3d9ff5fe) SHA1(b918bb15251514f50a669216c7d00ecf23e64d1b), "BWB","Mad Money Classic (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4madmnc__a, m4madmnc, "cm_25_bc.3_1", 0x0000, 0x020000, CRC(65a7b870) SHA1(58b910d7e002164cbbe1aa32c5e17dfe7cfb507d), "BWB","Mad Money Classic (BWB) (MPU4) (set 2)" )
@@ -1086,13 +1093,13 @@ static const uint32_t m4mmm_keys[2] = { 0x11, 0x320926 };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4mmm, 0, bwboki_chr_cheat<m4mmm_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "mu_sj___.3_0", 0x0000, 0x040000, CRC(abdf9d1c) SHA1(e8c6a056025b44e4ec995b42b2720e6366a97283), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4mmm__a, m4mmm, bwboki_chr_cheat<m4mmm_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "mu_sja__.3_0", 0x0000, 0x040000, CRC(3d2a9ea4) SHA1(f2ec904c8cef84affaad603edf26a864bd34be29), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2)" )
-GAME_CUSTOM( 199?, m4mmm__b, m4mmm, bwboki_chr_cheat<m4mmm_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "mu_sjk__.3_0", 0x0000, 0x040000, CRC(34e4f8ba) SHA1(606d607faeb43190f5167aa3d10c55d9986b7e58), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3)" ) // % key
-GAME_CUSTOM( 199?, m4mmm__c, m4mmm, bwboki_chr_cheat<m4mmm_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "mu_sjs__.3_0", 0x0000, 0x040000, CRC(26fb12b3) SHA1(d341181be75c87b44e4066653225911ce3460ed8), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4)" ) // Datapak
-GAME_CUSTOM( 199?, m4mmm__d, m4mmm, bwboki_chr_cheat<m4mmm_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "mu_ssj__.2_0", 0x0000, 0x040000, CRC(935b6602) SHA1(d5fa5688895fe3c2ae3ad7dbbc35d9b12574c93d), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 5)" )
-GAME_CUSTOM( 199?, m4mmm__e, m4mmm, bwboki_chr_cheat<m4mmm_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "mu_ssja_.2_0", 0x0000, 0x040000, CRC(ff97814c) SHA1(8d9d74e6b0096cdc3226cfa91d7b653855600d5a), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 6)" )
-GAME_CUSTOM( 199?, m4mmm__f, m4mmm, bwboki_chr_cheat<m4mmm_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "mu_ssjb_.2_0", 0x0000, 0x040000, CRC(5728973a) SHA1(2cd9c866fcc33150fb8d456f741ac809e0bd2b15), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 7)" ) // Datapak
+GAME_CUSTOM( 199?, m4mmm, 0, bwboki_chr_cheat<m4mmm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "mu_sj___.3_0", 0x0000, 0x040000, CRC(abdf9d1c) SHA1(e8c6a056025b44e4ec995b42b2720e6366a97283), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4mmm__a, m4mmm, bwboki_chr_cheat<m4mmm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "mu_sja__.3_0", 0x0000, 0x040000, CRC(3d2a9ea4) SHA1(f2ec904c8cef84affaad603edf26a864bd34be29), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2)" )
+GAME_CUSTOM( 199?, m4mmm__b, m4mmm, bwboki_chr_cheat<m4mmm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "mu_sjk__.3_0", 0x0000, 0x040000, CRC(34e4f8ba) SHA1(606d607faeb43190f5167aa3d10c55d9986b7e58), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3)" ) // % key
+GAME_CUSTOM( 199?, m4mmm__c, m4mmm, bwboki_chr_cheat<m4mmm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "mu_sjs__.3_0", 0x0000, 0x040000, CRC(26fb12b3) SHA1(d341181be75c87b44e4066653225911ce3460ed8), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4)" ) // Datapak
+GAME_CUSTOM( 199?, m4mmm__d, m4mmm, bwboki_chr_cheat<m4mmm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "mu_ssj__.2_0", 0x0000, 0x040000, CRC(935b6602) SHA1(d5fa5688895fe3c2ae3ad7dbbc35d9b12574c93d), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 5)" )
+GAME_CUSTOM( 199?, m4mmm__e, m4mmm, bwboki_chr_cheat<m4mmm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "mu_ssja_.2_0", 0x0000, 0x040000, CRC(ff97814c) SHA1(8d9d74e6b0096cdc3226cfa91d7b653855600d5a), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 6)" )
+GAME_CUSTOM( 199?, m4mmm__f, m4mmm, bwboki_chr_cheat<m4mmm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "mu_ssjb_.2_0", 0x0000, 0x040000, CRC(5728973a) SHA1(2cd9c866fcc33150fb8d456f741ac809e0bd2b15), "BWB",u8"Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 7)" ) // Datapak
/*****************************************************************************************************************************************************************************
@@ -1116,7 +1123,7 @@ static const uint32_t m4orland_keys[2] = { 0x10, 0x2c081f };
ROM_LOAD( name, offset, length, hash ) \
M4ORLAND_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4orland_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big_low ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4orland_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big_low ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4orland, 0, "or 05a v2-1,27c010", 0x0000, 0x020000, CRC(a33c22ee) SHA1(3598a2940f05622405fdef16426f3f5f30dfef29), "BWB","Orlando Magic (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4orland__a, m4orland, "or_05a__.1_1", 0x0000, 0x020000, CRC(3e7fe3ac) SHA1(9f4c0d5b7ba10726376b0654c8ddbc62b62c9eed), "BWB","Orlando Magic (BWB) (MPU4) (set 2)" )
@@ -1149,7 +1156,7 @@ static const uint32_t m4pzbing_keys[2] = { 0x10, 0x141531 };
ROM_LOAD( name, offset, length, hash ) \
M4PZBING_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4pzbing_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4pzbing_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4pzbing, 0, "pb_20a__.4_1", 0x0000, 0x010000, CRC(52aa92e5) SHA1(3dc20e521677e829967e1d689c9905fb96aee639), "BWB","Prize Bingo (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4pzbing__a, m4pzbing, "pb_20ad_.4_1", 0x0000, 0x010000, CRC(f6bd6ad0) SHA1(092cb895c576ed2e995b62aba21851af6fb90959), "BWB","Prize Bingo (BWB) (MPU4) (set 2)" )
@@ -1180,7 +1187,7 @@ static const uint32_t m4quidin_keys[2] = { 0x10, 0x050107 };
ROM_LOAD( name, offset, length, hash ) \
M4QUIDIN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4quidin_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4quidin_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4quidin, 0, "qi_20a__.3_1", 0x0000, 0x010000, CRC(88873c45) SHA1(70fa65402dbbe716a089497a8ccb06e0ba2aac6d), "BWB","Quids In (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4quidin__a, m4quidin, "qi_20s__.3_1", 0x0000, 0x010000, CRC(3758dc38) SHA1(d22a379975e948d465e13233a796e0fb07e3c04f), "BWB","Quids In (BWB) (MPU4) (set 2)" )
@@ -1207,7 +1214,7 @@ static const uint32_t m4quidis_keys[2] = { 0x10, 0x050107 };
ROM_LOAD( name, offset, length, hash ) \
M4QUIDIS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4quidis_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4quidis_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4quidis, 0, "pq_20a__.3_1", 0x0000, 0x010000, CRC(7eb762a1) SHA1(4546a7bf43f8ab6eb9713348e3f919de7532eed2), "BWB","Quids In Showcase (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4quidis__a, m4quidis, "pq_20s__.3_1", 0x0000, 0x010000, CRC(71360992) SHA1(0b64f27f0edfdebca41552181ff0f2b5491ec308), "BWB","Quids In Showcase (BWB) (MPU4) (set 2)" )
@@ -1237,7 +1244,7 @@ static const uint32_t m4rackem_keys[2] = { 0x11, 0x13222f };
ROM_LOAD( name, offset, length, hash ) \
M4RACKEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4rackem_keys>, mpu4impcoin_jackpot15_20p, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4rackem_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 1999, m4rackem, 0, "re_sj___.3_0", 0x0000, 0x040000, CRC(2f463d2f) SHA1(3410cc8a6d097a4edfcb4c57c237d1d514b507ba), "BWB",u8"Rack Em Up (BWB) (MPU4) (ver. 3) (20/25/30p stake / £5/£15 jackpot)" )
GAME_CUSTOM( 1999, m4rackem__a, m4rackem, "re_sj___.2_0", 0x0000, 0x040000, CRC(e36d3f86) SHA1(a5f522c86482517b8dc735b1012f8f7668c2f18d), "BWB",u8"Rack Em Up (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot) (set 1)" )
@@ -1266,7 +1273,7 @@ static const uint32_t m4rbgold_keys[2] = { 0x10, 0x2d371b };
ROM_LOAD( name, offset, length, hash ) \
M4RBGOLD_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4rbgold_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4rbgold_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4rbgold, 0, "rb_20a_p.2a1", 0x0000, 0x010000, CRC(d7e6e514) SHA1(25645b69e86335622df43113908ed88a21f27e30), "BWB","Rainbow Gold (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4rbgold__a, m4rbgold, "rb_20a_p.2f1", 0x0000, 0x010000, CRC(62af6db6) SHA1(0dcb679c05f090f8dab7228009a700c31f0179d8), "BWB","Rainbow Gold (BWB) (MPU4) (set 2)" )
@@ -1313,12 +1320,12 @@ static const uint32_t m4rhfev_keys[2] = { 0x11, 0x3f0e27 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 1999, m4rhfev, 0, bwboki_chr_cheat<m4rhfev_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "rt_sj___.7_0", 0x0000, 0x040000, CRC(3dd895ef) SHA1(433ecc268956c94c51dbccefd006b72e0ad8567b), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 1999, m4rhfev__a, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "rt_sja__.7_0", 0x0000, 0x040000, CRC(0ab59402) SHA1(485b4d2efd8f99085ed6ce5b7e07ede001c982c4), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 2)" )
-GAME_CUSTOM( 1999, m4rhfev__b, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "rt_sjs__.7_0", 0x0000, 0x040000, CRC(1a8feafb) SHA1(83151f63b7ebe1c538f9334e9c3d6889d0730144), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 1999, m4rhfev, 0, bwboki_chr_cheat<m4rhfev_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "rt_sj___.7_0", 0x0000, 0x040000, CRC(3dd895ef) SHA1(433ecc268956c94c51dbccefd006b72e0ad8567b), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 1999, m4rhfev__a, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "rt_sja__.7_0", 0x0000, 0x040000, CRC(0ab59402) SHA1(485b4d2efd8f99085ed6ce5b7e07ede001c982c4), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 2)" )
+GAME_CUSTOM( 1999, m4rhfev__b, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "rt_sjs__.7_0", 0x0000, 0x040000, CRC(1a8feafb) SHA1(83151f63b7ebe1c538f9334e9c3d6889d0730144), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 3)" ) // Datapak
//
-GAME_CUSTOM( 1999, m4rhfev__c, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "rt_vc___.1_0", 0x0000, 0x040000, CRC(2a8df147) SHA1(df0e7021e9d169575a1297f9851b5a64e20d1a40), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 1) (5/10p stake / £5/£8 jackpot) (set 1)" )
-GAME_CUSTOM( 1999, m4rhfev__d, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "rt_vc_d_.1_0", 0x0000, 0x040000, CRC(7adef22b) SHA1(d6a584581745c0ce64f646ef0b49cb68343990d0), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 1) (5/10p stake / £5/£8 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 1999, m4rhfev__c, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "rt_vc___.1_0", 0x0000, 0x040000, CRC(2a8df147) SHA1(df0e7021e9d169575a1297f9851b5a64e20d1a40), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 1) (5/10p stake / £5/£8 jackpot) (set 1)" )
+GAME_CUSTOM( 1999, m4rhfev__d, m4rhfev, bwboki_chr_cheat<m4rhfev_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "rt_vc_d_.1_0", 0x0000, 0x040000, CRC(7adef22b) SHA1(d6a584581745c0ce64f646ef0b49cb68343990d0), "BWB",u8"Red Hot Fever (BWB) (MPU4) (ver. 1) (5/10p stake / £5/£8 jackpot) (set 2)" ) // Datapak
/*****************************************************************************************************************************************************************************
@@ -1343,7 +1350,7 @@ static const uint32_t m4sinbd_keys[2] = { 0x10, 0x0c253d };
ROM_LOAD( name, offset, length, hash ) \
M4SINBD_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4sinbd_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4sinbd_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4sinbd, 0, "sd_20__c.1_1", 0x0000, 0x020000, CRC(28cd336e) SHA1(45bdf5403c04b7d3a3645b6b44ac3d12e6463a55), "BWB","Sinbad (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4sinbd__a, m4sinbd, "sd_20a__.4_1", 0x0000, 0x020000, CRC(12b8f629) SHA1(c8540ecb217cf0615d7a8d080136926646ca8497), "BWB","Sinbad (BWB) (MPU4) (set 2)" )
@@ -1393,12 +1400,12 @@ static const uint32_t m4sky_keys[2] = { 0x11, 0x1f2d3b };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4sky, 0, bwboki_chr_cheat<m4sky_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sk_s____.3_1", 0x0000, 0x040000, CRC(749af008) SHA1(036514f2bcb84193cfa84313f0617f3196aea73e), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake / £8 token/£10/£15 jackpot)" )
+GAME_CUSTOM( 199?, m4sky, 0, bwboki_chr_cheat<m4sky_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sk_s____.3_1", 0x0000, 0x040000, CRC(749af008) SHA1(036514f2bcb84193cfa84313f0617f3196aea73e), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake / £8 token/£10/£15 jackpot)" )
// unusual 1.8 hopper error on sets below
-GAME_CUSTOM( 199?, m4sky__a, m4sky, bwboki_chr_cheat<m4sky_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "sk_sj___.5_0", 0x0000, 0x040000, CRC(45ae0423) SHA1(94d5b3d4aacb69a18ff3f45681eb5f7fba7657e8), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 1)" ) // % key
-GAME_CUSTOM( 199?, m4sky__b, m4sky, bwboki_chr_cheat<m4sky_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "sk_sj_k_.5_0", 0x0000, 0x040000, CRC(e1bab980) SHA1(1c8b127809422ab0baf1875ca907f18269a0cc17), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 2)" ) // % key
-GAME_CUSTOM( 199?, m4sky__c, m4sky, bwboki_chr_cheat<m4sky_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sk_sja__.5_0", 0x0000, 0x040000, CRC(b2a16ef7) SHA1(9012dcc320e8af8fef53e0dc91d3bcd6cbafa5ee), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 3)" )
-GAME_CUSTOM( 199?, m4sky__d, m4sky, bwboki_chr_cheat<m4sky_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sk_sjs__.5_0", 0x0000, 0x040000, CRC(d176431f) SHA1(8ca90ef61486fc5a5b6527f913cd05b42ceabe3e), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 4)" ) // Datapak
+GAME_CUSTOM( 199?, m4sky__a, m4sky, bwboki_chr_cheat<m4sky_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "sk_sj___.5_0", 0x0000, 0x040000, CRC(45ae0423) SHA1(94d5b3d4aacb69a18ff3f45681eb5f7fba7657e8), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 1)" ) // % key
+GAME_CUSTOM( 199?, m4sky__b, m4sky, bwboki_chr_cheat<m4sky_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "sk_sj_k_.5_0", 0x0000, 0x040000, CRC(e1bab980) SHA1(1c8b127809422ab0baf1875ca907f18269a0cc17), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 2)" ) // % key
+GAME_CUSTOM( 199?, m4sky__c, m4sky, bwboki_chr_cheat<m4sky_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sk_sja__.5_0", 0x0000, 0x040000, CRC(b2a16ef7) SHA1(9012dcc320e8af8fef53e0dc91d3bcd6cbafa5ee), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 3)" )
+GAME_CUSTOM( 199?, m4sky__d, m4sky, bwboki_chr_cheat<m4sky_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sk_sjs__.5_0", 0x0000, 0x040000, CRC(d176431f) SHA1(8ca90ef61486fc5a5b6527f913cd05b42ceabe3e), "BWB",u8"Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 4)" ) // Datapak
/*****************************************************************************************************************************************************************************
@@ -1423,7 +1430,7 @@ static const uint32_t m4souls_keys[2] = { 0x10, 0x3e2f0b };
ROM_LOAD( name, offset, length, hash ) \
M4SOULS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4souls_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4souls_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4souls, 0, "ss_06a__.4_1", 0x0000, 0x020000, CRC(00390a21) SHA1(d31d1307301fa4e8cf0ce3677e68a4c1723e4404), "BWB","Soul Sister (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4souls__a, m4souls, "ss_16a__.4_1", 0x0000, 0x020000, CRC(b9ab9612) SHA1(ad30916a0f2cc745741c99d23c23192ae4088daf), "BWB","Soul Sister (BWB) (MPU4) (set 2)" )
@@ -1454,7 +1461,7 @@ static const uint32_t m4spinbt_keys[2] = { 0x45, 0x250603 };
ROM_LOAD( name, offset, length, hash ) \
M4SPINBT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4spinbt_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4spinbt_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4spinbt, 0, "sn_37ad_.5_0", 0x0000, 0x040000, CRC(42d6faaa) SHA1(3789e85981b33ffae7c50ccca3278ae62974972d), "BWB","Spin The Bottle (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4spinbt__a, m4spinbt, "sn_37b__.5_0", 0x0000, 0x040000, CRC(3a259a6f) SHA1(1acabb9e725ae1374b87808c4b3d06a329c824d0), "BWB","Spin The Bottle (BWB) (MPU4) (set 2)" )
@@ -1487,18 +1494,18 @@ static const uint32_t m4starst_keys[2] = { 0x11, 0x3f0a26 };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4starst, 0, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "sr_20__d.3_0", 0x0000, 0x040000, CRC(98f6619b) SHA1(fc0a568e6695c9ad0fda7bc6703c752af26a7777), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4starst__a, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "sr_20_bd.3_0", 0x0000, 0x040000, CRC(ff8209de) SHA1(41a4c20c89b3a04612ad6298276472b888915c89), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4starst__b, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot8tkn_20p_90pc, init_m4default_big, "sr_20_kd.3_0", 0x0000, 0x040000, CRC(4c9a53d5) SHA1(43ebf6c06db58de9c3934e2dbba0d8126f3e2dda), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 3)" ) // % key
-GAME_CUSTOM( 199?, m4starst__c, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "sr_20a_d.3_0", 0x0000, 0x040000, CRC(e9eebb4c) SHA1(60d8010140d9debe8f12d7f810de223d9abd02a4), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 4)" )
-GAME_CUSTOM( 199?, m4starst__d, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot8tkn_20p, init_m4default_big, "sr_20s_d.3_0", 0x0000, 0x040000, CRC(725b50e6) SHA1(3efde346022e37b09df08b8188ac76dcdfac8a4e), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 5)" ) // Datapak
+GAME_CUSTOM( 199?, m4starst, 0, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "sr_20__d.3_0", 0x0000, 0x040000, CRC(98f6619b) SHA1(fc0a568e6695c9ad0fda7bc6703c752af26a7777), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4starst__a, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "sr_20_bd.3_0", 0x0000, 0x040000, CRC(ff8209de) SHA1(41a4c20c89b3a04612ad6298276472b888915c89), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4starst__b, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p_90pc, init_m4big, "sr_20_kd.3_0", 0x0000, 0x040000, CRC(4c9a53d5) SHA1(43ebf6c06db58de9c3934e2dbba0d8126f3e2dda), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 3)" ) // % key
+GAME_CUSTOM( 199?, m4starst__c, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "sr_20a_d.3_0", 0x0000, 0x040000, CRC(e9eebb4c) SHA1(60d8010140d9debe8f12d7f810de223d9abd02a4), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 4)" )
+GAME_CUSTOM( 199?, m4starst__d, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot8tkn_20p, init_m4big, "sr_20s_d.3_0", 0x0000, 0x040000, CRC(725b50e6) SHA1(3efde346022e37b09df08b8188ac76dcdfac8a4e), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 5)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4starst__e, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sr_sj___.5_0", 0x0000, 0x040000, CRC(7964bd86) SHA1(7078de5a61b52dedb776993643f7edd8a2c863c3), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4starst__f, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sr_sj_b_.5_0", 0x0000, 0x040000, CRC(4ee1f95b) SHA1(1e3d52afd19a9489608d5446ef2118561c6411b0), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4starst__g, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sr_sj_d_.5_0", 0x0000, 0x040000, CRC(b4d78711) SHA1(c864c944b3fa74aa1fed22afe656a37413b024ce), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 3)" ) // Datapak
-GAME_CUSTOM( 199?, m4starst__h, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "sr_sj_k_.5_0", 0x0000, 0x040000, CRC(c7681e28) SHA1(a8c1c75df33c85301257147c97d6af8808dad0d2), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 4)" ) // % key
-GAME_CUSTOM( 199?, m4starst__i, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sr_sja__.5_0", 0x0000, 0x040000, CRC(aa86c4f2) SHA1(e90fd91f1d14b89714e3fb8236ac9e8a641e4c71), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 5)" )
-GAME_CUSTOM( 199?, m4starst__j, m4starst, bwboki_chr_cheat<m4starst_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sr_sjs__.5_0", 0x0000, 0x040000, CRC(89e405e4) SHA1(5aa9053e08c27570731f65502c7fb31f0ea0a678), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 6)" ) // Datapak
+GAME_CUSTOM( 199?, m4starst__e, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sr_sj___.5_0", 0x0000, 0x040000, CRC(7964bd86) SHA1(7078de5a61b52dedb776993643f7edd8a2c863c3), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4starst__f, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sr_sj_b_.5_0", 0x0000, 0x040000, CRC(4ee1f95b) SHA1(1e3d52afd19a9489608d5446ef2118561c6411b0), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4starst__g, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sr_sj_d_.5_0", 0x0000, 0x040000, CRC(b4d78711) SHA1(c864c944b3fa74aa1fed22afe656a37413b024ce), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 3)" ) // Datapak
+GAME_CUSTOM( 199?, m4starst__h, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "sr_sj_k_.5_0", 0x0000, 0x040000, CRC(c7681e28) SHA1(a8c1c75df33c85301257147c97d6af8808dad0d2), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 4)" ) // % key
+GAME_CUSTOM( 199?, m4starst__i, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sr_sja__.5_0", 0x0000, 0x040000, CRC(aa86c4f2) SHA1(e90fd91f1d14b89714e3fb8236ac9e8a641e4c71), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 5)" )
+GAME_CUSTOM( 199?, m4starst__j, m4starst, bwboki_chr_cheat<m4starst_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sr_sjs__.5_0", 0x0000, 0x040000, CRC(89e405e4) SHA1(5aa9053e08c27570731f65502c7fb31f0ea0a678), "BWB",u8"Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 6)" ) // Datapak
/*****************************************************************************************************************************************************************************
@@ -1524,13 +1531,13 @@ static const uint32_t m4supleg_keys[2] = { 0x11, 0x310926 };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4supleg, 0, bwboki_chr_cheat<m4supleg_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sl_sj.hex", 0x0000, 0x040000, CRC(254835f7) SHA1(2fafaa3da747edd27d393ad106008e898e465283), "BWB",u8"Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4supleg__a, m4supleg, bwboki_chr_cheat<m4supleg_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sl_sjs.hex", 0x0000, 0x040000, CRC(98942cd3) SHA1(858fde0a350159d089c6a0e0cc2e2eed6ab2092c), "BWB",u8"Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4supleg, 0, bwboki_chr_cheat<m4supleg_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sl_sj.hex", 0x0000, 0x040000, CRC(254835f7) SHA1(2fafaa3da747edd27d393ad106008e898e465283), "BWB",u8"Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4supleg__a, m4supleg, bwboki_chr_cheat<m4supleg_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sl_sjs.hex", 0x0000, 0x040000, CRC(98942cd3) SHA1(858fde0a350159d089c6a0e0cc2e2eed6ab2092c), "BWB",u8"Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4supleg__b, m4supleg, bwboki_chr_cheat<m4supleg_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "sl_vc.hex", 0x0000, 0x040000, CRC(1940d117) SHA1(ae7338483ac39e9e1973dde5eb837443512630dd), "BWB",u8"Super League (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4supleg__c, m4supleg, bwboki_chr_cheat<m4supleg_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "sl_vcd.hex", 0x0000, 0x040000, CRC(7aab16d1) SHA1(6da4e0d9883a48937d00bfc5929b3557de51f60e), "BWB",u8"Super League (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4supleg__b, m4supleg, bwboki_chr_cheat<m4supleg_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "sl_vc.hex", 0x0000, 0x040000, CRC(1940d117) SHA1(ae7338483ac39e9e1973dde5eb837443512630dd), "BWB",u8"Super League (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4supleg__c, m4supleg, bwboki_chr_cheat<m4supleg_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "sl_vcd.hex", 0x0000, 0x040000, CRC(7aab16d1) SHA1(6da4e0d9883a48937d00bfc5929b3557de51f60e), "BWB",u8"Super League (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 2)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4supleg__d, m4supleg, bwboki_chr_cheat<m4supleg_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "sls.hex", 0x0000, 0x040000, CRC(5ad6dbb9) SHA1(ff6f9dcf14df22c7bb2b949fcd5c70f31d4c1928), "BWB",u8"Super League (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot)" )
+GAME_CUSTOM( 199?, m4supleg__d, m4supleg, bwboki_chr_cheat<m4supleg_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "sls.hex", 0x0000, 0x040000, CRC(5ad6dbb9) SHA1(ff6f9dcf14df22c7bb2b949fcd5c70f31d4c1928), "BWB",u8"Super League (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot)" )
#define M4SUPLEGW_EXTRA_ROMS \
ROM_REGION( 0x200000, "msm6376", 0 ) \
@@ -1547,7 +1554,7 @@ GAME_CUSTOM( 199?, m4supleg__d, m4supleg, bwboki_chr_cheat<m4supleg_keys>, mp
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4suplegw, m4supleg, bwboki_chr_cheat<m4supleg_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "s_leag._pound5", 0x0000, 0x040000, CRC(4c6bd78e) SHA1(f67793a2a16adacc8d92b57050f02cffa50a1283), "BWB",u8"Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3)" ) // maybe a Whitbread set, but not shown in attract
+GAME_CUSTOM( 199?, m4suplegw, m4supleg, bwboki_chr_cheat<m4supleg_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "s_leag._pound5", 0x0000, 0x040000, CRC(4c6bd78e) SHA1(f67793a2a16adacc8d92b57050f02cffa50a1283), "BWB",u8"Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3)" ) // maybe a Whitbread set, but not shown in attract
/*****************************************************************************************************************************************************************************
@@ -1570,7 +1577,7 @@ static const uint32_t m4supscr_keys[2] = { 0x11, 0x101231 };
ROM_LOAD( name, offset, length, hash ) \
M4SUPSCR_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4supscr_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4supscr_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4supscr, 0, "sm_78___.6_0", 0x0000, 0x040000, CRC(e7022c44) SHA1(da3a5b9954f7e50dce73aeb9c46bd4631c8350d5), "BWB","Super Soccer (ver. 6) (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4supscr__a, m4supscr, "sm_78_d_.6_0", 0x0000, 0x040000, CRC(4dbe6a87) SHA1(fe2ce1fca7105afbf459ee6558744f8fee417169), "BWB","Super Soccer (ver. 6) (BWB) (MPU4) (set 2)" )
@@ -1609,7 +1616,7 @@ static const uint32_t m4sure_keys[2] = {0x10, 0x281215};
ROM_LOAD( name, offset, length, hash ) \
M4SURE_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4sure_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4sure_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4sure, 0, "su_xf___.3_1", 0x0000, 0x010000, CRC(f85dae5c) SHA1(4c761c355fb6651f1e0cb041342f8a2ff510dfd2), "BWB","Sure Thing (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4sure__a, m4sure, "su_xf_b_.3_1", 0x0000, 0x010000, CRC(9a760e0f) SHA1(fdacdae0e2322daa004b2385616dd34626814d42), "BWB","Sure Thing (BWB) (MPU4) (set 2)" )
@@ -1638,7 +1645,7 @@ static const uint32_t m4trex_keys[2] = {0x10, 0x112231};
ROM_LOAD( name, offset, length, hash ) \
M4TREX_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4trex_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4trex_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4trex, 0, "tr_20a__.2_1", 0x0000, 0x010000, CRC(21150b8e) SHA1(1531bc6fdb8b787fed6f4f98c6463313c55efc3c), "BWB","T-Rex (BWB) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4trex__a, m4trex, "tr_20a_p.2_1", 0x0000, 0x010000, CRC(ec1b35bc) SHA1(944959c6d1f8e9b0bb33c659b7c515cb7585fed0), "BWB","T-Rex (BWB) (MPU4) (set 2)" )
@@ -1674,7 +1681,7 @@ static const uint32_t m4tutbwb_keys[2] = { 0x01, 0x163428 };
ROM_LOAD( name, offset, length, hash ) \
M4TUTBWB_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4tutbwb_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4tutbwb_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4 ,ROT0,company,title,GAME_FLAGS )
// these were in with the regular Barcrest / Bwb Tutti Fruity sets, but this looks like something different, maybe a Bwn original with the same name?
// it has a 0x3f fill near the vectors etc. which is typically associated with Bwb originals.
@@ -1715,15 +1722,15 @@ static const uint32_t m4volcan_keys[2] = { 0x11, 0x3f0d26 };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4volcan, 0, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vo_sj___.5_0", 0x0000, 0x040000, CRC(78096ebf) SHA1(96915bc2eca00fbd82fab8b3f62e697da118acdd), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4volcan__a, m4volcan, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vo_sj_d_.5_0", 0x0000, 0x040000, CRC(87e0347d) SHA1(be5d5b90739fa8ac10f6504290aa58fcf147f323), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4volcan__b, m4volcan, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot15_20p_90pc, init_m4default_big, "vo_sj_k_.5_0", 0x0000, 0x040000, CRC(8604d102) SHA1(34c7df0257ba02ace4a74ffd5b0eed11eea0c333), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 3)" ) // % key
-GAME_CUSTOM( 199?, m4volcan__c, m4volcan, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vo_sja__.5_0", 0x0000, 0x040000, CRC(d73bade2) SHA1(7e02493ec0710f109ae45e523ef3d7d275aaefab), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 4)" )
-GAME_CUSTOM( 199?, m4volcan__d, m4volcan, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vo_sjs__.5_0", 0x0000, 0x040000, CRC(51eff796) SHA1(d0efb1eb4be176906726a438fcffb50cf5ddd217), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 5)" ) // Datapak
+GAME_CUSTOM( 199?, m4volcan, 0, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vo_sj___.5_0", 0x0000, 0x040000, CRC(78096ebf) SHA1(96915bc2eca00fbd82fab8b3f62e697da118acdd), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4volcan__a, m4volcan, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vo_sj_d_.5_0", 0x0000, 0x040000, CRC(87e0347d) SHA1(be5d5b90739fa8ac10f6504290aa58fcf147f323), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4volcan__b, m4volcan, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot15_20p_90pc, init_m4big, "vo_sj_k_.5_0", 0x0000, 0x040000, CRC(8604d102) SHA1(34c7df0257ba02ace4a74ffd5b0eed11eea0c333), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 3)" ) // % key
+GAME_CUSTOM( 199?, m4volcan__c, m4volcan, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vo_sja__.5_0", 0x0000, 0x040000, CRC(d73bade2) SHA1(7e02493ec0710f109ae45e523ef3d7d275aaefab), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 4)" )
+GAME_CUSTOM( 199?, m4volcan__d, m4volcan, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vo_sjs__.5_0", 0x0000, 0x040000, CRC(51eff796) SHA1(d0efb1eb4be176906726a438fcffb50cf5ddd217), "BWB",u8"Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 5)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4volcan__e, m4volcan, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "vo_vc___.2_0", 0x0000, 0x040000, CRC(24a9e5d6) SHA1(dd4223c3b5c024eb9d56bb45426e327b49f78dde), "BWB",u8"Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4volcan__f, m4volcan, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "vo_vc_d_.2_0", 0x0000, 0x040000, CRC(7f7341b6) SHA1(23d46ca0eed1e942b2a0d33d6ada2434ded5819b), "BWB",u8"Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4volcan__g, m4volcan, bwboki_chr_cheat<m4volcan_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "volcano_bwb_2-0.bin", 0x0000, 0x040000, CRC(20688684) SHA1(fe533341417a3a0b16f485351cb635f4e7d823db), "BWB",u8"Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 3)" )
+GAME_CUSTOM( 199?, m4volcan__e, m4volcan, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "vo_vc___.2_0", 0x0000, 0x040000, CRC(24a9e5d6) SHA1(dd4223c3b5c024eb9d56bb45426e327b49f78dde), "BWB",u8"Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4volcan__f, m4volcan, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "vo_vc_d_.2_0", 0x0000, 0x040000, CRC(7f7341b6) SHA1(23d46ca0eed1e942b2a0d33d6ada2434ded5819b), "BWB",u8"Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4volcan__g, m4volcan, bwboki_chr_cheat<m4volcan_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "volcano_bwb_2-0.bin", 0x0000, 0x040000, CRC(20688684) SHA1(fe533341417a3a0b16f485351cb635f4e7d823db), "BWB",u8"Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 3)" )
/*****************************************************************************************************************************************************************************
@@ -1750,12 +1757,12 @@ static const uint32_t m4vdexpr_keys[2] = { 0x11, 0x3f0d27 };
ROM_END \
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
-GAME_CUSTOM( 199?, m4vdexpr, 0, bwboki_chr_cheat<m4vdexpr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vd_sj___.2_0", 0x0000, 0x040000, CRC(03efd2a5) SHA1(4fc3695c24335aef11ba168f660fb519d8c9d473), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4vdexpr__a, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vd_sj_d_.2_0", 0x0000, 0x040000, CRC(5073b98e) SHA1(66b020b8c096e78e1c9694f1cbc139e97314ab48), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4vdexpr__b, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vd_sja__.2_0", 0x0000, 0x040000, CRC(c53dbf48) SHA1(ceee2de3ea8cb511540d90b87bc67bec3309de35), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 3)" )
-GAME_CUSTOM( 199?, m4vdexpr__c, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "vd_sjs__.2_0", 0x0000, 0x040000, CRC(036157b3) SHA1(b575751006c3ee59bf0404fa0e177fee9ef9c5db), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 4)" ) // Datapak
+GAME_CUSTOM( 199?, m4vdexpr, 0, bwboki_chr_cheat<m4vdexpr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vd_sj___.2_0", 0x0000, 0x040000, CRC(03efd2a5) SHA1(4fc3695c24335aef11ba168f660fb519d8c9d473), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4vdexpr__a, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vd_sj_d_.2_0", 0x0000, 0x040000, CRC(5073b98e) SHA1(66b020b8c096e78e1c9694f1cbc139e97314ab48), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4vdexpr__b, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vd_sja__.2_0", 0x0000, 0x040000, CRC(c53dbf48) SHA1(ceee2de3ea8cb511540d90b87bc67bec3309de35), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 3)" )
+GAME_CUSTOM( 199?, m4vdexpr__c, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "vd_sjs__.2_0", 0x0000, 0x040000, CRC(036157b3) SHA1(b575751006c3ee59bf0404fa0e177fee9ef9c5db), "BWB","Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 4)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4vdexpr__d, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>, mpu4impcoin_jackpot5_5p, init_m4default_big, "vd_vc___.1_0", 0x0000, 0x040000, CRC(6326e14a) SHA1(3dbfbb1cfb60dc10c6972aa2fda89c8e3c3107ea), "BWB","Voodoo Express (BWB) (MPU4) (5/10p stake / £5/£8 jackpot)" )
+GAME_CUSTOM( 199?, m4vdexpr__d, m4vdexpr, bwboki_chr_cheat<m4vdexpr_keys>(R5, RT3), mpu4impcoin_jackpot5_5p, init_m4big, "vd_vc___.1_0", 0x0000, 0x040000, CRC(6326e14a) SHA1(3dbfbb1cfb60dc10c6972aa2fda89c8e3c3107ea), "BWB","Voodoo Express (BWB) (MPU4) (5/10p stake / £5/£8 jackpot)" )
/*****************************************************************************************************************************************************************************
@@ -1780,24 +1787,24 @@ static const uint32_t m4xch_keys[2] = { 0x42, 0x3f0c26 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
// these don't require stake/jp to be set
-GAME_CUSTOM( 199?, m4xch, 0, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_25b__.b_0", 0x0000, 0x020000, CRC(cec9e836) SHA1(460ec38566d7608e51b62f1ffebc18a395002ed4), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £10 jackpot)" )
+GAME_CUSTOM( 199?, m4xch, 0, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_25b__.b_0", 0x0000, 0x020000, CRC(cec9e836) SHA1(460ec38566d7608e51b62f1ffebc18a395002ed4), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £10 jackpot)" )
//
-GAME_CUSTOM( 199?, m4xch__a, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_36bg_.bv0", 0x0000, 0x020000, CRC(c5d1523a) SHA1(813916008d7e7576e4594a6eb79a76c514470f31), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £8 jackpot) (set 1)" ) // Datapak
-GAME_CUSTOM( 199?, m4xch__b, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_36bgn.bv0", 0x0000, 0x020000, CRC(4be33ee1) SHA1(888009e09c59f30649eac3238e0b70dec258cb3c), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £8 jackpot) (set 2)" )
+GAME_CUSTOM( 199?, m4xch__a, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_36bg_.bv0", 0x0000, 0x020000, CRC(c5d1523a) SHA1(813916008d7e7576e4594a6eb79a76c514470f31), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £8 jackpot) (set 1)" ) // Datapak
+GAME_CUSTOM( 199?, m4xch__b, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_36bgn.bv0", 0x0000, 0x020000, CRC(4be33ee1) SHA1(888009e09c59f30649eac3238e0b70dec258cb3c), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £8 jackpot) (set 2)" )
//
-GAME_CUSTOM( 199?, m4xch__c, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_39b__.b_0", 0x0000, 0x020000, CRC(e5d5961d) SHA1(ac3916cba91a13d1e0820982a1cefabd378647c9), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4xch__d, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_39bg_.b_0", 0x0000, 0x020000, CRC(49b2be01) SHA1(dbf808d0949a9658d23e57e7eaaa520891a4f0e0), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4xch__e, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_39bm_.b_0", 0x0000, 0x020000, CRC(29c86cf0) SHA1(384a475d34ad5d15b68d019c3771aba471f89b4d), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 3)" )
+GAME_CUSTOM( 199?, m4xch__c, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_39b__.b_0", 0x0000, 0x020000, CRC(e5d5961d) SHA1(ac3916cba91a13d1e0820982a1cefabd378647c9), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4xch__d, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_39bg_.b_0", 0x0000, 0x020000, CRC(49b2be01) SHA1(dbf808d0949a9658d23e57e7eaaa520891a4f0e0), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4xch__e, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_39bm_.b_0", 0x0000, 0x020000, CRC(29c86cf0) SHA1(384a475d34ad5d15b68d019c3771aba471f89b4d), "BWB",u8"X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 3)" )
//
-GAME_CUSTOM( 199?, m4xch__f, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_49bd_.b_0", 0x0000, 0x020000, CRC(02854189) SHA1(beab97ccd9889cfdb24e1fb6fb373bf9fd114eab), "BWB",u8"X-change (BWB) (MPU4) (30p stake / £15 jackpot) (set 1)" ) // Datapak
-GAME_CUSTOM( 199?, m4xch__g, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default_big, "ec_49bmd.b_0", 0x0000, 0x020000, CRC(2a5578e3) SHA1(d8f100bc83721b6b0f365be7a962249af79d6162), "BWB",u8"X-change (BWB) (MPU4) (30p stake / £15 jackpot) (set 2)" )
+GAME_CUSTOM( 199?, m4xch__f, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_49bd_.b_0", 0x0000, 0x020000, CRC(02854189) SHA1(beab97ccd9889cfdb24e1fb6fb373bf9fd114eab), "BWB",u8"X-change (BWB) (MPU4) (30p stake / £15 jackpot) (set 1)" ) // Datapak
+GAME_CUSTOM( 199?, m4xch__g, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4big, "ec_49bmd.b_0", 0x0000, 0x020000, CRC(2a5578e3) SHA1(d8f100bc83721b6b0f365be7a962249af79d6162), "BWB",u8"X-change (BWB) (MPU4) (30p stake / £15 jackpot) (set 2)" )
//
-GAME_CUSTOM( 199?, m4xch__h, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ec_s9bt_.b_0", 0x0000, 0x020000, CRC(7e0a27d1) SHA1(d4a23a6c358e38a1a66a06b82af85c844f684830), "BWB",u8"X-change (BWB) (MPU4) (20/25/30p stake / £15 jackpot)" )
+GAME_CUSTOM( 199?, m4xch__h, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ec_s9bt_.b_0", 0x0000, 0x020000, CRC(7e0a27d1) SHA1(d4a23a6c358e38a1a66a06b82af85c844f684830), "BWB",u8"X-change (BWB) (MPU4) (20/25/30p stake / £15 jackpot)" )
//
-GAME_CUSTOM( 199?, m4xch__i, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ec_sja__.a_0", 0x0000, 0x020000, CRC(1f923f89) SHA1(84486287d55591c7e81c59a10e8cc722ec21e8f9), "BWB",u8"X-change (BWB) (MPU4) (10/20/25/30p stake / £5/£8/£10 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" ) // 10p stake not valid with £15 jackpot
-GAME_CUSTOM( 199?, m4xch__j, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big, "ec_sja__.b_0", 0x0000, 0x020000, CRC(16d7b8bb) SHA1(be8ab98a64aa976e25cb302b68323c6781034f2b), "BWB",u8"X-change (BWB) (MPU4) (10/20/25/30p stake / £5/£8/£10 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" )
+GAME_CUSTOM( 199?, m4xch__i, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ec_sja__.a_0", 0x0000, 0x020000, CRC(1f923f89) SHA1(84486287d55591c7e81c59a10e8cc722ec21e8f9), "BWB",u8"X-change (BWB) (MPU4) (10/20/25/30p stake / £5/£8/£10 jackpot, 20/25/30p stake / £15 jackpot) (set 1)" ) // 10p stake not valid with £15 jackpot
+GAME_CUSTOM( 199?, m4xch__j, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big, "ec_sja__.b_0", 0x0000, 0x020000, CRC(16d7b8bb) SHA1(be8ab98a64aa976e25cb302b68323c6781034f2b), "BWB",u8"X-change (BWB) (MPU4) (10/20/25/30p stake / £5/£8/£10 jackpot, 20/25/30p stake / £15 jackpot) (set 2)" )
// probably just a bad dump (half size) very close to the first half of ec_sja__.a_0
-GAME_CUSTOM( 199?, m4xch__k, m4xch, bwboki_chr_cheat<m4xch_keys>, mpu4_impcoin, init_m4default, "xchange.bin", 0x0000, 0x010000, CRC(c96cd014) SHA1(6e32d10c18b6b34dbcb21e75925a77e810ffe892), "BWB",u8"X-change (BWB) (MPU4) (unknown set, bad?)" )
+GAME_CUSTOM( 199?, m4xch__k, m4xch, bwboki_chr_cheat<m4xch_keys>(R5, RT3), mpu4_impcoin, init_m4, "xchange.bin", 0x0000, 0x010000, CRC(c96cd014) SHA1(6e32d10c18b6b34dbcb21e75925a77e810ffe892), "BWB",u8"X-change (BWB) (MPU4) (unknown set, bad?)" )
/*****************************************************************************************************************************************************************************
@@ -1822,15 +1829,15 @@ static const uint32_t m4xs_keys[2] = { 0x34, 0x3f0e26 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
// these sets don't require stake/jp set
-GAME_CUSTOM( 199?, m4xs, 0, bwboki_chr_cheat<m4xs_keys>, mpu4_impcoin, init_m4default_big , "es_39b__.3_0", 0x0000, 0x020000, CRC(ba478372) SHA1(c13f9cc4261e91119aa694ec3ac81d94d9f32d22), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 1)" )
-GAME_CUSTOM( 199?, m4xs__a, m4xs, bwboki_chr_cheat<m4xs_keys>, mpu4_impcoin, init_m4default_big , "es_39bg_.3_0", 0x0000, 0x020000, CRC(b689f14f) SHA1(0c3253e1f747a979f55d53fe637fc61cf50e01a3), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 2)" ) // Datapak
-GAME_CUSTOM( 199?, m4xs__b, m4xs, bwboki_chr_cheat<m4xs_keys>, mpu4_impcoin, init_m4default_big , "es_39bm_.3_0", 0x0000, 0x020000, CRC(934f5d1e) SHA1(1ffd462d561d4a16f2392cc90a139499b74a234a), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 3)" )
-GAME_CUSTOM( 199?, m4xs__c, m4xs, bwboki_chr_cheat<m4xs_keys>, mpu4_impcoin, init_m4default_big , "es_39bmd.3_0", 0x0000, 0x020000, CRC(cf663dcc) SHA1(620e65528687eb5fd6fd879e305e8b7da9b95253), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 4)" ) // Datapak
+GAME_CUSTOM( 199?, m4xs, 0, bwboki_chr_cheat<m4xs_keys>(R5, RT3), mpu4_impcoin, init_m4big , "es_39b__.3_0", 0x0000, 0x020000, CRC(ba478372) SHA1(c13f9cc4261e91119aa694ec3ac81d94d9f32d22), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 1)" )
+GAME_CUSTOM( 199?, m4xs__a, m4xs, bwboki_chr_cheat<m4xs_keys>(R5, RT3), mpu4_impcoin, init_m4big , "es_39bg_.3_0", 0x0000, 0x020000, CRC(b689f14f) SHA1(0c3253e1f747a979f55d53fe637fc61cf50e01a3), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4xs__b, m4xs, bwboki_chr_cheat<m4xs_keys>(R5, RT3), mpu4_impcoin, init_m4big , "es_39bm_.3_0", 0x0000, 0x020000, CRC(934f5d1e) SHA1(1ffd462d561d4a16f2392cc90a139499b74a234a), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 3)" )
+GAME_CUSTOM( 199?, m4xs__c, m4xs, bwboki_chr_cheat<m4xs_keys>(R5, RT3), mpu4_impcoin, init_m4big , "es_39bmd.3_0", 0x0000, 0x020000, CRC(cf663dcc) SHA1(620e65528687eb5fd6fd879e305e8b7da9b95253), "BWB",u8"X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 4)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4xs__d, m4xs, bwboki_chr_cheat<m4xs_keys>, mpu4_impcoin, init_m4default_big , "es_49bg_.3_0", 0x0000, 0x020000, CRC(b76f1d7d) SHA1(9b43a9e847db3d4024f978b6f996534b8d52368b), "BWB",u8"X-s (BWB) (MPU4) (30p stake / £15 jackpot) (set 1)" ) // Datapak
-GAME_CUSTOM( 199?, m4xs__e, m4xs, bwboki_chr_cheat<m4xs_keys>, mpu4_impcoin, init_m4default_big , "es_49bmd.3_0", 0x0000, 0x020000, CRC(1150e499) SHA1(25d2c37e5287f73d2b11608c50f21072422850f0), "BWB",u8"X-s (BWB) (MPU4) (30p stake / £15 jackpot) (set 2)" ) // Datapak
+GAME_CUSTOM( 199?, m4xs__d, m4xs, bwboki_chr_cheat<m4xs_keys>(R5, RT3), mpu4_impcoin, init_m4big , "es_49bg_.3_0", 0x0000, 0x020000, CRC(b76f1d7d) SHA1(9b43a9e847db3d4024f978b6f996534b8d52368b), "BWB",u8"X-s (BWB) (MPU4) (30p stake / £15 jackpot) (set 1)" ) // Datapak
+GAME_CUSTOM( 199?, m4xs__e, m4xs, bwboki_chr_cheat<m4xs_keys>(R5, RT3), mpu4_impcoin, init_m4big , "es_49bmd.3_0", 0x0000, 0x020000, CRC(1150e499) SHA1(25d2c37e5287f73d2b11608c50f21072422850f0), "BWB",u8"X-s (BWB) (MPU4) (30p stake / £15 jackpot) (set 2)" ) // Datapak
// requires stake/jp
-GAME_CUSTOM( 199?, m4xs__f, m4xs, bwboki_chr_cheat<m4xs_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big , "es_sja__.3_0", 0x0000, 0x020000, CRC(5909092d) SHA1(64df6ad5ba5ac74592b525af2f4cab8a092a5766), "BWB",u8"X-s (BWB) (MPU4) (20/25/30p stake / £15 jackpot)" )
+GAME_CUSTOM( 199?, m4xs__f, m4xs, bwboki_chr_cheat<m4xs_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big , "es_sja__.3_0", 0x0000, 0x020000, CRC(5909092d) SHA1(64df6ad5ba5ac74592b525af2f4cab8a092a5766), "BWB",u8"X-s (BWB) (MPU4) (20/25/30p stake / £15 jackpot)" )
/*****************************************************************************************************************************************************************************
@@ -1855,11 +1862,11 @@ static const uint32_t m4xtrm_keys[2] = { 0x36, 0x301210 };
GAME( year, setname, parent, machine, inputs, mpu4bwb_machines_state, init, ROT0, company, title, GAME_FLAGS )
// state/jp needed
-GAME_CUSTOM( 199?, m4xtrm, 0, bwboki_chr_cheat<m4xtrm_keys>, mpu4impcoin_jackpot15_20p, init_m4default_big , "et_sja__.2_0", 0x0000, 0x020000, CRC(8ee2602b) SHA1(b9a779b900ac71ec842dd7eb1643f7a2f1cb6a38), "BWB",u8"X-treme (BWB) (MPU4) (20/25/30p stake / £8/£15 jackpot)" )
+GAME_CUSTOM( 199?, m4xtrm, 0, bwboki_chr_cheat<m4xtrm_keys>(R5, RT3), mpu4impcoin_jackpot15_20p, init_m4big , "et_sja__.2_0", 0x0000, 0x020000, CRC(8ee2602b) SHA1(b9a779b900ac71ec842dd7eb1643f7a2f1cb6a38), "BWB",u8"X-treme (BWB) (MPU4) (20/25/30p stake / £8/£15 jackpot)" )
// no stake/jp needed on sets below
-GAME_CUSTOM( 199?, m4xtrm__a, m4xtrm, bwboki_chr_cheat<m4xtrm_keys>, mpu4_impcoin, init_m4default_big , "et_49bg_.2_0", 0x0000, 0x020000, CRC(f858d927) SHA1(e7ab84c8898a95075a41fb0249e4b103d60e7d85), "BWB",u8"X-treme (BWB) (MPU4) (30p stake / £15 jackpot)" ) // Datapak
+GAME_CUSTOM( 199?, m4xtrm__a, m4xtrm, bwboki_chr_cheat<m4xtrm_keys>(R5, RT3), mpu4_impcoin, init_m4big , "et_49bg_.2_0", 0x0000, 0x020000, CRC(f858d927) SHA1(e7ab84c8898a95075a41fb0249e4b103d60e7d85), "BWB",u8"X-treme (BWB) (MPU4) (30p stake / £15 jackpot)" ) // Datapak
//
-GAME_CUSTOM( 199?, m4xtrm__b, m4xtrm, bwboki_chr_cheat<m4xtrm_keys>, mpu4_impcoin, init_m4default_big , "et_39bg_.2_0", 0x0000, 0x020000, CRC(db1a3c3c) SHA1(081c934ebfc0a9dfa195bb20f51e025e53d9c4b9), "BWB",u8"X-treme (BWB) (MPU4) (25p stake / £15 jackpot)" ) // Datapak
+GAME_CUSTOM( 199?, m4xtrm__b, m4xtrm, bwboki_chr_cheat<m4xtrm_keys>(R5, RT3), mpu4_impcoin, init_m4big , "et_39bg_.2_0", 0x0000, 0x020000, CRC(db1a3c3c) SHA1(081c934ebfc0a9dfa195bb20f51e025e53d9c4b9), "BWB",u8"X-treme (BWB) (MPU4) (25p stake / £15 jackpot)" ) // Datapak
/*****************************************************************************************************************************************************************************
@@ -1894,7 +1901,7 @@ static const uint32_t m4bluesn_keys[2] = { 0x23, 0x1b0b36 };
ROM_LOAD( name, offset, length, hash ) \
M4BLUESN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4bluesn_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4bluesn_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4bluesn, m4blsbys, "bluesboys.bin", 0x0000, 0x020000, CRC(c1395649) SHA1(3cd0eed1f966f5391fe5de496dc747385ebfb556), "BWB","Blues Boys (Nova) (MPU4)" )
@@ -1919,7 +1926,7 @@ static const uint32_t m4cfinln_keys[2] = { 0x10, 0x213623 };
ROM_LOAD( name, offset, length, hash ) \
M4CFINLN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4cfinln_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4cfinln_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4cfinln, m4cpfinl, "cfd_7_1.bin", 0x0000, 0x020000, CRC(e42ec2aa) SHA1(6495448c1d11ce0ab9ad794bc3a0981432e22945), "BWB","Cup Final (Nova) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4cfinln__a, m4cpfinl, "cfd_d0.bin", 0x0000, 0x020000, CRC(179fcf13) SHA1(abd18ed28118ba0a62ab321a9d963105946d5eef), "BWB","Cup Final (Nova) (MPU4) (set 2)" )
@@ -1945,7 +1952,7 @@ static const uint32_t m4wcnov_keys[2] = { 0x19, 0x0f2029 };
ROM_LOAD( name, offset, length, hash ) \
M4WCNOV_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4wcnov_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4wcnov_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4wcnov, 0, "wcdsxh__.5_0", 0x0000, 0x080000, CRC(a82d11de) SHA1(ece14fd5f56da8cc788c53d5c1404275e9000b65), "BWB","World Cup (Nova) (MPU4)" )
@@ -1970,7 +1977,7 @@ static const uint32_t m4excaln_keys[2] = { 0x10, 0x010e20 };
ROM_LOAD( name, offset, length, hash ) \
M4EXCALN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4excaln_keys>, mpu4_impcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4excaln_keys>(R5, RT3), mpu4_impcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4excaln, m4excal, "exdsx___.6_0", 0x0000, 0x080000, CRC(fcdc703c) SHA1(927870723106aebbb2b492ce9bfebe4aa25d0325), "BWB","Excalibur (Nova) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4excaln__a,m4excal, "exdsx_e_.6_0", 0x0000, 0x080000, CRC(f6421feb) SHA1(5b3cf7fa4bf9711097ed1c9d2d5689329d73193d), "BWB","Excalibur (Nova) (MPU4) (set 2)" )
@@ -1996,7 +2003,7 @@ static const uint32_t m4olygn_keys[2] = { 0x19, 0x0f2029};
ROM_LOAD( name, offset, length, hash ) \
M4OLYGN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4olygn_keys>, mpu4_invimpcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4olygn_keys>(R5, RT3), mpu4_invimpcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4olygn, 0, "ogdsx___.8_0", 0x0000, 0x040000, CRC(b51a2538) SHA1(d54f37dc14c44ab66e6d6ba6e2df8bc9ed003054), "BWB","Olympic Gold (German) (Nova) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4olygn__a, m4olygn, "ogdsxe__.8_0", 0x0000, 0x040000, CRC(13aa70aa) SHA1(3878c181ec07e24060935bec96e5128e6e4baf31), "BWB","Olympic Gold (German) (Nova) (MPU4) (set 2)" )
@@ -2022,7 +2029,7 @@ static const uint32_t m4ftladn_keys[2] = { 0x05, 0x200f03 };
ROM_LOAD( name, offset, length, hash ) \
M4FTLADN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4ftladn_keys>, mpu4_invimpcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4ftladn_keys>(R5, RT3), mpu4_invimpcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4ftladn, 0, "fidse___.5_0", 0x00000, 0x20000, CRC(62347bbf) SHA1(2b1cd5adda831a8c74c9484ee1b616259d3e3981), "BWB","Find the Lady (Nova) (MPU4)" )
@@ -2050,7 +2057,7 @@ static const uint32_t m4sinbdn__b_keys[2] = { 0x10, 0x3e2f0b };
ROM_LOAD( name, offset, length, hash ) \
M4SINBDN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4sinbdn_keys>, mpu4_invimpcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4sinbdn_keys>(R5, RT3), mpu4_invimpcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4sinbdn, 0, "sbds3___.a_1", 0x0000, 0x020000, CRC(9bff0e40) SHA1(f8a1263a58f828554e9df77ed0db78e627666fb5), "BWB","Sinbad (Nova) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4sinbdn__e, m4sinbdn, "sbds3__l.9_0", 0x0000, 0x040000, CRC(e425375a) SHA1(d2bdd8e768fc7764054eff574360f3cfb5f4f66d), "BWB","Sinbad (Nova) (MPU4) (set 6)" )
@@ -2062,7 +2069,7 @@ GAME_CUSTOM( 199?, m4sinbdn__e, m4sinbdn, "sbds3__l.9_0", 0x0000, 0x040000,
ROM_LOAD( name, offset, length, hash ) \
M4SINBDN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4sinbdn__a_keys>, mpu4_invimpcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4sinbdn__a_keys>(R5, RT3), mpu4_invimpcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4sinbdn__a, m4sinbdn, "sbds3___.7w1", 0x0000, 0x020000, CRC(23bc9ce0) SHA1(f750de2b781bc902c65de7109e10a5fc2d4e1c61), "BWB","Sinbad (Nova) (MPU4) (set 2)" )
GAME_CUSTOM( 199?, m4sinbdn__f, m4sinbdn, "sbds3__l.aw0", 0x0000, 0x040000, CRC(c484ef9d) SHA1(62f6644b83dd6abaf80809217edf6a8230a89268), "BWB","Sinbad (Nova) (MPU4) (set 7)" )
@@ -2074,7 +2081,7 @@ GAME_CUSTOM( 199?, m4sinbdn__f, m4sinbdn, "sbds3__l.aw0", 0x0000, 0x040000,
ROM_LOAD( name, offset, length, hash ) \
M4SINBDN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, bwboki_chr_cheat<m4sinbdn__b_keys>, mpu4_invimpcoin, mpu4bwb_machines_state, init_m4default_big ,ROT0,company,title,GAME_FLAGS )
+ GAME(year, setname, parent, bwboki_chr_cheat<m4sinbdn__b_keys>(R5, RT3), mpu4_invimpcoin, mpu4bwb_machines_state, init_m4big ,ROT0,company,title,GAME_FLAGS )
GAME_CUSTOM( 199?, m4sinbdn__b, m4sinbdn, "sxdsx___.2_0", 0x0000, 0x040000, CRC(4e1f98b5) SHA1(3e16e7a0cdccc9eb1a1bb6f9a0332c4582483eee), "BWB","Sinbad (Nova) (MPU4) (set 3)" )
GAME_CUSTOM( 199?, m4sinbdn__c, m4sinbdn, "sdd__.3_0", 0x0000, 0x040000, CRC(100098c1) SHA1(b125855c49325972f620463e32fdf124222e27d2), "BWB","Sinbad (Nova) (MPU4) (set 4)" )
diff --git a/src/mame/barcrest/mpu4concept.cpp b/src/mame/barcrest/mpu4concept.cpp
index ed596afb670..df98daa2170 100644
--- a/src/mame/barcrest/mpu4concept.cpp
+++ b/src/mame/barcrest/mpu4concept.cpp
@@ -19,6 +19,8 @@ public:
} // anonymous namespace
+using namespace mpu4_traits;
+
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
#define M4RHFEVC_EXTRA_ROMS \
@@ -32,7 +34,7 @@ public:
ROM_LOAD( name, offset, length, hash ) \
M4RHFEVC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4concept_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4concept_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4rhfevc, 0, "rhb6a58e.bin", 0x0000, 0x010000, CRC(c5a1ec02) SHA1(3a4dc552fffc34673e590e903a5c15a409f9aeec), "Concept Games Ltd","Red Hot Fever (Concept Games Ltd) (MPU4) (set 1)" )
@@ -75,7 +77,7 @@ GAME_CUSTOM( 199?, m4rhfevc__y, m4rhfevc, "lxled1.bin", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4PULWNC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4concept_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4concept_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
@@ -125,7 +127,7 @@ GAME_CUSTOM( 199?, m4pulwnc__4, m4pulwnc, "tchm02.bin", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4SPNWNC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4concept_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4concept_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4spnwnc, 0, "saw01.bin", 0x0000, 0x010000, CRC(5350e50e) SHA1(0d7ba3280eddb4400545729c55bcfaff7918d553), "Concept Games Ltd","Spin-A-Win (Concept Games Ltd) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4spnwnc__a, m4spnwnc, "saw02.bin", 0x0000, 0x010000, CRC(daf85100) SHA1(ff89adb0d6530bcf5ff0807f48c6008198948d50), "Concept Games Ltd","Spin-A-Win (Concept Games Ltd) (MPU4) (set 2)" )
@@ -142,7 +144,7 @@ GAME_CUSTOM( 199?, m4spnwnc__b, m4spnwnc, "saw03.bin", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4NUDGWC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4concept_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4concept_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4nudgwc, 0, "naw02.bin", 0x0000, 0x010000, CRC(eb3ff27d) SHA1(ff0a80a75162380c6cc2d1b31f0bb0579faa1a2c), "Concept Games Ltd","Nudge-A-Win (Concept Games Ltd) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4nudgwc__a, m4nudgwc, "nawhc6.bin", 0x0000, 0x010000, CRC(f9389823) SHA1(e1db35200c9ed9d59cf817901cf75bdbb48507b2), "Concept Games Ltd","Nudge-A-Win (Concept Games Ltd) (MPU4) (set 2)" )
diff --git a/src/mame/barcrest/mpu4crystal.cpp b/src/mame/barcrest/mpu4crystal.cpp
index f6cc52b3389..e27dcc40153 100644
--- a/src/mame/barcrest/mpu4crystal.cpp
+++ b/src/mame/barcrest/mpu4crystal.cpp
@@ -7,6 +7,8 @@
#include "emu.h"
#include "mpu4.h"
+#include "sound/upd7759.h"
+
namespace {
class mpu4crystal_machines_state : public mpu4_state
@@ -22,7 +24,13 @@ public:
void init_crystal();
void init_m_frkstn();
- void mpu4crys(machine_config &config);
+ void crystal_f(machine_config &config);
+
+ template<typename... T>
+ auto crystal(T... traits)
+ {
+ return trait_wrapper(this, &mpu4crystal_machines_state::crystal_f, traits...);
+ }
private:
DECLARE_MACHINE_START(mpu4cry);
@@ -36,12 +44,11 @@ MACHINE_START_MEMBER(mpu4crystal_machines_state,mpu4cry)
mpu4_config_common();
m_link7a_connected=false;
- m_mod_number=4;
}
-void mpu4crystal_machines_state::mpu4crys(machine_config &config)
+void mpu4crystal_machines_state::crystal_f(machine_config &config)
{
- mod2(config);
+ mod2_f(config);
MCFG_MACHINE_START_OVERRIDE(mpu4crystal_machines_state,mpu4cry)
upd7759_device &upd(UPD7759(config, "upd"));
@@ -62,8 +69,8 @@ void mpu4crystal_machines_state::crystal_sound_w(uint8_t data)
void mpu4crystal_machines_state::init_m_frkstn()
{
+ init_m4();
address_space &space = m_maincpu->space(AS_PROGRAM);
- init_m4default();
space.install_read_handler(0x0880, 0x0880, read8smo_delegate(*this, FUNC(mpu4crystal_machines_state::crystal_sound_r)));
space.install_write_handler(0x0881, 0x0881, write8smo_delegate(*this, FUNC(mpu4crystal_machines_state::crystal_sound_w)));
}
@@ -850,134 +857,136 @@ ROM_END
} // anonymous namespace
+using namespace mpu4_traits;
+
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
-GAME(199?, m4frkstn, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstna,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstnb,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstnc,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstnd,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstne,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstnf,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 7)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstng,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 8)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frkstnh,m4frkstn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 9)", GAME_FLAGS|MACHINE_NO_SOUND ) // this set is encrypted
-
-GAME(199?, m4aladn, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladna, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladnb, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladnc, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladnd, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladne, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladnf, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 7)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladng, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 8)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladnh, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 9)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4aladni, m4aladn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 10)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4bagcsh, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Bags Of Cash Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bagcsha,m4bagcsh, mpu4crys, mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Bags Of Cash Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4bucclb, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bucclba,m4bucclb, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bucclbb,m4bucclb, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bucclbc,m4bucclb, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4bullio, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Bullion Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bullioa,m4bullio, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Bullion Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bulliob,m4bullio, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Bullion Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4carou ,0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4caroua, m4carou, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4caroub, m4carou, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4carouc, m4carou, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4cclimb, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4cclimba,m4cclimb, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4crzcl, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzcla, m4crzcl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzclb, m4crzcl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzclc, m4crzcl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzcld, m4crzcl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4elitc, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Elite Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4elitca, m4elitc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Elite Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4fairg, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fairground (Crystal) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4frmani, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frmania,m4frmani, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frmanib,m4frmani, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frmanic,m4frmani, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4goldxc, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4goldxca,m4goldxc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4goldxcb,m4goldxc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4goldxcc,m4goldxc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4goldxcd,m4goldxc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4goldxce,m4goldxc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4goldfc, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Fever (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4goldfca,m4goldfc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Fever (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4goldfcb,m4goldfc, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Fever (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4hirol, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Hi Roller Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hirola, m4hirol, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Hi Roller Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4kingqn, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Kings & Queens Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4kingqna,m4kingqn, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Kings & Queens Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4lotclb, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Lottery Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4lotclba,m4lotclb, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Lottery Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4montrl, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
-GAME(199?, m4montrla,m4montrl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
-GAME(199?, m4montrlb,m4montrl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
-GAME(199?, m4montrlc,m4montrl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
-GAME(199?, m4montrld,m4montrl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
-
-GAME(199?, m4mystiq, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4mystiqa,m4mystiq, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4mystiqb,m4mystiq, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4mystiqc,m4mystiq, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4nudwin, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Nudge & Win (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4nudwina,m4nudwin, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Nudge & Win (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4paracl, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Paradise Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4paracla,m4paracl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Paradise Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4rlpick, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4rlpicka,m4rlpick, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4rlpickb,m4rlpick, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4rlpickc,m4rlpick, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4twstr, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4twstra, m4twstr, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4twstrb, m4twstr, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4twstrc, m4twstr, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4twstrd, m4twstr, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4twstcl, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4twstcla,m4twstcl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4twstclb,m4twstcl, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4dz, 0, mpu4crys, mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Danger Zone (Crystal) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4tylb, 0, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Thank Your Lucky Bars (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4tylba, m4tylb, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Thank Your Lucky Bars (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-
-GAME(199?, m4magi7, 0, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Magic 7's (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4magi7a, m4magi7, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Magic 7's (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-
-GAME(199?, m4rags, 0, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4ragsa, m4rags, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4ragsb, m4rags, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 3)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4ragsc, m4rags, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 4)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-
-GAME(199?, m4riocr, 0, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Rio Grande (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4riocra, m4riocr, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Rio Grande (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-
-GAME(199?, m4ndup, 0, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4ndupa, m4ndup, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4ndupb, m4ndup, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 3)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
-GAME(199?, m4ndupc, m4ndup, mod4oki, mpu4, mpu4crystal_machines_state, init_m4default, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 4)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4frkstn, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstna,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstnb,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstnc,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstnd,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstne,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstnf,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 7)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstng,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 8)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frkstnh,m4frkstn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Frank 'n' Stein (Crystal) (MPU4, set 9)", GAME_FLAGS|MACHINE_NO_SOUND ) // this set is encrypted
+
+GAME(199?, m4aladn, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladna, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladnb, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladnc, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladnd, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladne, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladnf, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 7)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladng, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 8)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladnh, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 9)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4aladni, m4aladn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Aladdin's Cave (Crystal) (MPU4) (set 10)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4bagcsh, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Bags Of Cash Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bagcsha,m4bagcsh, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_m_frkstn, ROT0, "Crystal","Bags Of Cash Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4bucclb, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bucclba,m4bucclb, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bucclbb,m4bucclb, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bucclbc,m4bucclb, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Buccaneer Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4bullio, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Bullion Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bullioa,m4bullio, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Bullion Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bulliob,m4bullio, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Bullion Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4carou ,0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4caroua, m4carou, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4caroub, m4carou, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4carouc, m4carou, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Carousel Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4cclimb, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4cclimba,m4cclimb, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4crzcl, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzcla, m4crzcl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzclb, m4crzcl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzclc, m4crzcl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzcld, m4crzcl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Crazy Climber Club (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4elitc, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Elite Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4elitca, m4elitc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Elite Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4fairg, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fairground (Crystal) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4frmani, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frmania,m4frmani, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frmanib,m4frmani, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frmanic,m4frmani, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Fruit Mania (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4goldxc, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4goldxca,m4goldxc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4goldxcb,m4goldxc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4goldxcc,m4goldxc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4goldxcd,m4goldxc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4goldxce,m4goldxc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Exchange Club (Crystal) (MPU4) (set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4goldfc, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Fever (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4goldfca,m4goldfc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Fever (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4goldfcb,m4goldfc, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Gold Fever (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4hirol, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Hi Roller Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hirola, m4hirol, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Hi Roller Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4kingqn, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Kings & Queens Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4kingqna,m4kingqn, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Kings & Queens Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4lotclb, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Lottery Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4lotclba,m4lotclb, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Lottery Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4montrl, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
+GAME(199?, m4montrla,m4montrl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
+GAME(199?, m4montrlb,m4montrl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
+GAME(199?, m4montrlc,m4montrl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
+GAME(199?, m4montrld,m4montrl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystali, ROT0, "Crystal","Money Trail (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND ) // encryption is inverted!
+
+GAME(199?, m4mystiq, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4mystiqa,m4mystiq, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4mystiqb,m4mystiq, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4mystiqc,m4mystiq, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Mystique Club (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4nudwin, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Nudge & Win (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4nudwina,m4nudwin, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Nudge & Win (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4paracl, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Paradise Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4paracla,m4paracl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Paradise Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4rlpick, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4rlpicka,m4rlpick, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4rlpickb,m4rlpick, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4rlpickc,m4rlpick, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Reel Picks (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4twstr, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4twstra, m4twstr, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4twstrb, m4twstr, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4twstrc, m4twstr, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4twstrd, m4twstr, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister (Crystal) (MPU4) (set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4twstcl, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister Club (Crystal) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4twstcla,m4twstcl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister Club (Crystal) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4twstclb,m4twstcl, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Twister Club (Crystal) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4dz, 0, crystal(R4, RT1), mpu4, mpu4crystal_machines_state, init_crystal, ROT0, "Crystal","Danger Zone (Crystal) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4tylb, 0, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Thank Your Lucky Bars (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4tylba, m4tylb, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Thank Your Lucky Bars (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+
+GAME(199?, m4magi7, 0, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Magic 7's (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4magi7a, m4magi7, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Magic 7's (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+
+GAME(199?, m4rags, 0, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4ragsa, m4rags, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4ragsb, m4rags, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 3)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4ragsc, m4rags, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Rags To Riches Club (Crystal) (MPU4) (set 4)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+
+GAME(199?, m4riocr, 0, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Rio Grande (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4riocra, m4riocr, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Rio Grande (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+
+GAME(199?, m4ndup, 0, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 1)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4ndupa, m4ndup, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 2)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4ndupb, m4ndup, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 3)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
+GAME(199?, m4ndupc, m4ndup, mod4oki(R4, RT1), mpu4, mpu4crystal_machines_state, init_m4, ROT0, "Crystal","Nudge Double Up Deluxe (Crystal) (MPU4) (set 4)",GAME_FLAGS|MACHINE_NO_SOUND|MACHINE_MECHANICAL )
diff --git a/src/mame/barcrest/mpu4dealem.cpp b/src/mame/barcrest/mpu4dealem.cpp
index c7635ff4b6a..374b7ec8ab0 100644
--- a/src/mame/barcrest/mpu4dealem.cpp
+++ b/src/mame/barcrest/mpu4dealem.cpp
@@ -29,6 +29,7 @@ public:
: mpu4_state(mconfig, type, tag)
, m_dealem_videoram(*this, "dealem_videoram")
, m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
{
}
@@ -38,13 +39,18 @@ protected:
virtual void video_start() override;
private:
- optional_shared_ptr<uint8_t> m_dealem_videoram;
DECLARE_MACHINE_RESET(dealem_vid);
void dealem_palette(palette_device &palette) const;
uint32_t screen_update_dealem(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- required_device<gfxdecode_device> m_gfxdecode;
+
void dealem_memmap(address_map &map);
TILE_GET_INFO_MEMBER(tile_info);
+
+ optional_shared_ptr<uint8_t> m_dealem_videoram;
+
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+
tilemap_t *m_tilemap = nullptr;
};
diff --git a/src/mame/barcrest/mpu4empire.cpp b/src/mame/barcrest/mpu4empire.cpp
index 61b46b1447d..d183f684bb8 100644
--- a/src/mame/barcrest/mpu4empire.cpp
+++ b/src/mame/barcrest/mpu4empire.cpp
@@ -16,8 +16,6 @@ public:
{
}
- void init_m4apachg();
-
};
#include "m4apachg.lh"
@@ -25,39 +23,32 @@ public:
} // anonymous namespace
-void mpu4empire_machines_state::init_m4apachg()
-{
- init_m4default();
- //Derived from Apache_Gold_(Empire)_[C02_800_25jp].gam
- use_m4_hopper_duart_a();
- use_m4_large_extender_b();
- use_m4_standard_reels();
- //PCKEY =b
- //STKEY =4
- //JPKEY =a
- //JPSET =5
- //DIP1_0=false
- //DIP1_1=true
- //DIP1_2=false
- //DIP1_3=true
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=true
- //DIP2_4=true
- //DIP2_5=false
- //DIP2_6=false
- //DIP2_7=false
- //Sound empire
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000
- //Front door code 0 Cash door code 0
-}
+//Derived from Apache_Gold_(Empire)_[C02_800_25jp].gam
+//PCKEY =b
+//STKEY =4
+//JPKEY =a
+//JPSET =5
+//DIP1_0=false
+//DIP1_1=true
+//DIP1_2=false
+//DIP1_3=true
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=true
+//DIP2_4=true
+//DIP2_5=false
+//DIP2_6=false
+//DIP2_7=false
+//Sound empire
+//Standard
+//Volume 0 Stereo= 1
+//Sample rate 16000
+//Front door code 0 Cash door code 0
ROM_START( m4apachg )
ROM_REGION( 0x020000, "maincpu", 0 )
@@ -869,6 +860,8 @@ ROM_START( m4jne )
ROM_END
+using namespace mpu4_traits;
+
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
@@ -876,107 +869,107 @@ ROM_END
most of these boot (after a single reset to initialize)
but have broken text, need to check VFD emulation */
-GAMEL(199?, m4apachg, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4apachg, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
-GAMEL(199?, m4apachga, m4apachg, mod4oki, mpu4, mpu4empire_machines_state, init_m4apachg, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
-GAMEL(199?, m4apachgb, m4apachg, mod4oki, mpu4, mpu4empire_machines_state, init_m4apachg, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
-GAMEL(199?, m4apachgc, m4apachg, mod4oki, mpu4, mpu4empire_machines_state, init_m4apachg, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
-GAMEL(199?, m4apachgd, m4apachg, mod4oki, mpu4, mpu4empire_machines_state, init_m4apachg, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
-GAMEL(199?, m4apachge, m4apachg, mod4oki, mpu4, mpu4empire_machines_state, init_m4apachg, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
-GAMEL(199?, m4apachgf, m4apachg, mod4oki, mpu4, mpu4empire_machines_state, init_m4apachg, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 7)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
-
-GAME(199?, m4bangrs, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bangers 'n' Cash (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bangrsa, m4bangrs, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bangers 'n' Cash (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bangrsb, m4bangrs, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bangers 'n' Cash (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4bankrd, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bankrda, m4bankrd, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bankrdb, m4bankrd, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bankrdc, m4bankrd, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bankrdd, m4bankrd, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4bigchs, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Big Cheese (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bigchsa, m4bigchs, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Big Cheese (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bigchsb, m4bigchs, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Big Cheese (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4cstrik, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4cstrika, m4cstrik, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4cstrikb, m4cstrik, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4cstrikc, m4cstrik, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4chacec, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Chase The Ace [Cards] (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4chaceca, m4chacec, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Chase The Ace [Cards] (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4chacef, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4chacefa, m4chacef, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4chacefb, m4chacef, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4chacefc, m4chacef, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4crzcap, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzcapa, m4crzcap, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzcapb, m4crzcap, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzcapc, m4crzcap, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4crfire, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Crossfire (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
-GAME(199?, m4crfirea, m4crfire, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Crossfire (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
-
-GAME(199?, m4eureka, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Eureka (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4eurekaa, m4eureka, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Eureka (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4eurekab, m4eureka, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Eureka (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4fright, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Fright Night (Empire) (MPU4, v4.1X)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frighta, m4fright, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Fright Night (Empire) (MPU4, v4.1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frightb, m4fright, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Fright Night (Empire) (MPU4, v4.1i)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frightc, m4fright, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Fright Night (Empire) (MPU4, v?.?, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // bad dump
-GAME(199?, m4frightd, m4fright, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Fright Night (Empire) (MPU4, v3.3)",GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frighte, m4fright, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Fright Night (Empire) (MPU4, v3.0)",GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frightf, m4fright, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Fright Night (Empire) (MPU4, v?.?, set 2)",GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4gamblr, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","The Gambler (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gamblra, m4gamblr, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","The Gambler (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gamblrb, m4gamblr, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","The Gambler (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4gtrain, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gtraina, m4gtrain, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gtrainb, m4gtrain, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gtrainc, m4gtrain, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4goldfv, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Gold Fever (Empire) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4haunt, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Haunted House (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4haunta, m4haunt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Haunted House (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hauntb, m4haunt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Haunted House (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hauntc, m4haunt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Haunted House (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hauntd, m4haunt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Haunted House (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4hisprt, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","High Spirits (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hisprta, m4hisprt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","High Spirits (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hisprtb, m4hisprt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","High Spirits (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hisprtc, m4hisprt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","High Spirits (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hisprtd, m4hisprt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","High Spirits (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4hisprte, m4hisprt, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","High Spirits (Empire) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(1996, m4hotcsh, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(1996, m4hotcsha, m4hotcsh, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(1996, m4hotcshb, m4hotcsh, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(1996, m4hotcshc, m4hotcsh, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4monspn, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Money Spinner (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4monspna, m4monspn, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Money Spinner (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4monspnb, m4monspn, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Money Spinner (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4pbnudg, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Pinball Nudger (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4pbnudga, m4pbnudg, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Pinball Nudger (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4pbnudgb, m4pbnudg, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Pinball Nudger (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-
-GAME(199?, m4pitfal, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Pitfall (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
-GAME(199?, m4pitfala, m4pitfal, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Pitfall (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
-GAME(199?, m4pitfalb, m4pitfal, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Pitfall (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
-GAME(199?, m4pitfalc, m4pitfal, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Pitfall (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
-
-GAME(199?, m4ttrail, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Treasure Trail (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4ttraila,m4ttrail, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Treasure Trail (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4ttrailb,m4ttrail, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","Treasure Trail (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAMEL(199?, m4apachg, 0, mod4oki(R4, RT1, LPLB, HDA), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
+GAMEL(199?, m4apachga, m4apachg, mod4oki(R4, RT1, LPLB, HDA), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
+GAMEL(199?, m4apachgb, m4apachg, mod4oki(R4, RT1, LPLB, HDA), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
+GAMEL(199?, m4apachgc, m4apachg, mod4oki(R4, RT1, LPLB, HDA), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
+GAMEL(199?, m4apachgd, m4apachg, mod4oki(R4, RT1, LPLB, HDA), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
+GAMEL(199?, m4apachge, m4apachg, mod4oki(R4, RT1, LPLB, HDA), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
+GAMEL(199?, m4apachgf, m4apachg, mod4oki(R4, RT1, LPLB, HDA), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Apache Gold (Empire) (MPU4, set 7)", GAME_FLAGS|MACHINE_NO_SOUND, layout_m4apachg )
+
+GAME(199?, m4bangrs, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bangers 'n' Cash (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bangrsa, m4bangrs, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bangers 'n' Cash (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bangrsb, m4bangrs, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bangers 'n' Cash (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4bankrd, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bankrda, m4bankrd, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bankrdb, m4bankrd, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bankrdc, m4bankrd, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bankrdd, m4bankrd, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Bank Raid (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4bigchs, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Big Cheese (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigchsa, m4bigchs, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Big Cheese (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigchsb, m4bigchs, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Big Cheese (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4cstrik, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4cstrika, m4cstrik, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4cstrikb, m4cstrik, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4cstrikc, m4cstrik, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Cash Strike (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4chacec, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Chase The Ace [Cards] (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4chaceca, m4chacec, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Chase The Ace [Cards] (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4chacef, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4chacefa, m4chacef, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4chacefb, m4chacef, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4chacefc, m4chacef, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Chase The Ace [Fruits] (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4crzcap, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzcapa, m4crzcap, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzcapb, m4crzcap, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzcapc, m4crzcap, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Crazy Capers (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4crfire, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Crossfire (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
+GAME(199?, m4crfirea, m4crfire, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Crossfire (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
+
+GAME(199?, m4eureka, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Eureka (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4eurekaa, m4eureka, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Eureka (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4eurekab, m4eureka, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Eureka (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4fright, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Fright Night (Empire) (MPU4, v4.1X)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frighta, m4fright, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Fright Night (Empire) (MPU4, v4.1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frightb, m4fright, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Fright Night (Empire) (MPU4, v4.1i)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frightc, m4fright, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Fright Night (Empire) (MPU4, v?.?, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // bad dump
+GAME(199?, m4frightd, m4fright, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Fright Night (Empire) (MPU4, v3.3)",GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frighte, m4fright, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Fright Night (Empire) (MPU4, v3.0)",GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frightf, m4fright, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Fright Night (Empire) (MPU4, v?.?, set 2)",GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4gamblr, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","The Gambler (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gamblra, m4gamblr, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","The Gambler (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gamblrb, m4gamblr, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","The Gambler (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4gtrain, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gtraina, m4gtrain, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gtrainb, m4gtrain, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gtrainc, m4gtrain, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Ghost Train (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4goldfv, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Gold Fever (Empire) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4haunt, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Haunted House (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4haunta, m4haunt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Haunted House (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hauntb, m4haunt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Haunted House (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hauntc, m4haunt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Haunted House (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hauntd, m4haunt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Haunted House (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4hisprt, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","High Spirits (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hisprta, m4hisprt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","High Spirits (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hisprtb, m4hisprt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","High Spirits (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hisprtc, m4hisprt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","High Spirits (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hisprtd, m4hisprt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","High Spirits (Empire) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4hisprte, m4hisprt, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","High Spirits (Empire) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(1996, m4hotcsh, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(1996, m4hotcsha, m4hotcsh, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(1996, m4hotcshb, m4hotcsh, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(1996, m4hotcshc, m4hotcsh, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Hot Cash (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4monspn, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Money Spinner (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4monspna, m4monspn, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Money Spinner (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4monspnb, m4monspn, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Money Spinner (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4pbnudg, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Pinball Nudger (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4pbnudga, m4pbnudg, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Pinball Nudger (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4pbnudgb, m4pbnudg, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Pinball Nudger (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+
+GAME(199?, m4pitfal, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Pitfall (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
+GAME(199?, m4pitfala, m4pitfal, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Pitfall (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
+GAME(199?, m4pitfalb, m4pitfal, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Pitfall (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
+GAME(199?, m4pitfalc, m4pitfal, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Pitfall (Empire) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, alarm
+
+GAME(199?, m4ttrail, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Treasure Trail (Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4ttraila,m4ttrail, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Treasure Trail (Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4ttrailb,m4ttrail, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","Treasure Trail (Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
// doesn't seem like the other Empire games (starts with RESETTING JNE, licensed, mislabeled?)
//Looks like the only one to have a proper protection routine, too so I'm guessing it's just a game they distributed, rather than made themselves
-GAME(199?, m4jne, 0, mod4oki, mpu4, mpu4empire_machines_state, init_m4default, ROT0, "Empire","The Jackpot's Not Enough (Empire) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4jne, 0, mod4oki(R4, RT1), mpu4, mpu4empire_machines_state, init_m4, ROT0, "Empire","The Jackpot's Not Enough (Empire) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
diff --git a/src/mame/barcrest/mpu4mdm.cpp b/src/mame/barcrest/mpu4mdm.cpp
index 99484b75141..3636fcd273c 100644
--- a/src/mame/barcrest/mpu4mdm.cpp
+++ b/src/mame/barcrest/mpu4mdm.cpp
@@ -426,71 +426,73 @@ ROM_END
} // anonymous namespace
+using namespace mpu4_traits;
+
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
/* MDM
most of these boot and act similar to the Empire games (ie bad text, but run OK) */
-GAME(199?, m42punlm, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","2p Unlimited (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m42punlm, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","2p Unlimited (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4silnud, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm?","Silver Nudger (Mdm?) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // code is close to 2p Unlimited, same sound rom
+GAME(199?, m4silnud, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm?","Silver Nudger (Mdm?) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // code is close to 2p Unlimited, same sound rom
-GAME(199?, m4nud2p, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm?","2p Nudger (Mdm?) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // code is close to 2p Unlimited, same sound rom
+GAME(199?, m4nud2p, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm?","2p Nudger (Mdm?) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // code is close to 2p Unlimited, same sound rom
-GAME(199?, m4ctn, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm?","Tuppenny Nudger Classic (Mdm?) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // code is close to 2p Unlimited, same sound rom
+GAME(199?, m4ctn, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm?","Tuppenny Nudger Classic (Mdm?) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // code is close to 2p Unlimited, same sound rom
-GAME(199?, m4bigapl, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bigapla, m4bigapl, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bigaplb, m4bigapl, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bigaplc, m4bigapl, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bigapld, m4bigapl, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bigaple, m4bigapl, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigapl, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigapla, m4bigapl, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigaplb, m4bigapl, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigaplc, m4bigapl, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigapld, m4bigapl, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bigaple, m4bigapl, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Big Apple (Mdm) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4blztrl, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Blazing Trails (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4blztrla, m4blztrl, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Blazing Trails (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4blztrl, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Blazing Trails (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4blztrla, m4blztrl, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Blazing Trails (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bodymt, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Body Match (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, various alarms
+GAME(199?, m4bodymt, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Body Match (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND ) // doesn't boot, various alarms
-GAME(199?, m4coloss, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4colossa, m4coloss, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4colossb, m4coloss, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4colossc, m4coloss, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4colossd, m4coloss, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4colosse, m4coloss, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4colossf, m4coloss, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 7)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4colossg, m4coloss, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 8)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4coloss, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4colossa, m4coloss, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4colossb, m4coloss, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4colossc, m4coloss, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4colossd, m4coloss, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4colosse, m4coloss, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 6)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4colossf, m4coloss, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 7)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4colossg, m4coloss, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Colossus (Mdm) (MPU4, set 8)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4firebl, 0, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
-GAME(199?, m4firebla, m4firebl, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
-GAME(199?, m4fireblb, m4firebl, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
-GAME(199?, m4fireblc, m4firebl, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
-GAME(199?, m4firebld, m4firebl, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
+GAME(199?, m4firebl, 0, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
+GAME(199?, m4firebla, m4firebl, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
+GAME(199?, m4fireblb, m4firebl, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
+GAME(199?, m4fireblc, m4firebl, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
+GAME(199?, m4firebld, m4firebl, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Fireball (Mdm) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND ) // hangs after spin (sound status?)
-GAME(199?, m4mayhem, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Mayhem (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4mayhema, m4mayhem, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Mayhem (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4mayhem, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Mayhem (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4mayhema, m4mayhem, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Mayhem (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4themob, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Mob (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4themoba, m4themob, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Mob (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4themobb, m4themob, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","The Mob (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4themob, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Mob (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4themoba, m4themob, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Mob (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4themobb, m4themob, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","The Mob (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4nudbon, 0, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Nudge Bonanza (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4nudbona, m4nudbon, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Nudge Bonanza (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4nudbon, 0, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Nudge Bonanza (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4nudbona, m4nudbon, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Nudge Bonanza (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4nudgem, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Nudge Gems (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4nudgem, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Nudge Gems (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4smshgb, 0, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4smshgba,m4smshgb, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4smshgbb,m4smshgb, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4smshgbc,m4smshgb, mod4oki, mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4smshgb, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4smshgba,m4smshgb, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4smshgbb,m4smshgb, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4smshgbc,m4smshgb, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Smash 'n' Grab (Mdm) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4snklad, 0, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Snakes & Ladders (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4snklad, 0, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Snakes & Ladders (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4excam, 0, mod4oki ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Excalibur (Mdm) (MPU4, V1.4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4excamd,m4excam, mod4oki ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Excalibur (Mdm) (MPU4, V1.0D)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4excam, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Excalibur (Mdm) (MPU4, V1.4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4excamd,m4excam, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Excalibur (Mdm) (MPU4, V1.0D)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4front, 0, mod4oki ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Final Frontier (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4front, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Final Frontier (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4safar, 0, mod4oki ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Safari Club (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4safar, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Safari Club (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4snowbl, 0, mod2 ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Snowball Bingo (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4snowbl, 0, mod2(R4, RT1),mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Snowball Bingo (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4ewshft, 0, mod4oki ,mpu4, mpu4mdm_machines_state, init_m4default, ROT0, "Mdm","Each Way Shifter (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4ewshft, 0, mod4oki(R4, RT1), mpu4, mpu4mdm_machines_state, init_m4, ROT0, "Mdm","Each Way Shifter (Mdm) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
diff --git a/src/mame/barcrest/mpu4misc.cpp b/src/mame/barcrest/mpu4misc.cpp
index 5d895ed21d5..99c891762d8 100644
--- a/src/mame/barcrest/mpu4misc.cpp
+++ b/src/mame/barcrest/mpu4misc.cpp
@@ -19,6 +19,8 @@ public:
} // anonymous namespace
+using namespace mpu4_traits;
+
ROM_START( m4bangin )
ROM_REGION( 0x020000, "maincpu", 0 )
@@ -166,7 +168,7 @@ ROM_END
ROM_LOAD( name, offset, length, hash ) \
M4DCRLS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4dcrls, 0, "70000116.bin", 0x0000, 0x040000, CRC(27e5ad77) SHA1(83cabd8b52efc6c0d5530b55683295208f64abb6), "Qps","Double Crazy Reels (Qps) (MPU4) (set 1)" ) // dcr_std_340.bin
@@ -195,7 +197,7 @@ GAME_CUSTOM( 199?, m4dcrls__q, m4dcrls, "70001116.bin",
ROM_LOAD( name, offset, length, hash ) \
M4DCRLS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
@@ -214,7 +216,7 @@ GAME_CUSTOM( 199?, m4dcrls__r, m4dcrls, "dcr_data_340.bin",
ROM_LOAD( name, offset, length, hash ) \
M4JUNGJK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
@@ -238,7 +240,7 @@ GAME_CUSTOM( 199?, m4jungjk__e, m4jungjk, "jungle.p1", 0
ROM_LOAD( name, offset, length, hash ) \
M4RHNOTE_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4rhnote, 0, "70000120.bin", 0x0000, 0x040000, CRC(d1ce1e1c) SHA1(2fc2b041b4e9fcade4b2ce6a0bc709f4174e2d88), "Qps","Red Hot Notes (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4rhnote__a, m4rhnote, "70000121.bin", 0x0000, 0x040000, CRC(1e1a26c0) SHA1(8a80a94d280c82887a0f7da607988597df23e1fb), "Qps","Red Hot Notes (Qps) (MPU4) (set 2)" )
GAME_CUSTOM( 199?, m4rhnote__b, m4rhnote, "70000125.bin", 0x0000, 0x080000, CRC(67a617a2) SHA1(3900c0cc3f8e4d52105096c1e21903cb83b8c1b7), "Qps","Red Hot Notes (Qps) (MPU4) (set 3)" )
@@ -278,7 +280,7 @@ GAME_CUSTOM( 199?, m4rhnote__y, m4rhnote, "rhn_std_110_lv.bin", 0
ROM_LOAD( name, offset, length, hash ) \
M4RHROCK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4rhrock, 0, "rhr_v200_1625_da8c_nlv.bin", 0x0000, 0x040000, CRC(dd67f5b3) SHA1(19b7b57ef20a2ad7997cf748396b246fda87db70), "Qps","Red Hot Rocks (Qps) (MPU4) (set 1)" )
@@ -298,7 +300,7 @@ GAME_CUSTOM( 199?, m4rhrock__a, m4rhrock, "rhr_v300_1216_ce52_nlv.bin", 0x0
ROM_LOAD( name, offset, length, hash ) \
M4RHWHL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4rhwhl, 0, "70001184.bin", 0x0000, 0x080000, CRC(8792d95b) SHA1(24b4f78728db7ee95d1fcd3ba38b49a20baaae6b), "Qps","Red Hot Wheels (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4rhwhl__a, m4rhwhl, "rhw_v100_1333_6d40_lv.bin", 0x0000, 0x080000, CRC(9ef7b655) SHA1(605822eaee44bebf554218ef7346192a6a84077e), "Qps","Red Hot Wheels (Qps) (MPU4) (set 2)" )
GAME_CUSTOM( 199?, m4rhwhl__b, m4rhwhl, "rhw_v310_0925_0773_lv_p.bin", 0x0000, 0x080000, CRC(11880908) SHA1(0165bacf73dd54959975b3f186e256fd8d690d34), "Qps","Red Hot Wheels (Qps) (MPU4) (set 3)" )
@@ -316,7 +318,7 @@ GAME_CUSTOM( 199?, m4rhwhl__c, m4rhwhl, "rhw_v310_0931_fa02_lv.bin", 0x00
ROM_LOAD( name, offset, length, hash ) \
M4RDEAL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4rdeal, 0, "70000703.bin", 0x0000, 0x080000, CRC(11e51311) SHA1(71a4327fa01cd7e899d423adc34c732ed56118d8), "Qps","Reel Deal (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4rdeal__a, m4rdeal, "70000704.bin", 0x0000, 0x080000, CRC(b161c08b) SHA1(bb914eb900aff0f6eeec33ff8a595a288306e073), "Qps","Reel Deal (Qps) (MPU4) (set 2)" )
@@ -343,7 +345,7 @@ GAME_CUSTOM( 199?, m4rdeal__i, m4rdeal, "70001745.bin", 0x0000, 0x080000, CR
ROM_LOAD( name, offset, length, hash ) \
M4SHOKNR_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4shoknr, 0, "snr_v300_1218_3019_lv.bin", 0x0000, 0x040000, CRC(bec80497) SHA1(08de5e29a063b01fb904a156170a3063633115ab), "Qps","Shock 'n' Roll (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4shoknr__a, m4shoknr, "snr_v300_1221_c8ff_nlv.bin", 0x0000, 0x040000, CRC(d191b361) SHA1(4146e509e77878a51e32de877768504b3c85e6f8), "Qps","Shock 'n' Roll (Qps) (MPU4) (set 2)" )
@@ -363,7 +365,7 @@ GAME_CUSTOM( 199?, m4shoknr__c, m4shoknr, "snr_v200_1655_5a69_nlv.bin", 0
ROM_LOAD( name, offset, length, hash ) \
M4TORNAD_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4tornad, 0, "torn_v110_1146_979d_lv.bin", 0x0000, 0x040000, CRC(3160bddd) SHA1(4f36b081c8f6859a3fe55e1f177a0406c2480987), "Qps","Tornado (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4tornad__a, m4tornad, "torn_v110_1153_955f_nlv.bin", 0x0000, 0x040000, CRC(c437040d) SHA1(50c5ba655989b7f6a2ee61af0ad007ce825f4364), "Qps","Tornado (Qps) (MPU4) (set 2)" )
@@ -387,7 +389,7 @@ GAME_CUSTOM( 199?, m4tornad__g, m4tornad, "tornsp_v200_1626_ec93_lv.bin",
ROM_LOAD( name, offset, length, hash ) \
M4SHKWAV_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4shkwav, 0, "swave_v210_1135_08dd_lv.bin", 0x0000, 0x040000, CRC(ca9d40a3) SHA1(65c9e4aa022eb6fe70d619f67638c37ad578ddbf), "Qps","Shockwave (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4shkwav__a, m4shkwav, "swave_v210_11376_0bb3_nlv.bin", 0x0000, 0x040000, CRC(3fcaf973) SHA1(28258c8c60e6b542e1789cd8a4cfd530d1ed6084), "Qps","Shockwave (Qps) (MPU4) (set 2)" )
GAME_CUSTOM( 199?, m4shkwav__b, m4shkwav, "swsplv.bin", 0x0000, 0x040000, CRC(1e33e93f) SHA1(3e87f8ed35da776e1968c9574c140cc3984ea8de), "Qps","Shockwave (Qps) (MPU4) (set 3)" )
@@ -398,7 +400,7 @@ GAME_CUSTOM( 199?, m4shkwav__b, m4shkwav, "swsplv.bin",
ROM_IGNORE(0x40000)
M4SHKWAV_EXTRA_ROMS
ROM_END
-GAME(199?, m4shkwav__c, m4shkwav, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, "Qps", "Shockwave (Qps) (MPU4) (set 4)", GAME_FLAGS )
+GAME(199?, m4shkwav__c, m4shkwav, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, "Qps", "Shockwave (Qps) (MPU4) (set 4)", GAME_FLAGS )
GAME_CUSTOM( 199?, m4shkwav__d, m4shkwav, "swave_v300_1552_13ed_nlv.bin", 0x0000, 0x040000, CRC(b0e03f04) SHA1(fdd113af30fd9e87b171ecdf3be7e720366476b3), "Qps","Shockwave (Qps) (MPU4) (set 5)" )
GAME_CUSTOM( 199?, m4shkwav__e, m4shkwav, "swave_v300_1555_119d_lv.bin", 0x0000, 0x040000, CRC(45b786d4) SHA1(24fd4fdea684103334385ca329f384796b496e2c), "Qps","Shockwave (Qps) (MPU4) (set 6)" )
GAME_CUSTOM( 199?, m4shkwav__f, m4shkwav, "swsp_v300_1602_e1b2_nlv.bin", 0x0000, 0x040000, CRC(4ed74015) SHA1(0ab2167ba0ce6f1a1317c2087091187b9fa94c27), "Qps","Shockwave (Qps) (MPU4) (set 7)" )
@@ -417,7 +419,7 @@ GAME_CUSTOM( 199?, m4shkwav__g, m4shkwav, "swsp_v300_1606_ded8_lv.bin",
ROM_LOAD( name, offset, length, hash ) \
M4CLAB_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4clab, 0, "70000019.bin", 0x0000, 0x040000, CRC(23a12863) SHA1(4047cb8cbc03f96f2b8681b6276e100e8e9194a5), "Qps","Cash Lab (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4clab__a, m4clab, "70000020.bin", 0x0000, 0x040000, CRC(88af7368) SHA1(14dea4267a4365286eea1e02b9b44d4053618cbe), "Qps","Cash Lab (Qps) (MPU4) (set 2)" )
@@ -440,7 +442,7 @@ GAME_CUSTOM( 199?, m4clab__j, m4clab, "clabrom", 0x0
ROM_LOAD( name, offset, length, hash ) \
M4SDQUID_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4sdquid, 0, "70000352.bin", 0x0000, 0x040000, CRC(303d6177) SHA1(aadff8a81244bfd62d1cc088caf01496e1ff61db), "Qps","Sundance Quid (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4sdquid__a, m4sdquid, "70000353.bin", 0x0000, 0x040000, CRC(6e3a9dfc) SHA1(1d5d04140811e17267102c0618ffdaf70f71f717), "Qps","Sundance Quid (Qps) (MPU4) (set 2)" )
@@ -467,7 +469,7 @@ GAME_CUSTOM( 199?, m4sdquid__k, m4sdquid, "70001461.bin", 0x0000, 0x080000,
ROM_LOAD( name, offset, length, hash ) \
M4LOOPLT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4misc_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4looplt, 0, "70000500.bin", 0x0000, 0x080000, CRC(040699a5) SHA1(e1ebc23684c5bc1faaac7409d2179488c3022872), "Qps","Loop The Loot (Qps) (MPU4) (set 1)" )
GAME_CUSTOM( 199?, m4looplt__a, m4looplt, "70000500a.bin", 0x0000, 0x080000, CRC(0668f52d) SHA1(6560309facf0022e3c14421b848f212b18be7550), "Qps","Loop The Loot (Qps) (MPU4) (set 2)" )
@@ -488,20 +490,20 @@ GAME_CUSTOM( 199?, m4looplt__m, m4looplt, "70001505.bin", 0x0000, 0x080
/* Global */
// boot to "Percent Change" then "*initializing*"
-GAME(199?, m4bangin, 0, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Bangin' Away (Global) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4bangina, m4bangin, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Bangin' Away (Global) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4banginb, m4bangin, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Bangin' Away (Global) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bangin, 0, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Bangin' Away (Global) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4bangina, m4bangin, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Bangin' Away (Global) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4banginb, m4bangin, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Bangin' Away (Global) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4wwc, 0, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Wacky Weekend Club (Global) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4wwca, m4wwc, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Wacky Weekend Club (Global) (MPU4) (set 2)" , GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4wwcb, m4wwc, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Wacky Weekend Club (Global) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4wwc, 0, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Wacky Weekend Club (Global) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4wwca, m4wwc, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Wacky Weekend Club (Global) (MPU4) (set 2)" , GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4wwcb, m4wwc, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Wacky Weekend Club (Global) (MPU4) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4screw, 0, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.8)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4screwp, m4screw, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.8) (Protocol)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4screwa, m4screw, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.7)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4screwb, m4screw, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4screw, 0, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.8)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4screwp, m4screw, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.8) (Protocol)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4screwa, m4screw, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.7)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4screwb, m4screw, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Screwin' Around (Global) (MPU4, v0.5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4vfm, 0, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Value For Money (Global) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4vfm, 0, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Value For Money (Global) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4jiggin, 0, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Jiggin' In The Riggin' (Global) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4jiggina, m4jiggin, mod4oki, mpu4, mpu4misc_machines_state, init_m4default, ROT0, "Global","Jiggin' In The Riggin' (Global) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4jiggin, 0, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Jiggin' In The Riggin' (Global) (MPU4) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4jiggina, m4jiggin, mod4oki(R4, RT1), mpu4, mpu4misc_machines_state, init_m4, ROT0, "Global","Jiggin' In The Riggin' (Global) (MPU4) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
diff --git a/src/mame/barcrest/mpu4mod2sw.cpp b/src/mame/barcrest/mpu4mod2sw.cpp
index a63360debb5..8e0cde95534 100644
--- a/src/mame/barcrest/mpu4mod2sw.cpp
+++ b/src/mame/barcrest/mpu4mod2sw.cpp
@@ -2,15 +2,12 @@
// copyright-holders:David Haywood
/* MPU4 'Mod2' Sets
- This is the original MPU4 board, with AY8913 chip
+ This is the original MPU4 board, with AY-3-8913 chip.
+ If a set requires samples it doesn't belong here!
- if a set requires samples it doesn't belong here!
- the AY was only present on the original MOD2 board
- although you could apparently fit one on a MOD4
- if you wanted.
-
- Sets only get here if they do enough and make enough
- sounds for me to know they use the AY.
+ The AY-3-8913 was only present on the original MOD2
+ board, although you could apparently fit an AY-3-8912
+ (which also has one I/O port) on a MOD4 if you wanted.
*/
@@ -24,32 +21,85 @@ namespace {
class mpu4mod2_machines_state : public mpu4_state
{
public:
-
mpu4mod2_machines_state(const machine_config &mconfig, device_type type, const char *tag) :
mpu4_state(mconfig, type, tag)
{
}
- template<const uint8_t* Table> void mod2_cheatchr_pal_rtc(machine_config &config)
- {
- mod2_cheatchr_pal<Table>(config);
+ template<const uint8_t* Table> void mod2_cheatchr_pal_f(machine_config &config);
+ template<const uint8_t* Table> void mod2_cheatchr_pal_rtc_f(machine_config &config);
+
+ // bootleg mod2
+ template<uint8_t Fixed> void mod2_bootleg_fixedret_f(machine_config &config);
+
+ void mod2_chr_blastbnk_f(machine_config &config);
+ void mod2_chr_copcash_f(machine_config &config);
- m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod2_machines_state::mpu4_memmap_characteriser_rtc);
+ void mod4psg_f(machine_config &config);
- M48T02(config, "rtc");
+ template<const uint8_t* Table, typename... T>
+ auto mod2_cheatchr_pal(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod2_machines_state::mod2_cheatchr_pal_f<Table>, traits...);
+ }
+ template<const uint8_t* Table, typename... T>
+ auto mod2_cheatchr_pal_rtc(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod2_machines_state::mod2_cheatchr_pal_rtc_f<Table>, traits...);
+ }
+ template<uint8_t Fixed, typename... T>
+ auto mod2_bootleg_fixedret(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod2_machines_state::mod2_bootleg_fixedret_f<Fixed>, traits...);
+ }
+ template<typename... T>
+ auto mod2_chr_blastbnk(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod2_machines_state::mod2_chr_blastbnk_f, traits...);
+ }
+ template<typename... T>
+ auto mod2_chr_copcash(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod2_machines_state::mod2_chr_copcash_f, traits...);
+ }
+ template<typename... T>
+ auto mod4psg(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod2_machines_state::mod4psg_f, traits...);
}
- void init_connect4();
- void init_m4actpak();
- void init_m4alladv();
- void init_m4alpha();
- void init_m4actclb();
void init_m4test();
private:
void mpu4_memmap_characteriser_rtc(address_map &map);
+
+ void ay8912_outport_w(uint8_t data);
};
+template<const uint8_t* Table> void mpu4mod2_machines_state::mod2_cheatchr_pal_f(machine_config &config)
+{
+ mod2_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod2_machines_state::mpu4_memmap_characteriser);
+
+ MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
+ m_characteriser->set_cpu_tag("maincpu");
+ m_characteriser->set_allow_6809_cheat(true);
+ m_characteriser->set_lamp_table(Table);
+}
+
+
+// bootleg mod2
+template<uint8_t Fixed> void mpu4mod2_machines_state::mod2_bootleg_fixedret_f(machine_config &config)
+{
+ mod2_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod2_machines_state::mpu4_memmap_bootleg_characteriser);
+
+ MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
+ m_characteriser_bl->set_bl_fixed_return(Fixed);
+}
+
void mpu4mod2_machines_state::mpu4_memmap_characteriser_rtc(address_map &map)
{
mpu4_memmap_characteriser(map);
@@ -57,6 +107,55 @@ void mpu4mod2_machines_state::mpu4_memmap_characteriser_rtc(address_map &map)
map(0x1000, 0x17ff).rw("rtc", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write));
}
+template<const uint8_t* Table> void mpu4mod2_machines_state::mod2_cheatchr_pal_rtc_f(machine_config &config)
+{
+ mod2_cheatchr_pal_f<Table>(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod2_machines_state::mpu4_memmap_characteriser_rtc);
+
+ M48T02(config, "rtc");
+}
+
+
+void mpu4mod2_machines_state::mod2_chr_blastbnk_f(machine_config &config)
+{
+ mod2_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod2_machines_state::mpu4_memmap_bl_characteriser_blastbank);
+
+ MPU4_CHARACTERISER_BL_BLASTBANK(config, m_characteriser_blastbank, 0);
+}
+
+void mpu4mod2_machines_state::mod2_chr_copcash_f(machine_config &config)
+{
+ mod2_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod2_machines_state::mpu4_memmap_bl_characteriser_blastbank);
+
+ MPU4_CHARACTERISER_BL_BLASTBANK(config, m_characteriser_blastbank, 0);
+ m_characteriser_blastbank->set_retxor(0x03);
+}
+
+
+
+void mpu4mod2_machines_state::ay8912_outport_w(uint8_t data)
+{
+ // TODO: figure out what maps here
+ logerror("%s: AY-3-8912 output port <- $%02X\n", machine().describe_context(), data);
+}
+
+void mpu4mod2_machines_state::mod4psg_f(machine_config &config)
+{
+ mpu4base(config);
+ AY8912(config, m_ay8913, MPU4_MASTER_CLOCK/4);
+ m_ay8913->port_a_write_callback().set(FUNC(mpu4mod2_machines_state::ay8912_outport_w));
+ m_ay8913->set_flags(AY8910_SINGLE_OUTPUT);
+ m_ay8913->set_resistors_load(820, 0, 0);
+ m_ay8913->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ m_ay8913->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+}
+
+
#include "m4actclb.lh"
#include "m4actpak.lh"
#include "m4alladv.lh"
@@ -66,15 +165,6 @@ void mpu4mod2_machines_state::mpu4_memmap_characteriser_rtc(address_map &map)
} // anonymous namespace
-
-void mpu4mod2_machines_state::init_connect4()
-{
- m_reels = 0; //reel-free game
- m_overcurrent_detect = true;
- setup_rom_banks();
-}
-
-
INPUT_PORTS_START( connect4 )
PORT_START("ORANGE1")
PORT_BIT(0xFF, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -290,38 +380,32 @@ ROM_START( m4stakeua )
ROM_LOAD( "stakeup.hex", 0x6000, 0x00a000, CRC(a7ac8f19) SHA1(ec87512e16ff0252012067ad655c3fcee1d2e908) ) // needs to be split
ROM_END
-void mpu4mod2_machines_state::init_m4actpak()
-{
- //Derived from Action_Pack_(Barcrest)_[C02_800_4jp].gam
- use_m4_hopper_tubes();
- use_m4_standard_reels();
- setup_rom_banks();
- //PCKEY =0
- //STKEY =0
- //JPKEY =0
- //JPSET =0
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=true
- //DIP2_6=false
- //DIP2_7=false
- //Sound barcrest1
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000
- //Front door code 0 Cash door code 0
-}
+//Derived from Action_Pack_(Barcrest)_[C02_800_4jp].gam
+//PCKEY =0
+//STKEY =0
+//JPKEY =0
+//JPSET =0
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=true
+//DIP2_6=false
+//DIP2_7=false
+//Sound barcrest1
+//Standard
+//Volume 0 Stereo= 1
+//Sample rate 16000
+//Front door code 0 Cash door code 0
ROM_START( m4actpak )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -334,38 +418,32 @@ ROM_START( m4actpaka )
ROM_LOAD( "action.hex", 0x0000, 0x010000, CRC(c5808b5d) SHA1(577950166c91e7f1ca390ebcf34be2da945c0a5f) )
ROM_END
-void mpu4mod2_machines_state::init_m4alladv()
-{
- //Derived from All_Cash_Advance_(Barcrest)_[C01_800_4jp].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_standard_reels();
- //PCKEY =0
- //STKEY =0
- //JPKEY =0
- //JPSET =0
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=false
- //DIP2_6=false
- //DIP2_7=false
- //Sound empire
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000
- //Front door code 0 Cash door code 0
-}
+//Derived from All_Cash_Advance_(Barcrest)_[C01_800_4jp].gam
+//PCKEY =0
+//STKEY =0
+//JPKEY =0
+//JPSET =0
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=false
+//DIP2_6=false
+//DIP2_7=false
+//Sound empire
+//Standard
+//Volume 0 Stereo= 1
+//Sample rate 16000
+//Front door code 0 Cash door code 0
ROM_START( m4alladv )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -897,38 +975,32 @@ ROM_START( m421 )
ROM_LOAD( "twentyone.bin", 0x0000, 0x010000, CRC(243f3bc1) SHA1(141df3dcdd8d70ad26a76ec071e0cd927357ee6e) )
ROM_END
-void mpu4mod2_machines_state::init_m4alpha()
-{
- //Derived from Alphabet_(Barcrest)_[C03_1024_4jp].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_standard_reels();
- //PCKEY =0
- //STKEY =0
- //JPKEY =0
- //JPSET =0
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=false
- //DIP2_6=false
- //DIP2_7=false
- //Sound empire
- //Standard
- //Volume 0 Stereo= 0
- //Sample rate 16000
- //Front door code 255 Cash door code 255
-}
+//Derived from Alphabet_(Barcrest)_[C03_1024_4jp].gam
+//PCKEY =0
+//STKEY =0
+//JPKEY =0
+//JPSET =0
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=false
+//DIP2_6=false
+//DIP2_7=false
+//Sound empire
+//Standard
+//Volume 0 Stereo= 0
+//Sample rate 16000
+//Front door code 255 Cash door code 255
ROM_START( m4alpha )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -1159,6 +1231,11 @@ ROM_START( m4wayina )
ROM_LOAD( "wi3.bin", 0x6000, 0x002000, CRC(1ba06ef1) SHA1(495c4e21a5b34cba0859e4e8fc842036c97ec063) )
ROM_END
+ROM_START( m4funh )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "funhouse.bin", 0x00000, 0x10000, CRC(4e342025) SHA1(288125ff5e3da7249d89dfcc3cd0915f791f7d43) )
+ROM_END
+
ROM_START( m4actbnka )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -1171,38 +1248,32 @@ ROM_START( m4actbnkb )
ROM_LOAD( "abank.hex", 0x6000, 0x00a000, CRC(2cd1a269) SHA1(5ce22b2736844a2de6cda04abdd0fe435391e033) ) // split me
ROM_END
-void mpu4mod2_machines_state::init_m4actclb()
-{
- //Derived from Action_Club_(Barcrest)_[C03_800_150jp]_[c].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_standard_reels();
- //PCKEY =0
- //STKEY =0
- //JPKEY =0
- //JPSET =0
- //DIP1_0=true
- //DIP1_1=true
- //DIP1_2=true
- //DIP1_3=true
- //DIP1_4=true
- //DIP1_5=true
- //DIP1_6=true
- //DIP1_7=true
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=true
- //DIP2_6=false
- //DIP2_7=false
- //Sound barcrest1
- //Standard
- //Volume 2 Stereo= 1
- //Sample rate 16000
- //Front door code 0 Cash door code 0
-}
+//Derived from Action_Club_(Barcrest)_[C03_800_150jp]_[c].gam
+//PCKEY =0
+//STKEY =0
+//JPKEY =0
+//JPSET =0
+//DIP1_0=true
+//DIP1_1=true
+//DIP1_2=true
+//DIP1_3=true
+//DIP1_4=true
+//DIP1_5=true
+//DIP1_6=true
+//DIP1_7=true
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=true
+//DIP2_6=false
+//DIP2_7=false
+//Sound barcrest1
+//Standard
+//Volume 2 Stereo= 1
+//Sample rate 16000
+//Front door code 0 Cash door code 0
ROM_START( m4actclb )
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -1701,266 +1772,267 @@ ROM_START( m4graffd )
ROM_LOAD( "grafittirom.bin", 0x0000, 0x010000, CRC(36135d6e) SHA1(e71eedabae36971739f8a6fd56a4a954de29944b) )
ROM_END
+using namespace mpu4_traits;
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
-GAME(199?, m4rsg, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Ready Steady Go (Barcrest) (MPU4, Mod 2 type) (RSG 1.2)",GAME_FLAGS )
-GAME(199?, m4rsga, m4rsg, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Ready Steady Go (Barcrest) (MPU4, Mod 2 type) (R4G 1.0)",GAME_FLAGS )
+GAME(199?, m4rsg, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Ready Steady Go (Barcrest) (MPU4, Mod 2 type) (RSG 1.2)",GAME_FLAGS )
+GAME(199?, m4rsga, m4rsg, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Ready Steady Go (Barcrest) (MPU4, Mod 2 type) (R4G 1.0)",GAME_FLAGS )
-GAME(199?, m4stopcl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Stop the Clock (Barcrest) (MPU4) (SC 2.5)",GAME_FLAGS )
+GAME(199?, m4stopcl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Stop the Clock (Barcrest) (MPU4) (SC 2.5)",GAME_FLAGS )
-GAME(199?, m4crkpot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Crackpot 100 Club (Barcrest) (MPU4) (C1P 1.2)",GAME_FLAGS )
-GAME(199?, m4crkpota, m4crkpot, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Crackpot 100 Club (Barcrest) (MPU4) (CP 3.8)",GAME_FLAGS )
-GAME(199?, m4crkpotb, m4crkpot, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Crackpot 100 Club (Barcrest) (MPU4) (CP 3.1)",GAME_FLAGS )
+GAME(199?, m4crkpot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Crackpot 100 Club (Barcrest) (MPU4) (C1P 1.2)",GAME_FLAGS )
+GAME(199?, m4crkpota, m4crkpot, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Crackpot 100 Club (Barcrest) (MPU4) (CP 3.8)",GAME_FLAGS )
+GAME(199?, m4crkpotb, m4crkpot, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Crackpot 100 Club (Barcrest) (MPU4) (CP 3.1)",GAME_FLAGS )
-GAME(199?, m4hiroll, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","High Roller (Barcrest) (Dutch) (MPU4) (HR 3.0)",GAME_FLAGS )
+GAME(199?, m4hiroll, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","High Roller (Barcrest) (Dutch) (MPU4) (HR 3.0)",GAME_FLAGS )
-GAME(199?, m4multcl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Multiplay Club (Barcrest) (MPU4, MP 2.8)",GAME_FLAGS )
+GAME(199?, m4multcl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Multiplay Club (Barcrest) (MPU4, MP 2.8)",GAME_FLAGS )
-GAME(199?, m4reelpk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Reel Poker (Barcrest) (MPU4) (R2P 3.0)",GAME_FLAGS )
+GAME(199?, m4reelpk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Reel Poker (Barcrest) (MPU4) (R2P 3.0)",GAME_FLAGS )
-GAME(199?, m4grbbnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Grab The Bank (Barcrest) (MPU4) (G4B 2.0)",GAME_FLAGS )
-GAME(199?, m4grbbnka, m4grbbnk, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Grab The Bank (Barcrest) (MPU4) (G4B 2.1)",GAME_FLAGS )
+GAME(199?, m4grbbnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Grab The Bank (Barcrest) (MPU4) (G4B 2.0)",GAME_FLAGS )
+GAME(199?, m4grbbnka, m4grbbnk, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Grab The Bank (Barcrest) (MPU4) (G4B 2.1)",GAME_FLAGS )
// doesn't run valid code, bad (missing a ROM)
-GAME(199?, m4grbbnkb, m4grbbnk, mod2_cheatchr, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Grab The Bank (Barcrest) (MPU4) (G4B 1.0)",GAME_FLAGS )
+GAME(199?, m4grbbnkb, m4grbbnk, mod2_cheatchr(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Grab The Bank (Barcrest) (MPU4) (G4B 1.0)",GAME_FLAGS )
-GAME(199?, m4sgrab, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Smash 'n' Grab (Barcrest) (MPU4) (SAG 1.0, set 1)",GAME_FLAGS )
-GAME(199?, m4sgraba, m4sgrab, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Smash 'n' Grab (Barcrest) (MPU4) (SAG 1.0, set 2)",GAME_FLAGS )
-GAME(199?, m4sgrabb, m4sgrab, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Smash 'n' Grab (Barcrest) (MPU4) (SAG 3.4)",GAME_FLAGS )
+GAME(199?, m4sgrab, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Smash 'n' Grab (Barcrest) (MPU4) (SAG 1.0, set 1)",GAME_FLAGS )
+GAME(199?, m4sgraba, m4sgrab, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Smash 'n' Grab (Barcrest) (MPU4) (SAG 1.0, set 2)",GAME_FLAGS )
+GAME(199?, m4sgrabb, m4sgrab, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Smash 'n' Grab (Barcrest) (MPU4) (SAG 3.4)",GAME_FLAGS )
-GAME(199?, m4potlck, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Pot Luck 100 Club (Barcrest) (MPU4) (P1L 2.2)",GAME_FLAGS )
-GAME(199?, m4potlcka, m4potlck, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Pot Luck 100 Club (Barcrest) (MPU4) (PL 2.7)",GAME_FLAGS )
+GAME(199?, m4potlck, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Pot Luck 100 Club (Barcrest) (MPU4) (P1L 2.2)",GAME_FLAGS )
+GAME(199?, m4potlcka, m4potlck, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Pot Luck 100 Club (Barcrest) (MPU4) (PL 2.7)",GAME_FLAGS )
-GAME(199?, m4wayin, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::wayin_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Super Way In (Barcrest) (MPU4) (WS 1.0)",GAME_FLAGS )
+GAME(199?, m4wayin, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::wayin_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Super Way In (Barcrest) (MPU4) (WS 1.0)",GAME_FLAGS )
// non-standard protection, hack?
-GAME(199?, m4wayina, m4wayin, mod2_bootleg_fixedret<0x40>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Way In Mk 2 (Barcrest) (bootleg) (MPU4)",GAME_FLAGS )
+GAME(199?, m4wayina, m4wayin, mod2_bootleg_fixedret<0x40>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Way In Mk 2 (Barcrest) (bootleg) (MPU4)",GAME_FLAGS )
-GAME(199?, m4stakeu, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Stake Up Club (Barcrest) (MPU4) (SU 4.4)",GAME_FLAGS )
-GAME(199?, m4stakeua, m4stakeu, mod2_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Stake Up Club (Barcrest) (MPU4) (SU 4.8)",GAME_FLAGS )
+GAME(199?, m4stakeu, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Stake Up Club (Barcrest) (MPU4) (SU 4.4)",GAME_FLAGS )
+GAME(199?, m4stakeua, m4stakeu, mod2_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Stake Up Club (Barcrest) (MPU4) (SU 4.8)",GAME_FLAGS )
-GAME(199?, m4clbclm, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Club Climber (Barcrest) (MPU4, C1C 3.3)",GAME_FLAGS )
-GAME(199?, m4clbclma, m4clbclm, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Club Climber (Barcrest) (MPU4, CC 4.5)",GAME_FLAGS )
+GAME(199?, m4clbclm, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Climber (Barcrest) (MPU4, C1C 3.3)",GAME_FLAGS )
+GAME(199?, m4clbclma, m4clbclm, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Climber (Barcrest) (MPU4, CC 4.5)",GAME_FLAGS )
-GAMEL(199?, m4actpak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4actpak, ROT0, "Barcrest","Action Pack (Barcrest) (MPU4) (AP 0.4)",GAME_FLAGS, layout_m4actpak )
-GAMEL(199?, m4actpaka,m4actpak, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4actpak, ROT0, "Barcrest","Action Pack (Barcrest) (MPU4) (AP 0.5)",GAME_FLAGS, layout_m4actpak )
+GAMEL(199?, m4actpak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R4, RT1, HT), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Action Pack (Barcrest) (MPU4) (AP 0.4)",GAME_FLAGS, layout_m4actpak )
+GAMEL(199?, m4actpaka,m4actpak, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R4, RT1, HT), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Action Pack (Barcrest) (MPU4) (AP 0.5)",GAME_FLAGS, layout_m4actpak )
-GAMEL(199?, m4alladv, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::buc_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4alladv, ROT0, "Barcrest","All Cash Advance (Barcrest) (MPU4) (C2B 6.0)",GAME_FLAGS, layout_m4alladv )
+GAMEL(199?, m4alladv, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::buc_characteriser_prot>(R4, RT1, HT), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","All Cash Advance (Barcrest) (MPU4) (C2B 6.0)",GAME_FLAGS, layout_m4alladv )
-GAME(199?, m4clbdbl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Club Double (Barcrest) (MPU4) (CD 1.6)",GAME_FLAGS )
+GAME(199?, m4clbdbl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Double (Barcrest) (MPU4) (CD 1.6)",GAME_FLAGS )
-GAME(199?, m4hittp2, m4hittop, mod2_cheatchr_pal<mpu4_characteriser_pal::hittop_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 1)",GAME_FLAGS )
-GAME(199?, m4hittp2a, m4hittop, mod2_cheatchr_pal<mpu4_characteriser_pal::hittop_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 2)",GAME_FLAGS )
+GAME(199?, m4hittp2, m4hittop, mod2_cheatchr_pal<mpu4_characteriser_pal::hittop_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 1)",GAME_FLAGS )
+GAME(199?, m4hittp2a, m4hittop, mod2_cheatchr_pal<mpu4_characteriser_pal::hittop_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 2)",GAME_FLAGS )
-GAME(199?, m4toptena, m4topten, mod2_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top Tenner (Barcrest) (MPU4, Mod 2 type, TP 2.7)",GAME_FLAGS )
+GAME(199?, m4toptena, m4topten, mod2_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top Tenner (Barcrest) (MPU4, Mod 2 type, TP 2.7)",GAME_FLAGS )
-GAME(199?, m4toplot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::toplot_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top The Lot (Barcrest) (MPU4, T4L 1.0)",GAME_FLAGS )
+GAME(199?, m4toplot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::toplot_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top The Lot (Barcrest) (MPU4, T4L 1.0)",GAME_FLAGS )
-GAME(199?, m4topgr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::topgear_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top Gear (Barcrest) (MPU4) (TG4 1.1)",GAME_FLAGS )
+GAME(199?, m4topgr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::topgear_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top Gear (Barcrest) (MPU4) (TG4 1.1)",GAME_FLAGS )
-GAME(199?, m4bj, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Black Jack (Barcrest) (Dutch) (MPU4) (BJ 1.6)",GAME_FLAGS )
+GAME(199?, m4bj, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Black Jack (Barcrest) (Dutch) (MPU4) (BJ 1.6)",GAME_FLAGS )
-GAME(199?, m4flash, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Flash Cash (Barcrest) (MPU4, FC 1.0)",GAME_FLAGS )
+GAME(199?, m4flash, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Flash Cash (Barcrest) (MPU4, FC 1.0)",GAME_FLAGS )
-GAME(199?, m4swpnot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Swap-A-Note (Barcrest) (MPU4) (SN 3.3)",GAME_FLAGS )
-GAME(199?, m4swpnota, m4swpnot, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Swap-A-Note (Barcrest) (MPU4) (SN 3.2)",GAME_FLAGS )
-GAME(199?, m4swpnotb, m4swpnot, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Swap-A-Note (Barcrest) (MPU4) (SN 3.5)",GAME_FLAGS ) // was in a set named Centrepoint, but clearly fits here
+GAME(199?, m4swpnot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Swap-A-Note (Barcrest) (MPU4) (SN 3.3)",GAME_FLAGS )
+GAME(199?, m4swpnota, m4swpnot, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Swap-A-Note (Barcrest) (MPU4) (SN 3.2)",GAME_FLAGS )
+GAME(199?, m4swpnotb, m4swpnot, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Swap-A-Note (Barcrest) (MPU4) (SN 3.5)",GAME_FLAGS ) // was in a set named Centrepoint, but clearly fits here
-GAME(199?, m4actnot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Action Note (Barcrest) (MPU4) (AN 1.2)",GAME_FLAGS )
+GAME(199?, m4actnot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Action Note (Barcrest) (MPU4) (AN 1.2)",GAME_FLAGS )
-GAME(199?, m4cardcs, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Card Cash (Barcrest) (MPU4) (CCS 1.9)",GAME_FLAGS )
+GAME(199?, m4cardcs, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Card Cash (Barcrest) (MPU4) (CCS 1.9)",GAME_FLAGS )
-GAME(199?, m4bnknot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Bank A Note (Barcrest) (MPU4) (BN 1.0)",GAME_FLAGS )
+GAME(199?, m4bnknot, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Bank A Note (Barcrest) (MPU4) (BN 1.0)",GAME_FLAGS )
-GAME(199?, m4moneym, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Money Maker (Barcrest) (MPU4) (MMK 1.6)",GAME_FLAGS )
+GAME(199?, m4moneym, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Money Maker (Barcrest) (MPU4) (MMK 1.6)",GAME_FLAGS )
// this and Cash Counter might be swapped around
-GAME(199?, m4cashcn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Connect (Barcrest) (MPU4) (CCO 3.2)",GAME_FLAGS )
+GAME(199?, m4cashcn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Connect (Barcrest) (MPU4) (CCO 3.2)",GAME_FLAGS )
-GAME(199?, m4cashco, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (C3 2.4)",GAME_FLAGS )
-GAME(199?, m4cashcoa, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (C3 1.8)",GAME_FLAGS )
-GAME(199?, m4cashcob, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (CO 0.5)",GAME_FLAGS )
-GAME(199?, m4cashcoc, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (C3 3.1)",GAME_FLAGS )
-GAME(199?, m4cashcod, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Connect (Barcrest) (MPU4) (C3 2.0)",GAME_FLAGS )
+GAME(199?, m4cashco, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (C3 2.4)",GAME_FLAGS )
+GAME(199?, m4cashcoa, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (C3 1.8)",GAME_FLAGS )
+GAME(199?, m4cashcob, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (CO 0.5)",GAME_FLAGS )
+GAME(199?, m4cashcoc, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Counter (Barcrest) (MPU4) (C3 3.1)",GAME_FLAGS )
+GAME(199?, m4cashcod, m4cashco, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Connect (Barcrest) (MPU4) (C3 2.0)",GAME_FLAGS )
// unusual input mapping
-GAME(199?, m4cashmx, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::cashmx_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 1)",GAME_FLAGS ) // hangs during play
-GAME(199?, m4cashmxa, m4cashmx, mod2_cheatchr_pal<mpu4_characteriser_pal::cashmx_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 2)",GAME_FLAGS ) // hangs during play
+GAME(199?, m4cashmx, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::cashmx_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 1)",GAME_FLAGS ) // hangs during play
+GAME(199?, m4cashmxa, m4cashmx, mod2_cheatchr_pal<mpu4_characteriser_pal::cashmx_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 2)",GAME_FLAGS ) // hangs during play
-GAME(199?, m4cashzn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Zone (Barcrest) (MPU4) (CAZ 1.2)",GAME_FLAGS )
-GAME(199?, m4cashzna, m4cashzn, mod2_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cash Zone (Barcrest) (MPU4) (CAZ 1.5)",GAME_FLAGS )
+GAME(199?, m4cashzn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Zone (Barcrest) (MPU4) (CAZ 1.2)",GAME_FLAGS )
+GAME(199?, m4cashzna, m4cashzn, mod2_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cash Zone (Barcrest) (MPU4) (CAZ 1.5)",GAME_FLAGS )
// non-standard protection
-GAME(199?, m4czne, m4cashzn, mod2_bootleg_fixedret<0x9a>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg?","Cash Zone (bootleg) (MPU4) (CAZ 1.5)",GAME_FLAGS )
+GAME(199?, m4czne, m4cashzn, mod2_bootleg_fixedret<0x9a>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg?","Cash Zone (bootleg) (MPU4) (CAZ 1.5)",GAME_FLAGS )
-GAME(199?, m4dblup, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Double Up (Barcrest) (MPU4) (DU 1.5)",GAME_FLAGS ) // token alarm
+GAME(199?, m4dblup, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Double Up (Barcrest) (MPU4) (DU 1.5)",GAME_FLAGS ) // token alarm
-GAME(199?, m4eighth, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Eighth Wonder (Barcrest) (MPU4) (WON 2.2)",GAME_FLAGS )
+GAME(199?, m4eighth, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Eighth Wonder (Barcrest) (MPU4) (WON 2.2)",GAME_FLAGS )
//
-GAME(199?, m4eightha, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 1)",GAME_FLAGS )
-GAME(199?, m4eighthb, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 2)",GAME_FLAGS )
-GAME(199?, m4eighthc, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 3)",GAME_FLAGS )
-GAME(199?, m4eighthd, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 4, bad?)",GAME_FLAGS )
-GAME(199?, m4eighthe, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 5)",GAME_FLAGS )
-GAME(199?, m4eighthf, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 6)",GAME_FLAGS )
-GAME(199?, m4eighthg, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 7)",GAME_FLAGS )
+GAME(199?, m4eightha, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 1)",GAME_FLAGS )
+GAME(199?, m4eighthb, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 2)",GAME_FLAGS )
+GAME(199?, m4eighthc, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 3)",GAME_FLAGS )
+GAME(199?, m4eighthd, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 4, bad?)",GAME_FLAGS )
+GAME(199?, m4eighthe, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 5)",GAME_FLAGS )
+GAME(199?, m4eighthf, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 6)",GAME_FLAGS )
+GAME(199?, m4eighthg, m4eighth, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 7)",GAME_FLAGS )
-GAME(199?, m4frtprs, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 1)",GAME_FLAGS )
-GAME(199?, m4frtprsa, m4frtprs, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 2)",GAME_FLAGS )
+GAME(199?, m4frtprs, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 1)",GAME_FLAGS )
+GAME(199?, m4frtprsa, m4frtprs, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 2)",GAME_FLAGS )
-GAME(199?, m4gldstr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU4) (G4S 2.0)",GAME_FLAGS )
+GAME(199?, m4gldstr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Gold Strike (Barcrest) (MPU4) (G4S 2.0)",GAME_FLAGS )
-GAME(199?, m4grands, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::grandclub_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Grandstand Club (Barcrest) (MPU4) (G2D 4.0)",GAME_FLAGS )
-GAME(199?, m4grandsa, m4grands, mod2_cheatchr_pal<mpu4_characteriser_pal::grandclub_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Grandstand Club (Barcrest) (MPU4) (GD 1.1)",GAME_FLAGS )
+GAME(199?, m4grands, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::grandclub_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Grandstand Club (Barcrest) (MPU4) (G2D 4.0)",GAME_FLAGS )
+GAME(199?, m4grandsa, m4grands, mod2_cheatchr_pal<mpu4_characteriser_pal::grandclub_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Grandstand Club (Barcrest) (MPU4) (GD 1.1)",GAME_FLAGS )
-GAME(199?, m4intcep, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Interceptor (Barcrest) (MPU4) (INT 3.0)",GAME_FLAGS ) // set % key
-GAME(199?, m4intcepa, m4intcep, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Interceptor (Barcrest) (MPU4) (INT 3.0X)",GAME_FLAGS ) // set % key
+GAME(199?, m4intcep, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Interceptor (Barcrest) (MPU4) (INT 3.0)",GAME_FLAGS ) // set % key
+GAME(199?, m4intcepa, m4intcep, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Interceptor (Barcrest) (MPU4) (INT 3.0X)",GAME_FLAGS ) // set % key
// non-standard protection? hack?
-GAME(199?, m4intcepb, m4intcep, mod2_bootleg_fixedret<0x9a>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "hack?","Interceptor (Barcrest) (MPU4) (INT 1.1)",GAME_FLAGS )
+GAME(199?, m4intcepb, m4intcep, mod2_bootleg_fixedret<0x9a>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "hack?","Interceptor (Barcrest) (MPU4) (INT 1.1)",GAME_FLAGS )
-GAME(199?, m4megbks, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 4.1X)",GAME_FLAGS )
-GAME(199?, m4megbksa, m4megbks, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 4.1CX)",GAME_FLAGS )
-GAME(199?, m4megbksb, m4megbks, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 4.1XD)",GAME_FLAGS )
-GAME(199?, m4megbksc, m4megbks, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 3.1)",GAME_FLAGS )
+GAME(199?, m4megbks, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 4.1X)",GAME_FLAGS )
+GAME(199?, m4megbksa, m4megbks, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 4.1CX)",GAME_FLAGS )
+GAME(199?, m4megbksb, m4megbks, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 4.1XD)",GAME_FLAGS )
+GAME(199?, m4megbksc, m4megbks, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Mega Bucks (Barcrest) (MPU4) (BUC 3.1)",GAME_FLAGS )
-GAME(199?, m4mirage, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Mirage (Barcrest) (MPU4) (RAG 4.1)",GAME_FLAGS )
+GAME(199?, m4mirage, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Mirage (Barcrest) (MPU4) (RAG 4.1)",GAME_FLAGS )
-GAME(199?, m4nifty, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nifty Fifty (Barcrest) (MPU4) (NF 2.0)",GAME_FLAGS )
-GAME(199?, m4niftya, m4nifty, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 1)",GAME_FLAGS )
-GAME(199?, m4niftyb, m4nifty, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 2)",GAME_FLAGS )
+GAME(199?, m4nifty, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nifty Fifty (Barcrest) (MPU4) (NF 2.0)",GAME_FLAGS )
+GAME(199?, m4niftya, m4nifty, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 1)",GAME_FLAGS )
+GAME(199?, m4niftyb, m4nifty, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 2)",GAME_FLAGS )
-GAME(199?, m4nudqst, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nudge Quest (Barcrest) (MPU4) (NQ 2.0)",GAME_FLAGS )
+GAME(199?, m4nudqst, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nudge Quest (Barcrest) (MPU4) (NQ 2.0)",GAME_FLAGS )
-GAME(199?, m4r2r, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Reel 2 Reel (Barcrest) (MPU4) (RR 3.0)",GAME_FLAGS )
+GAME(199?, m4r2r, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Reel 2 Reel (Barcrest) (MPU4) (RR 3.0)",GAME_FLAGS )
-GAME(199?, m4runawy, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Runaway Trail (Barcrest) (MPU4) (R4T 1.1)",GAME_FLAGS )
-GAME(199?, m4runawyb, m4runawy, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Runaway Trail (Barcrest) (MPU4) (R4T 1.3)",GAME_FLAGS )
+GAME(199?, m4runawy, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Runaway Trail (Barcrest) (MPU4) (R4T 1.1)",GAME_FLAGS )
+GAME(199?, m4runawyb, m4runawy, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Runaway Trail (Barcrest) (MPU4) (R4T 1.3)",GAME_FLAGS )
-GAME(199?, m4silshd, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Silver Shadow (Barcrest) (MPU4)",GAME_FLAGS )
+GAME(199?, m4silshd, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Silver Shadow (Barcrest) (MPU4)",GAME_FLAGS )
// these don't boot (bad dumps)
-GAME(199?, m4silshda, m4silshd, mod2_cheatchr, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 1)",GAME_FLAGS )
-GAME(199?, m4silshdb, m4silshd, mod2_cheatchr, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 2)",GAME_FLAGS )
+GAME(199?, m4silshda, m4silshd, mod2_cheatchr(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 1)",GAME_FLAGS )
+GAME(199?, m4silshdb, m4silshd, mod2_cheatchr(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 2)",GAME_FLAGS )
-GAME(199?, m4solsil, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Solid Silver Club (Barcrest) (MPU4) (SOS 2.2)",GAME_FLAGS )
-GAME(199?, m4solsila, m4solsil, mod2_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Solid Silver Club (Barcrest) (MPU4) (SOS 2.1)",GAME_FLAGS )
+GAME(199?, m4solsil, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Solid Silver Club (Barcrest) (MPU4) (SOS 2.2)",GAME_FLAGS )
+GAME(199?, m4solsila, m4solsil, mod2_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Solid Silver Club (Barcrest) (MPU4) (SOS 2.1)",GAME_FLAGS )
-GAME(199?, m4starbr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::starsbars_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Stars And Bars (Barcrest) (Dutch) (MPU4) (DSB 2.8)",GAME_FLAGS )
+GAME(199?, m4starbr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::starsbars_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Stars And Bars (Barcrest) (Dutch) (MPU4) (DSB 2.8)",GAME_FLAGS )
-GAME(199?, m4sunset, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BSB 0.4)",GAME_FLAGS )
-GAME(199?, m4sb5, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BSB 0.3)",GAME_FLAGS )
+GAME(199?, m4sunset, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BSB 0.4)",GAME_FLAGS )
+GAME(199?, m4sb5, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::eighth_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BSB 0.3)",GAME_FLAGS )
//
-GAME(199?, m4sunsetd, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetb_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SBU 2.0)",GAME_FLAGS )
+GAME(199?, m4sunsetd, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetb_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SBU 2.0)",GAME_FLAGS )
//
-GAME(199?, m4sunsete, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.1)",GAME_FLAGS )
-GAME(199?, m4sunsetf, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 1)",GAME_FLAGS )
-GAME(199?, m4sunsetg, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 2)",GAME_FLAGS )
-GAME(199?, m4sunseth, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 3, bad)",GAME_FLAGS )
-GAME(199?, m4sunseti, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 4)",GAME_FLAGS )
-GAME(199?, m4sunsetj, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 5)",GAME_FLAGS )
+GAME(199?, m4sunsete, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.1)",GAME_FLAGS )
+GAME(199?, m4sunsetf, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 1)",GAME_FLAGS )
+GAME(199?, m4sunsetg, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 2)",GAME_FLAGS )
+GAME(199?, m4sunseth, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 3, bad)",GAME_FLAGS )
+GAME(199?, m4sunseti, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 4)",GAME_FLAGS )
+GAME(199?, m4sunsetj, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::sunsetbalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 5)",GAME_FLAGS )
//
-GAME(199?, m4sunsetk, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.1)",GAME_FLAGS )
-GAME(199?, m4sunsetl, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 1)",GAME_FLAGS )
-GAME(199?, m4sunsetm, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 2)",GAME_FLAGS )
-GAME(199?, m4sunsetn, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 3)",GAME_FLAGS )
-GAME(199?, m4sunseto, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 4)",GAME_FLAGS )
-GAME(199?, m4sunsetp, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 5)",GAME_FLAGS )
-GAME(199?, m4sunsetq, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 6)",GAME_FLAGS )
-GAME(199?, m4sunsetr, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 7)",GAME_FLAGS )
-GAME(199?, m4sunsets, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 8)",GAME_FLAGS )
-GAME(199?, m4sunsett, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 9)",GAME_FLAGS )
+GAME(199?, m4sunsetk, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.1)",GAME_FLAGS )
+GAME(199?, m4sunsetl, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 1)",GAME_FLAGS )
+GAME(199?, m4sunsetm, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 2)",GAME_FLAGS )
+GAME(199?, m4sunsetn, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 3)",GAME_FLAGS )
+GAME(199?, m4sunseto, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 4)",GAME_FLAGS )
+GAME(199?, m4sunsetp, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 5)",GAME_FLAGS )
+GAME(199?, m4sunsetq, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 6)",GAME_FLAGS )
+GAME(199?, m4sunsetr, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 7)",GAME_FLAGS )
+GAME(199?, m4sunsets, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 8)",GAME_FLAGS )
+GAME(199?, m4sunsett, m4sunset, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 9)",GAME_FLAGS )
// non-standard protection
-GAME(199?, m4sunsetc, m4sunset, mod2_bootleg_fixedret<0xd0>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Sunset Boulevard (Barcrest) (bootleg) (MPU4) (OSB 0.2)",GAME_FLAGS )
+GAME(199?, m4sunsetc, m4sunset, mod2_bootleg_fixedret<0xd0>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Sunset Boulevard (Barcrest) (bootleg) (MPU4) (OSB 0.2)",GAME_FLAGS )
-GAME(199?, m4supslt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Supa Slot (Barcrest) (MPU4) (S4S 1.0)",GAME_FLAGS )
+GAME(199?, m4supslt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Supa Slot (Barcrest) (MPU4) (S4S 1.0)",GAME_FLAGS )
-GAME(199?, m4suptub, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 1)",GAME_FLAGS )
-GAME(199?, m4suptuba, m4suptub, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 2)",GAME_FLAGS )
+GAME(199?, m4suptub, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 1)",GAME_FLAGS )
+GAME(199?, m4suptuba, m4suptub, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 2)",GAME_FLAGS )
-GAME(199?, m4suptwo, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Super Two (Barcrest) (MPU4) (SUT 1.2)",GAME_FLAGS ) // set % key
+GAME(199?, m4suptwo, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Super Two (Barcrest) (MPU4) (SUT 1.2)",GAME_FLAGS ) // set % key
-GAME(199?, m4tiktak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tictak_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Tic Tak Cash (Barcrest) (MPU4) (TC 1.1)",GAME_FLAGS )
+GAME(199?, m4tiktak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tictak_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Tic Tak Cash (Barcrest) (MPU4) (TC 1.1)",GAME_FLAGS )
// these have the same version number but use different protection PALs, is one modified?
-GAME(199?, m4topact, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::topaction_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top Action (Barcrest) (Dutch) (MPU4) (TA 2.2, set 1)",GAME_FLAGS )
+GAME(199?, m4topact, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::topaction_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top Action (Barcrest) (Dutch) (MPU4) (TA 2.2, set 1)",GAME_FLAGS )
//
-GAME(199?, m4topacta, m4topact, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top Action (Barcrest) (Dutch) (MPU4) (TA 2.2, set 2)",GAME_FLAGS )
+GAME(199?, m4topacta, m4topact, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top Action (Barcrest) (Dutch) (MPU4) (TA 2.2, set 2)",GAME_FLAGS )
-GAME(199?, m4topst, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top Stop (Barcrest) (MPU4) (TSP 0.5)",GAME_FLAGS )
+GAME(199?, m4topst, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top Stop (Barcrest) (MPU4) (TSP 0.5)",GAME_FLAGS )
-GAME(199?, m4toptak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top Take (Barcrest) (MPU4) (TTK 1.1)",GAME_FLAGS )
+GAME(199?, m4toptak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top Take (Barcrest) (MPU4) (TTK 1.1)",GAME_FLAGS )
-GAME(199?, m4tribnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tribank_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Triple Bank (Barcrest) (Dutch) (MPU4) (DTB 1.2)",GAME_FLAGS )
+GAME(199?, m4tribnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tribank_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Triple Bank (Barcrest) (Dutch) (MPU4) (DTB 1.2)",GAME_FLAGS )
// unprotected
-GAME(199?, m4tupen, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Tuppenny Cracker (unprotected bootleg) (MPU4)",GAME_FLAGS ) // bootleg of Barcrest game
+GAME(199?, m4tupen, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Tuppenny Cracker (unprotected bootleg) (MPU4)",GAME_FLAGS ) // bootleg of Barcrest game
-GAME(199?, m421, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Twenty One (Barcrest) (Dutch) (MPU4) (DTO 2.0)",GAME_FLAGS )
+GAME(199?, m421, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Twenty One (Barcrest) (Dutch) (MPU4) (DTO 2.0)",GAME_FLAGS )
-GAMEL(199?, m4alpha, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4alpha, ROT0, "Barcrest","Alphabet (Barcrest) (MPU4) (A4B 1.0)",GAME_FLAGS, layout_m4alpha )
+GAMEL(199?, m4alpha, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>(R4, RT1, HT), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Alphabet (Barcrest) (MPU4) (A4B 1.0)",GAME_FLAGS, layout_m4alpha )
-GAME(199?, m4bjack, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Black Jack (Barcrest) (MPU4) (B2J 2.2)",GAME_FLAGS )
-GAME(199?, m4bjacka, m4bjack, mod2_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Black Jack (Barcrest) (MPU4) (BLA 2.0)",GAME_FLAGS )
+GAME(199?, m4bjack, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Black Jack (Barcrest) (MPU4) (B2J 2.2)",GAME_FLAGS )
+GAME(199?, m4bjacka, m4bjack, mod2_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Black Jack (Barcrest) (MPU4) (BLA 2.0)",GAME_FLAGS )
-GAME(199?, m4bjsm, 0, mod2_cheatchr_pal_rtc<mpu4_characteriser_pal::sunsetb_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Blackjack Super Multi (Barcrest) (German) (MPU4) (SM H1.6)",GAME_FLAGS )
-GAME(199?, m4bjsma, m4bjsm, mod2_cheatchr_pal_rtc<mpu4_characteriser_pal::sunsetb_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Blackjack Super Multi (Barcrest) (MPU4) (SM 1.6)",GAME_FLAGS ) // is this a different game?
+GAME(199?, m4bjsm, 0, mod2_cheatchr_pal_rtc<mpu4_characteriser_pal::sunsetb_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Blackjack Super Multi (Barcrest) (German) (MPU4) (SM H1.6)",GAME_FLAGS )
+GAME(199?, m4bjsma, m4bjsm, mod2_cheatchr_pal_rtc<mpu4_characteriser_pal::sunsetb_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Blackjack Super Multi (Barcrest) (MPU4) (SM 1.6)",GAME_FLAGS ) // is this a different game?
-GAME(198?, m4supsl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest", "Supa Silva (Barcrest) (MPU4) (SS2V 1.0)",GAME_FLAGS )
+GAME(198?, m4supsl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest", "Supa Silva (Barcrest) (MPU4) (SS2V 1.0)",GAME_FLAGS )
-GAME(199?, m4flshlt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 1)",GAME_FLAGS )
-GAME(199?, m4flshltb, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 2)",GAME_FLAGS )
-GAME(199?, m4flshltc, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 3)",GAME_FLAGS )
-GAME(199?, m4flshltd, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 4)",GAME_FLAGS )
-GAME(199?, m4flshlte, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 5)",GAME_FLAGS )
-GAME(199?, m4flshltf, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 6)",GAME_FLAGS )
-GAME(199?, m4flshltg, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 7)",GAME_FLAGS )
+GAME(199?, m4flshlt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 1)",GAME_FLAGS )
+GAME(199?, m4flshltb, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 2)",GAME_FLAGS )
+GAME(199?, m4flshltc, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 3)",GAME_FLAGS )
+GAME(199?, m4flshltd, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 4)",GAME_FLAGS )
+GAME(199?, m4flshlte, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 5)",GAME_FLAGS )
+GAME(199?, m4flshltf, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 6)",GAME_FLAGS )
+GAME(199?, m4flshltg, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (FLT 1.0, set 7)",GAME_FLAGS )
//
-GAME(199?, m4flshlta, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::berseralt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Flashlite (BWB) (MPU4) (BFL 0.5)",GAME_FLAGS )
+GAME(199?, m4flshlta, m4flshlt, mod2_cheatchr_pal<mpu4_characteriser_pal::berseralt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Flashlite (BWB) (MPU4) (BFL 0.5)",GAME_FLAGS )
-GAME(199?, m4blflsh, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Blue Flash (BWB) (MPU4) (TBF 0.3)",GAME_FLAGS )
-GAME(199?, m4blflsha, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 1)",GAME_FLAGS )
-GAME(199?, m4blflshb, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 2)",GAME_FLAGS )
-GAME(199?, m4blflshc, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 3)",GAME_FLAGS )
-GAME(199?, m4blflshd, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 4)",GAME_FLAGS )
-GAME(199?, m4blflshe, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 5)",GAME_FLAGS )
+GAME(199?, m4blflsh, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Blue Flash (BWB) (MPU4) (TBF 0.3)",GAME_FLAGS )
+GAME(199?, m4blflsha, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 1)",GAME_FLAGS )
+GAME(199?, m4blflshb, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 2)",GAME_FLAGS )
+GAME(199?, m4blflshc, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 3)",GAME_FLAGS )
+GAME(199?, m4blflshd, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 4)",GAME_FLAGS )
+GAME(199?, m4blflshe, m4blflsh, mod2_cheatchr_pal<mpu4_characteriser_pal::blueflash_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Blue Flash (BWB) (MPU4) (BFL 0.3, set 5)",GAME_FLAGS )
-GAME(199?, m4ttak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Tic Tac Take (Barcrest) (MPU4) (TIC 2.0)",GAME_FLAGS )
+GAME(199?, m4ttak, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Tic Tac Take (Barcrest) (MPU4) (TIC 2.0)",GAME_FLAGS )
-GAME(199?, m4actbnka, m4actbnk, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4jackpot8tkn, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Action Bank (Barcrest) (Mod 2 type, AC3.0) (MPU4)",GAME_FLAGS ) // set jackpot key to 8GBP TOKEN & stake key
-GAME(199?, m4actbnkb, m4actbnk, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4jackpot8tkn, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Action Bank (Barcrest) (Mod 2 type, ACT2.0) (MPU4)",GAME_FLAGS )
+GAME(199?, m4actbnka, m4actbnk, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1), mpu4jackpot8tkn, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Action Bank (Barcrest) (Mod 2 type, AC3.0) (MPU4)",GAME_FLAGS ) // set jackpot key to 8GBP TOKEN & stake key
+GAME(199?, m4actbnkb, m4actbnk, mod2_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1), mpu4jackpot8tkn, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Action Bank (Barcrest) (Mod 2 type, ACT2.0) (MPU4)",GAME_FLAGS )
-GAMEL(199?, m4actclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::kqee2_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4actclb, ROT0, "Barcrest","Action Club (Barcrest) (MPU4) (ABV 1.9)",GAME_FLAGS, layout_m4actclb ) // set stake to boot
+GAMEL(199?, m4actclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::kqee2_characteriser_prot>(R4, RT1, HT), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Action Club (Barcrest) (MPU4) (ABV 1.9)",GAME_FLAGS, layout_m4actclb ) // set stake to boot
//
-GAMEL(199?, m4actclba,m4actclb, mod2_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4actclb, ROT0, "Barcrest","Action Club (Barcrest) (MPU4) (A2C 1.1)",GAME_FLAGS, layout_m4actclb ) // ^^
+GAMEL(199?, m4actclba,m4actclb, mod2_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Action Club (Barcrest) (MPU4) (A2C 1.1)",GAME_FLAGS, layout_m4actclb ) // ^^
-GAME(199?, m4bluemn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Blue Moon (Barcrest) (MPU4) (BLU 2.3)",GAME_FLAGS )
-GAME(199?, m4bluemna, m4bluemn, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Blue Moon (Barcrest) (MPU4) (BLU 2.1)",GAME_FLAGS )
+GAME(199?, m4bluemn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Blue Moon (Barcrest) (MPU4) (BLU 2.3)",GAME_FLAGS )
+GAME(199?, m4bluemna, m4bluemn, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Blue Moon (Barcrest) (MPU4) (BLU 2.1)",GAME_FLAGS )
// not using standard protection, hack?
-GAME(199?, m4bluemnb, m4bluemn, mod2_bootleg_fixedret<0x51>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "hack?","Blue Moon (Barcrest) (MPU4) (BLU 1.1)",GAME_FLAGS )
+GAME(199?, m4bluemnb, m4bluemn, mod2_bootleg_fixedret<0x51>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "hack?","Blue Moon (Barcrest) (MPU4) (BLU 1.1)",GAME_FLAGS )
-GAME(199?, m4take2, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Take Two (Barcrest) (MPU4) (TTO 1.2)",GAME_FLAGS )
+GAME(199?, m4take2, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Take Two (Barcrest) (MPU4) (TTO 1.2)",GAME_FLAGS )
// not using standard protection, hack?
-GAME(199?, m4take2a, m4take2, mod2_bootleg_fixedret<0x11>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Take Two (Barcrest) (MPU4) (TTO 1.1) (set 1)",GAME_FLAGS )
-GAME(199?, m4t266, m4take2, mod2_bootleg_fixedret<0x11>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Take Two (Barcrest) (MPU4) (TTO 1.1) (set 2)",GAME_FLAGS )
+GAME(199?, m4take2a, m4take2, mod2_bootleg_fixedret<0x11>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Take Two (Barcrest) (MPU4) (TTO 1.1) (set 1)",GAME_FLAGS )
+GAME(199?, m4t266, m4take2, mod2_bootleg_fixedret<0x11>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Take Two (Barcrest) (MPU4) (TTO 1.1) (set 2)",GAME_FLAGS )
-GAME(199?, m4pont, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pontoon_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Pontoon Club (Barcrest) (MPU4) (PON 3.0)",GAME_FLAGS ) // set stake to boot
-GAME(199?, m4ponta, m4pont, mod2_cheatchr_pal<mpu4_characteriser_pal::pontoon_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Pontoon Club (Barcrest) (MPU4) (PON 4.0)",GAME_FLAGS )// ^^
+GAME(199?, m4pont, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pontoon_characteriser_prot>(R4, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Pontoon Club (Barcrest) (MPU4) (PON 3.0)",GAME_FLAGS ) // set stake to boot
+GAME(199?, m4ponta, m4pont, mod2_cheatchr_pal<mpu4_characteriser_pal::pontoon_characteriser_prot>(R4, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Pontoon Club (Barcrest) (MPU4) (PON 4.0)",GAME_FLAGS )// ^^
-GAME(199?, m4loadmn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Loads A Money (Barcrest) (MPU4) (LA 1.0)",GAME_FLAGS )
-GAME(199?, m4loadmna, m4loadmn, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Loads A Money (Barcrest) (MPU4) (LA 1.1, set 1)",GAME_FLAGS )
-GAME(199?, m4loadmnb, m4loadmn, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Loads A Money (Barcrest) (MPU4) (LA 1.1, set 2)",GAME_FLAGS )
+GAME(199?, m4loadmn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Loads A Money (Barcrest) (MPU4) (LA 1.0)",GAME_FLAGS )
+GAME(199?, m4loadmna, m4loadmn, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Loads A Money (Barcrest) (MPU4) (LA 1.1, set 1)",GAME_FLAGS )
+GAME(199?, m4loadmnb, m4loadmn, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Loads A Money (Barcrest) (MPU4) (LA 1.1, set 2)",GAME_FLAGS )
-GAME(199?, m4celclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Celebration Club (Barcrest) (MPU4) (CEL 1.5)",GAME_FLAGS ) // set stake
+GAME(199?, m4celclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>(R4, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Celebration Club (Barcrest) (MPU4) (CEL 1.5)",GAME_FLAGS ) // set stake
-GAME(199?, m4centpt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Centrepoint (Barcrest) (MPU4) (DU 1.3)",GAME_FLAGS )
+GAME(199?, m4centpt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Centrepoint (Barcrest) (MPU4) (DU 1.3)",GAME_FLAGS )
-GAME(199?, m4clbcls, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m533_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Club Classic (Barcrest) (MPU4) (CI 1.1)",GAME_FLAGS ) // set stake
+GAME(199?, m4clbcls, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m533_characteriser_prot>(R4, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Classic (Barcrest) (MPU4) (CI 1.1)",GAME_FLAGS ) // set stake
-GAME(199?, m4c999, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tictak_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cloud 999 (Barcrest) (MPU4) (CLN 4.0 V)",GAME_FLAGS )
+GAME(199?, m4c999, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tictak_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cloud 999 (Barcrest) (MPU4) (CLN 4.0 V)",GAME_FLAGS )
// these are bootlegs with non-standard protection
-GAME(199?, m4c999a, m4c999, mod2_bootleg_fixedret<0x51>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (CLN 3.6)",GAME_FLAGS )
-GAME(199?, m4c999b, m4c999, mod2_bootleg_fixedret<0x51>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (CLN 3.0)",GAME_FLAGS )
-GAME(199?, m4c999c, m4c999, mod2_bootleg_fixedret<0x80>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (OC9 0.3, set 1)",GAME_FLAGS )
-GAME(199?, m4c999d, m4c999, mod2_bootleg_fixedret<0x9a>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (OC9 0.3, set 2)",GAME_FLAGS )
+GAME(199?, m4c999a, m4c999, mod2_bootleg_fixedret<0x51>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (CLN 3.6)",GAME_FLAGS )
+GAME(199?, m4c999b, m4c999, mod2_bootleg_fixedret<0x51>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (CLN 3.0)",GAME_FLAGS )
+GAME(199?, m4c999c, m4c999, mod2_bootleg_fixedret<0x80>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (OC9 0.3, set 1)",GAME_FLAGS )
+GAME(199?, m4c999d, m4c999, mod2_bootleg_fixedret<0x9a>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Cloud 999 (Barcrest) (bootleg) (MPU4) (OC9 0.3, set 2)",GAME_FLAGS )
#undef GAME_CUSTOM
#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \
@@ -1968,7 +2040,7 @@ GAME(199?, m4c999d, m4c999, mod2_bootleg_fixedret<0x9a>, mpu4,
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod2_cheatchr_pal<mpu4_characteriser_pal::hittop_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod2_cheatchr_pal<mpu4_characteriser_pal::hittop_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 B.W.B." and "SC9 5.0"
GAME_CUSTOM( 199?, m4c999g, m4c999, "c9o20__1.1", 0x0000, 0x010000, CRC(e05fa532) SHA1(63d070416a4e6979302901bb33e20c994cb3723e), "BWB","Cloud 999 (Barcrest) (MPU4) (SC9 5.0)" )
@@ -1985,143 +2057,143 @@ ROM_START( m4c9c )
ROM_END
// requires stake set to boot (just hangs otherwise)
-GAME(199?, m4c9c, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Cloud Nine Club (Barcrest) (MPU4) (CNC 2.1)",GAME_FLAGS )
+GAME(199?, m4c9c, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cloud Nine Club (Barcrest) (MPU4) (CNC 2.1)",GAME_FLAGS )
// works
-GAME(199?, m4bjac, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::bjac_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Blackjack Club (Barcrest) (MPU4) (C2J 1.8)",GAME_FLAGS )
-GAME(199?, m4bjaca, m4bjac, mod2_cheatchr_pal<mpu4_characteriser_pal::bjac_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Blackjack Club (Barcrest) (MPU4) (C2J 2.1)",GAME_FLAGS )
+GAME(199?, m4bjac, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::bjac_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Blackjack Club (Barcrest) (MPU4) (C2J 1.8)",GAME_FLAGS )
+GAME(199?, m4bjaca, m4bjac, mod2_cheatchr_pal<mpu4_characteriser_pal::bjac_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Blackjack Club (Barcrest) (MPU4) (C2J 2.1)",GAME_FLAGS )
// works
-GAME(199?, m4clbcnt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.2)",GAME_FLAGS )
-GAME(199?, m4clbcnta, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.0)",GAME_FLAGS )
-GAME(199?, m4clbcntb, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.1)",GAME_FLAGS )
-GAME(199?, m4clbcntc, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.5, set 1)",GAME_FLAGS )
-GAME(199?, m4clbcntd, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.5, set 2)",GAME_FLAGS )
+GAME(199?, m4clbcnt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.2)",GAME_FLAGS )
+GAME(199?, m4clbcnta, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.0)",GAME_FLAGS )
+GAME(199?, m4clbcntb, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.1)",GAME_FLAGS )
+GAME(199?, m4clbcntc, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.5, set 1)",GAME_FLAGS )
+GAME(199?, m4clbcntd, m4clbcnt, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Club Connect (Barcrest) (MPU4) (CON 1.5, set 2)",GAME_FLAGS )
// works
-GAME(199?, m4frtfl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fruit Full Club (Barcrest) (MPU4) (FFC 0.3)",GAME_FLAGS )
-GAME(199?, m4frtfla, m4frtfl, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fruit Full Club (Barcrest) (MPU4) (FFC 1.0)",GAME_FLAGS )
-GAME(199?, m4frtflc, m4frtfl, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fruit Full Club (Barcrest) (MPU4) (FFC 1.2)",GAME_FLAGS )
+GAME(199?, m4frtfl, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Fruit Full Club (Barcrest) (MPU4) (FFC 0.3)",GAME_FLAGS )
+GAME(199?, m4frtfla, m4frtfl, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Fruit Full Club (Barcrest) (MPU4) (FFC 1.0)",GAME_FLAGS )
+GAME(199?, m4frtflc, m4frtfl, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Fruit Full Club (Barcrest) (MPU4) (FFC 1.2)",GAME_FLAGS )
// works
-GAME(199?, m4frtlnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fruit Link Club (Barcrest) (MPU4) (FLC 1.8, set 1)",GAME_FLAGS )
-GAME(199?, m4frtlnka, m4frtlnk, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fruit Link Club (Barcrest) (MPU4) (FLC 1.6, set 2)",GAME_FLAGS )
+GAME(199?, m4frtlnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Fruit Link Club (Barcrest) (MPU4) (FLC 1.8, set 1)",GAME_FLAGS )
+GAME(199?, m4frtlnka, m4frtlnk, mod2_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R5R, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Fruit Link Club (Barcrest) (MPU4) (FLC 1.6, set 2)",GAME_FLAGS )
// works
-GAME(199?, m4milclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 1)",GAME_FLAGS )
-GAME(199?, m4milclba, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 2)",GAME_FLAGS )
-GAME(199?, m4milclbb, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 3)",GAME_FLAGS )
-GAME(199?, m4milclbc, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MIL 5.0, set 1)",GAME_FLAGS )
-GAME(199?, m4milclbd, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MIL 5.0, set 2)",GAME_FLAGS )
+GAME(199?, m4milclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 1)",GAME_FLAGS )
+GAME(199?, m4milclba, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 2)",GAME_FLAGS )
+GAME(199?, m4milclbb, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 3)",GAME_FLAGS )
+GAME(199?, m4milclbc, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MIL 5.0, set 1)",GAME_FLAGS )
+GAME(199?, m4milclbd, m4milclb, mod2_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Millionaire's Club (Barcrest) (MPU4) (MIL 5.0, set 2)",GAME_FLAGS )
// works
-GAME(199?, m4jpjmp, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Jackpot Jump (Barcrest) (MPU4) (VJC 2.0)",GAME_FLAGS )
-GAME(199?, m4jpjmpa, m4jpjmp, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Jackpot Jump (Barcrest) (MPU4) (VJC 1.3)",GAME_FLAGS )
+GAME(199?, m4jpjmp, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Jackpot Jump (Barcrest) (MPU4) (VJC 2.0)",GAME_FLAGS )
+GAME(199?, m4jpjmpa, m4jpjmp, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R5R, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Jackpot Jump (Barcrest) (MPU4) (VJC 1.3)",GAME_FLAGS )
-GAME(199?, m4ambass, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Ambassador (Barcrest) (Dutch) (MPU4) (DAM 3.7)",GAME_FLAGS )
+GAME(199?, m4ambass, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Ambassador (Barcrest) (Dutch) (MPU4) (DAM 3.7)",GAME_FLAGS )
-GAME(199?, m4graffd, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::turboplay_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","Grafitti (Barcrest) (Dutch) (MPU4) (DGR 1.3)",GAME_FLAGS )
+GAME(199?, m4graffd, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::turboplay_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Grafitti (Barcrest) (Dutch) (MPU4) (DGR 1.3)",GAME_FLAGS )
-GAME(199?, m4atlan, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m533_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Atlantis (Barcrest) (Dutch) (MPU4) (DAT 1.4)",GAME_FLAGS ) // was also an identical set marked 'Triple Dice'
+GAME(199?, m4atlan, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m533_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Atlantis (Barcrest) (Dutch) (MPU4) (DAT 1.4)",GAME_FLAGS ) // was also an identical set marked 'Triple Dice'
-GAME(199?, m4bjc, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","Black Jack Club (Barcrest) (Dutch) (MPU4) (DBC 1.1)",GAME_FLAGS )
+GAME(199?, m4bjc, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Black Jack Club (Barcrest) (Dutch) (MPU4) (DBC 1.1)",GAME_FLAGS )
-GAME(199?, m4exprs, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Express (Barcrest) (Dutch) (MPU4) (DXP 2.0)",GAME_FLAGS )
+GAME(199?, m4exprs, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Express (Barcrest) (Dutch) (MPU4) (DXP 2.0)",GAME_FLAGS )
-GAME(199?, m4brdway, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Broadway (Barcrest) (Dutch) (MPU4) (DBR 1.1)",GAME_FLAGS )
+GAME(199?, m4brdway, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Broadway (Barcrest) (Dutch) (MPU4) (DBR 1.1)",GAME_FLAGS )
-GAME(199?, m4bigbn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Big Ben (Barcrest) (Dutch) (MPU4) (DBB 1.2)",GAME_FLAGS )
+GAME(199?, m4bigbn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Big Ben (Barcrest) (Dutch) (MPU4) (DBB 1.2)",GAME_FLAGS )
-GAME(199?, m4cheryo, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::cheryo_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Cherryo (Barcrest) (Dutch) (MPU4) (DCH 1.4)",GAME_FLAGS )
+GAME(199?, m4cheryo, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::cheryo_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Cherryo (Barcrest) (Dutch) (MPU4) (DCH 1.4)",GAME_FLAGS )
-GAME(199?, m4giant, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::giant_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Giant (Barcrest) (Dutch) (MPU4) (DGI 2.1)",GAME_FLAGS )
+GAME(199?, m4giant, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::giant_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Giant (Barcrest) (Dutch) (MPU4) (DGI 2.1)",GAME_FLAGS )
-GAME(199?, m4holdon, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Hold On (Barcrest) (Dutch) (MPU4) (DHO 2.5)",GAME_FLAGS )
+GAME(199?, m4holdon, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Hold On (Barcrest) (Dutch) (MPU4) (DHO 2.5)",GAME_FLAGS )
-GAME(199?, m4libty, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Liberty (Barcrest) (Dutch) (MPU4) (DLI 1.0)",GAME_FLAGS )
+GAME(199?, m4libty, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::crkpot_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Liberty (Barcrest) (Dutch) (MPU4) (DLI 1.0)",GAME_FLAGS )
-GAME(199?, m4meglnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Megalink (Barcrest) (Dutch) (MPU4) (DML 2.0)",GAME_FLAGS )
+GAME(199?, m4meglnk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Megalink (Barcrest) (Dutch) (MPU4) (DML 2.0)",GAME_FLAGS )
-GAME(199?, m4multwy, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::kingqn_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Multiway (Barcrest) (Dutch) (MPU4) (DMU 1.7)",GAME_FLAGS )
+GAME(199?, m4multwy, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::kingqn_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Multiway (Barcrest) (Dutch) (MPU4) (DMU 1.7)",GAME_FLAGS )
-GAME(199?, m4num1, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Number One (Barcrest) (Dutch) (MPU4) (DNO 1.7)",GAME_FLAGS )
+GAME(199?, m4num1, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Number One (Barcrest) (Dutch) (MPU4) (DNO 1.7)",GAME_FLAGS )
-GAME(199?, m4nudup, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nudge Up (Barcrest) (Dutch) (MPU4) (DNU 2.5)",GAME_FLAGS )
+GAME(199?, m4nudup, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nudge Up (Barcrest) (Dutch) (MPU4) (DNU 2.5)",GAME_FLAGS )
-GAME(199?, m4omega, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Omega (Barcrest) (Dutch) (MPU4) (DOM 2.3)",GAME_FLAGS )
+GAME(199?, m4omega, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Omega (Barcrest) (Dutch) (MPU4) (DOM 2.3)",GAME_FLAGS )
-GAME(199?, m4randr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::randroul_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Random Roulette (Barcrest) (Dutch) (MPU4) (DRR 2.2)",GAME_FLAGS )
+GAME(199?, m4randr, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::randroul_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Random Roulette (Barcrest) (Dutch) (MPU4) (DRR 2.2)",GAME_FLAGS )
-GAME(199?, m4samu, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Samurai (Barcrest) (Dutch) (MPU4) (DSM 1.0)",GAME_FLAGS )
+GAME(199?, m4samu, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Samurai (Barcrest) (Dutch) (MPU4) (DSM 1.0)",GAME_FLAGS )
-GAME(199?, m4stards, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Stardust (Barcrest) (Dutch) (MPU4) (DSD 1.3)",GAME_FLAGS )
+GAME(199?, m4stards, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Stardust (Barcrest) (Dutch) (MPU4) (DSD 1.3)",GAME_FLAGS )
-GAME(199?, m4tbreel, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::grandclub_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Turbo Reel (Barcrest) (Dutch) (MPU4) (DTR 3.1)",GAME_FLAGS )
+GAME(199?, m4tbreel, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::grandclub_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Turbo Reel (Barcrest) (Dutch) (MPU4) (DTR 3.1)",GAME_FLAGS )
-GAME(199?, m4tbrldx, m4tbreel, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Turbo Reel Deluxe (Barcrest) (Dutch) (MPU4) (DTU 3.0)",GAME_FLAGS )
+GAME(199?, m4tbrldx, m4tbreel, mod2_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Turbo Reel Deluxe (Barcrest) (Dutch) (MPU4) (DTU 3.0)",GAME_FLAGS )
-GAME(199?, m4taj, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tajmahal_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Taj Mahal (Barcrest) (Dutch) (MPU4) (DTM 1.0)",GAME_FLAGS )
+GAME(199?, m4taj, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tajmahal_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Taj Mahal (Barcrest) (Dutch) (MPU4) (DTM 1.0)",GAME_FLAGS )
-GAME(199?, m4tricol, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tricolor_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Tricolor (Barcrest) (Dutch) (MPU4) (DTC 2.5)",GAME_FLAGS )
+GAME(199?, m4tricol, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::tricolor_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Tricolor (Barcrest) (Dutch) (MPU4) (DTC 2.5)",GAME_FLAGS )
-GAME(199?, m4twilgt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pontoon_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Twilight (Barcrest) (Dutch) (MPU4) (DTL 2.2)",GAME_FLAGS )
+GAME(199?, m4twilgt, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::pontoon_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Twilight (Barcrest) (Dutch) (MPU4) (DTL 2.2)",GAME_FLAGS )
-GAME(199?, m4wildms, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Wild Mystery (Barcrest) (Dutch) (MPU4) (DWM 1.8)",GAME_FLAGS )
+GAME(199?, m4wildms, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R6A, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Wild Mystery (Barcrest) (Dutch) (MPU4) (DWM 1.8)",GAME_FLAGS )
-GAME(199?, m4suptrn, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","Supatron (Barcrest) (MPU4) (DSU 2.1)",GAME_FLAGS )
+GAME(199?, m4suptrn, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Supatron (Barcrest) (MPU4) (DSU 2.1)",GAME_FLAGS )
-GAME(199?, m421club, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::blackwhite_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","21 Club (Barcrest) (Dutch) (MPU4) (DTW 2.7)",GAME_FLAGS )
+GAME(199?, m421club, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::blackwhite_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","21 Club (Barcrest) (Dutch) (MPU4) (DTW 2.7)",GAME_FLAGS )
-GAME(199?, m4class, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","First Class (Barcrest) (Dutch) (MPU4) (DFC 2.0, set 1)",GAME_FLAGS )
+GAME(199?, m4class, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","First Class (Barcrest) (Dutch) (MPU4) (DFC 2.0, set 1)",GAME_FLAGS )
// INITIALIZE COMMS, before any prot sequence
-GAME(199?, m4classa, m4class, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","First Class (Barcrest) (Dutch) (MPU4) (DFC 2.0, set 2)",GAME_FLAGS )
+GAME(199?, m4classa, m4class, mod2_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","First Class (Barcrest) (Dutch) (MPU4) (DFC 2.0, set 2)",GAME_FLAGS )
-GAME(199?, m4thehit, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","The Hit (Barcrest) (MPU4) (DTH 1.7)",GAME_FLAGS )
+GAME(199?, m4thehit, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::toptake_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","The Hit (Barcrest) (MPU4) (DTH 1.7)",GAME_FLAGS )
-GAME(199?, m4gldgat, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","Golden Gate (Barcrest) (Dutch) (MPU4) (DGG 2.2)",GAME_FLAGS )
+GAME(199?, m4gldgat, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Golden Gate (Barcrest) (Dutch) (MPU4) (DGG 2.2)",GAME_FLAGS )
-GAME(199?, m4toma, 0, mod2_7reel_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default_seven, ROT0, "Barcrest","Tomahawk (Barcrest) (Dutch) (MPU4) (DTK 2.3)",GAME_FLAGS )
+GAME(199?, m4toma, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Tomahawk (Barcrest) (Dutch) (MPU4) (DTK 2.3)",GAME_FLAGS )
-GAME(199?, m4topdk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu4_dutch, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Top Deck (Barcrest) (Dutch) (MPU4) (DT 2.6)",GAME_FLAGS )
+GAME(199?, m4topdk, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Top Deck (Barcrest) (Dutch) (MPU4) (DT 2.6)",GAME_FLAGS )
// boots but no coins?
-GAME(199?, m4bigchd, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Big Chief (Barcrest) (Dutch) (MPU4) (BCH 1.5)",GAME_FLAGS ) // why code BCH on a dutch?
+GAME(199?, m4bigchd, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Big Chief (Barcrest) (Dutch) (MPU4) (BCH 1.5)",GAME_FLAGS ) // why code BCH on a dutch?
// boots with percent key
-GAME(199?, m4dbl9, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Double 9's (Barcrest) (MPU4) (DU9 1.0)",GAME_FLAGS )
+GAME(199?, m4dbl9, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Double 9's (Barcrest) (MPU4) (DU9 1.0)",GAME_FLAGS )
// non-standard chr use, hack?
-GAME(199?, m4dbl9a, m4dbl9, mod2_bootleg_fixedret<0x51>, mpu4_70pc, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Double 9's (Barcrest) (bootleg) (MPU4) (DU9 0.2)",GAME_FLAGS )
+GAME(199?, m4dbl9a, m4dbl9, mod2_bootleg_fixedret<0x51>(R4, RT1), mpu4_70pc, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Double 9's (Barcrest) (bootleg) (MPU4) (DU9 0.2)",GAME_FLAGS )
-GAME(199?, m4nick, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 1)",GAME_FLAGS )
-GAME(199?, m4nicka, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 2)",GAME_FLAGS )
-GAME(199?, m4nickb, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 3)",GAME_FLAGS )
-GAME(199?, m4nickc, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 4)",GAME_FLAGS )
-GAME(199?, m4nickd, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 5)",GAME_FLAGS )
+GAME(199?, m4nick, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 1)",GAME_FLAGS )
+GAME(199?, m4nicka, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 2)",GAME_FLAGS )
+GAME(199?, m4nickb, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 3)",GAME_FLAGS )
+GAME(199?, m4nickc, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 4)",GAME_FLAGS )
+GAME(199?, m4nickd, m4nick, mod2_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 5)",GAME_FLAGS )
// non-standard protection, hack?
-GAME(199?, m4nicke, m4nick, mod2_bootleg_fixedret<0x1b>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Nickelodeon (Barcrest) (bootleg) (MPU4) (NIL 2.5)",GAME_FLAGS )
+GAME(199?, m4nicke, m4nick, mod2_bootleg_fixedret<0x1b>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Nickelodeon (Barcrest) (bootleg) (MPU4) (NIL 2.5)",GAME_FLAGS )
-GAME(199?, m4joljok, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Jolly Joker (Barcrest) (MPU4) (JOJ 1.6)",GAME_FLAGS )
+GAME(199?, m4joljok, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Jolly Joker (Barcrest) (MPU4) (JOJ 1.6)",GAME_FLAGS )
// non-standard protection
-GAME(199?, m4unkjok, m4joljok, mod2_bootleg_fixedret<0x9a>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Jolly Joker (Barcrest) (MPU4) (bootleg) (JJ1 0.1, set 1)",GAME_FLAGS )
-GAME(199?, m4unkjoka, m4joljok, mod2_bootleg_fixedret<0x9a>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Jolly Joker (Barcrest) (MPU4) (bootleg) (JJ1 0.1. set 2)",GAME_FLAGS )
+GAME(199?, m4unkjok, m4joljok, mod2_bootleg_fixedret<0x9a>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Jolly Joker (Barcrest) (MPU4) (bootleg) (JJ1 0.1, set 1)",GAME_FLAGS )
+GAME(199?, m4unkjoka, m4joljok, mod2_bootleg_fixedret<0x9a>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Jolly Joker (Barcrest) (MPU4) (bootleg) (JJ1 0.1. set 2)",GAME_FLAGS )
-GAME(199?, m4joltav, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Jolly Taverner (Barcrest) (MPU4) (TAV 1.3)",GAME_FLAGS )
+GAME(199?, m4joltav, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Jolly Taverner (Barcrest) (MPU4) (TAV 1.3)",GAME_FLAGS )
//
-GAME(199?, m4joltava, m4joltav, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Jolly Taverner (Barcrest) (MPU4) (JT__ 2.0, set 1)",GAME_FLAGS )
-GAME(199?, m4joltavb, m4joltav, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Barcrest","Jolly Taverner (Barcrest) (MPU4) (JT__ 2.0, set 2)",GAME_FLAGS )
+GAME(199?, m4joltava, m4joltav, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Jolly Taverner (Barcrest) (MPU4) (JT__ 2.0, set 1)",GAME_FLAGS )
+GAME(199?, m4joltavb, m4joltav, mod2_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Jolly Taverner (Barcrest) (MPU4) (JT__ 2.0, set 2)",GAME_FLAGS )
//
-GAME(199?, m4unkjokb, m4joltav, mod2_bootleg_fixedret<0x11>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Jolly Taverner (Barcrest) (bootleg) (MPU4) (TAV 1.1, set 1)",GAME_FLAGS )
-GAME(199?, m4unkjokc, m4joltav, mod2_bootleg_fixedret<0x11>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Jolly Taverner (Barcrest) (bootleg) (MPU4) (TAV 1.1, set 2)",GAME_FLAGS )
+GAME(199?, m4unkjokb, m4joltav, mod2_bootleg_fixedret<0x11>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Jolly Taverner (Barcrest) (bootleg) (MPU4) (TAV 1.1, set 1)",GAME_FLAGS )
+GAME(199?, m4unkjokc, m4joltav, mod2_bootleg_fixedret<0x11>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Jolly Taverner (Barcrest) (bootleg) (MPU4) (TAV 1.1, set 2)",GAME_FLAGS )
// this has a 'tri98' protection sequence check in ROM, but the code appears to have been hacked to expect a different response.
-GAME(199?, m4btclok, 0, mod2_bootleg_fixedret<0x45>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Beat The Clock (Barcrest) (bootleg) (MPU4)",GAME_FLAGS )
+GAME(199?, m4btclok, 0, mod2_bootleg_fixedret<0x45>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Beat The Clock (Barcrest) (bootleg) (MPU4)",GAME_FLAGS )
// protection has been hacked
-GAME(199?, m4brktak, 0, mod2_bootleg_fixedret<0x45>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Break & Take (Barcrest) (bootleg) (MPU4)",GAME_FLAGS )
+GAME(199?, m4brktak, 0, mod2_bootleg_fixedret<0x45>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Break & Take (Barcrest) (bootleg) (MPU4)",GAME_FLAGS )
// runs if you set a stake, missing an extender for the credits display?
-GAME(199?, m4sunclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Sun Club (BWB) (MPU4) (SUC 0.2, set 1)",GAME_FLAGS )
-GAME(199?, m4sunclba, m4sunclb, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>, mpu420p, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Sun Club (BWB) (MPU4) (SUC 0.2, set 2)",GAME_FLAGS )
+GAME(199?, m4sunclb, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Sun Club (BWB) (MPU4) (SUC 0.2, set 1)",GAME_FLAGS )
+GAME(199?, m4sunclba, m4sunclb, mod2_cheatchr_pal<mpu4_characteriser_pal::intcep_characteriser_prot>(R4, RT1), mpu420p, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Sun Club (BWB) (MPU4) (SUC 0.2, set 2)",GAME_FLAGS )
// these were found in with mod4oki sets, but don't attempt to play samples, only use the AY
@@ -2132,7 +2204,7 @@ GAME(199?, m4sunclba, m4sunclb, mod2_cheatchr_pal<mpu4_characteriser_pal::intc
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod2_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "NN3 0.1"
GAME_CUSTOM( 199?, m4nnww2, 0, "nn3xs.p1", 0x0000, 0x010000, CRC(13d02d21) SHA1(8e4dac8e60538884d3f3a92fc1bb9f41276be4c8), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 X)" )
@@ -2153,7 +2225,7 @@ GAME_CUSTOM( 199?, m4nnww2__j, m4nnww2, "nn3xy.p1", 0x0000, 0x010000, CRC
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod2_cheatchr_pal<mpu4_characteriser_pal::cashmx_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod2_cheatchr_pal<mpu4_characteriser_pal::cashmx_characteriser_prot>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "NNU 5.2"
GAME_CUSTOM( 199?, m4nnww2__k, m4nnww2, "nnus.p1", 0x0000, 0x010000, CRC(3e3a829e) SHA1(5aa3a56e007bad4dacdc3c993c87569e4250eecd), "Barcrest","Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.2)" )
@@ -2170,7 +2242,7 @@ GAME_CUSTOM( 199?, m4nnww2__o, m4nnww2, "nnu40x.bin", 0x0000, 0x010000, CRC
ROM_REGION( 0x10000, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME( year, setname, parent, mod2_bootleg_fixedret<0x06>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME( year, setname, parent, mod2_bootleg_fixedret<0x06>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// no copyright string and "NNU 5.0"
GAME_CUSTOM( 199?, m4nnww2__hx3, m4nnww2, "classic adders + ladders_alt", 0x0000, 0x010000, CRC(ac948903) SHA1(e07023efd7722a661a2bbf93c0a168af70ad6c20), "hack","Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.0, hack, set 1)")
@@ -2182,10 +2254,10 @@ GAME_CUSTOM( 199?, m4nnww2__hx4, m4nnww2, "classic adders + ladders_alt2",
ROM_REGION( 0x10000, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME( year, setname, parent, mod4yam, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS)
+ GAME( year, setname, parent, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, company, title, GAME_FLAGS)
-// fails to boot even without touching protection address, maybe bad? These were in 'adders + ladders' sets but are clearly not
-GAME_CUSTOM( 199?, m4nnww2__hx5, m4nnww2, "nik56c", 0x0000, 0x010000, CRC(05fa11d1) SHA1(01d3d0c504489f1513a0c3aa26e910c9604f5366), "hack","Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.0, hack, set 3)")
+// fails to boot even without touching protection address due to checksum error. These were in 'adders + ladders' sets but are clearly not
+GAME_CUSTOM( 199?, m4nnww2__hx5, m4nnww2, "nik56c", 0x0000, 0x010000, CRC(05fa11d1) SHA1(01d3d0c504489f1513a0c3aa26e910c9604f5366) BAD_DUMP, "hack","Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.0, hack, set 3)")
#undef GAME_CUSTOM
#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \
@@ -2193,7 +2265,7 @@ GAME_CUSTOM( 199?, m4nnww2__hx5, m4nnww2, "nik56c",
ROM_REGION( 0x10000, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME( year, setname, parent, mod2_bootleg_fixedret<0x0e>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS)
+ GAME( year, setname, parent, mod2_bootleg_fixedret<0x0e>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, company, title, GAME_FLAGS)
// different protection
// no copyright string and "NNU 3.4"
@@ -2207,7 +2279,7 @@ ROM_START( m4holywd )
ROM_END
// non-standard protection, makes some invalid writes
-GAME(199?, m4holywd, 0, mod2_bootleg_fixedret<0xd0>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg?","Hollywood (bootleg) (MPU4) (HOL 1.0)",GAME_FLAGS )
+GAME(199?, m4holywd, 0, mod2_bootleg_fixedret<0xd0>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg?","Hollywood (bootleg) (MPU4) (HOL 1.0)",GAME_FLAGS )
/*********************************************************************************************************
@@ -2245,13 +2317,13 @@ ROM_START( m4hirisee )
ROM_LOAD( "hrise206", 0x0000, 0x010000, CRC(58b4bbdd) SHA1(0b76d27147fbadba97328eb9d2dc81cff9d576e0) )
ROM_END
-GAME(199?, m4hirise, 0, mod2_alt_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_std, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HII 0.3)",GAME_FLAGS )
-GAME(199?, m4hirisea, m4hirise, mod2_alt_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_std, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.1, set 1)",GAME_FLAGS )
-GAME(199?, m4hirisec, m4hirise, mod2_alt_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_std, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.1, set 2)",GAME_FLAGS )
-GAME(199?, m4hirised, m4hirise, mod2_alt_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_std, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.1, set 3)",GAME_FLAGS )
-GAME(199?, m4hirisee, m4hirise, mod2_alt_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>, mpu4, mpu4mod2_machines_state, init_m4default_five_std, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.0)",GAME_FLAGS )
+GAME(199?, m4hirise, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>(R5, RT2), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HII 0.3)",GAME_FLAGS )
+GAME(199?, m4hirisea, m4hirise, mod2_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>(R5, RT2), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.1, set 1)",GAME_FLAGS )
+GAME(199?, m4hirisec, m4hirise, mod2_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>(R5, RT2), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.1, set 2)",GAME_FLAGS )
+GAME(199?, m4hirised, m4hirise, mod2_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>(R5, RT2), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.1, set 3)",GAME_FLAGS )
+GAME(199?, m4hirisee, m4hirise, mod2_cheatchr_pal<mpu4_characteriser_pal::hirise_characteriser_prot>(R5, RT2), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","High Rise (Barcrest) (MPU4) (HIR 3.0)",GAME_FLAGS )
// non-standard protection
-GAME(199?, m4hiriseb, m4hirise, mod2_alt_bootleg_fixedret<0x88>, mpu4, mpu4mod2_machines_state, init_m4default_five_std, ROT0, "bootleg?","High Rise (Barcrest) (MPU4) (HIR 1.5, bootleg?)",GAME_FLAGS )
+GAME(199?, m4hiriseb, m4hirise, mod2_bootleg_fixedret<0x88>(R5, RT2), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg?","High Rise (Barcrest) (MPU4) (HIR 1.5, bootleg?)",GAME_FLAGS )
/*********************************************************************************************************
@@ -2266,7 +2338,7 @@ GAME(199?, m4hiriseb, m4hirise, mod2_alt_bootleg_fixedret<0x88>, mpu4, mp
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod2_bootleg_fixedret<0x13>, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod2_bootleg_fixedret<0x13>(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// no copyright string in header, although 1988 BARCREST string exists elsewhere
@@ -2316,7 +2388,7 @@ INPUT_PORTS_START( m4blkbul )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
-GAME(199?, m4blkbul, 0, mod2_alt_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, m4blkbul, mpu4mod2_machines_state, init_m4altreels, ROT0, "Barcrest","Super Play (Czech) (Barcrest) (MPU4) (XSP 0.8)",GAME_FLAGS )
+GAME(199?, m4blkbul, 0, mod2_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT2), m4blkbul, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","Super Play (Czech) (Barcrest) (MPU4) (XSP 0.8)",GAME_FLAGS )
/*********************************************************************************************************
@@ -2332,7 +2404,7 @@ ROM_START( m4toprn )
ROM_LOAD( "toprun_v1_2.bin", 0x8000, 0x004000, CRC(940fafa9) SHA1(2a8b669c51c8df50710bd8b552ab30a5d1a136ab) )
ROM_END
-GAME(199?, m4toprn, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "<unknown>","Top Run (Dutch) (MPU4)",GAME_FLAGS ) // unique behavior (START UP IN countdown)
+GAME(199?, m4toprn, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "<unknown>","Top Run (Dutch) (MPU4)",GAME_FLAGS ) // unique behavior (START UP IN countdown)
/*****************************************************************************************************************************************************************************
*
@@ -2348,7 +2420,7 @@ ROM_START( m4fourmr )
ROM_END
// runs, unprotected, 17 May 1990 BWBNFM26 in ROM
-GAME(1990, m4fourmr, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Four More (BWB) (MPU4)",GAME_FLAGS ) // no sound with either system?
+GAME(1990, m4fourmr, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Four More (BWB) (MPU4)",GAME_FLAGS ) // no sound with either system?
/*****************************************************************************************************************************************************************************
*
@@ -2379,11 +2451,11 @@ ROM_START( m4specu )
ROM_LOAD( "speculator.bin", 0x8000, 0x008000, CRC(4035d20c) SHA1(4a534294c5c7332eacd09ca44f351d6a6850cc29) )
ROM_END
-GAME(199?, m4lineup, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Line Up (BWB) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4lineupa, m4lineup, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Line Up (BWB) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4lineup, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Line Up (BWB) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4lineupa, m4lineup, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Line Up (BWB) (MPU4) (set 2)",GAME_FLAGS )
// very similar game to above
-GAME(199?, m4specu, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "BWB","Speculator Club (BWB) (MPU4)",GAME_FLAGS )
+GAME(199?, m4specu, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "BWB","Speculator Club (BWB) (MPU4)",GAME_FLAGS )
/*********************************************************************************************************
@@ -2396,10 +2468,10 @@ GAME(199?, m4specu, 0, mod2, mpu4, mpu4mod2_machines_state,
*********************************************************************************************************/
// different protection, call/response check with 6 possible values
-GAME(199?, m4blstbk, 0, mod2_chr_blastbnk, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg?","Blast A Bank (MPU4) (BB 1.0)",GAME_FLAGS )
+GAME(199?, m4blstbk, 0, mod2_chr_blastbnk(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg?","Blast A Bank (MPU4) (BB 1.0)",GAME_FLAGS )
// different protection, call/response check with 6 possible values
-GAME(199?, m4copcsh, 0, mod2_chr_copcash, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "bootleg","Coppa Cash (MPU4) (FC 2.0)",GAME_FLAGS )
+GAME(199?, m4copcsh, 0, mod2_chr_copcash(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "bootleg","Coppa Cash (MPU4) (FC 2.0)",GAME_FLAGS )
/*********************************************************************************************************
@@ -2407,12 +2479,6 @@ GAME(199?, m4copcsh, 0, mod2_chr_copcash, mpu4, mpu4mod2_ma
*********************************************************************************************************/
-void mpu4mod2_machines_state::init_m4test()
-{
- init_m4default();
- m_overcurrent_detect = true;
-}
-
ROM_START( m4tst2 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "ut2.p1", 0xe000, 0x2000, CRC(f7fb6575) SHA1(f7961cbd0801b9561d8cd2d23081043d733e1902))
@@ -2428,9 +2494,9 @@ ROM_START( m4rltst )
ROM_LOAD( "rtv.p1", 0x08000, 0x08000, CRC(7b78f3f2) SHA1(07ef8e6a08fd70ee48e4463672a1230ecc669532) )
ROM_END
-GAME( 198?, m4tst2, 0, mod2_no_bacta, mpu4, mpu4mod2_machines_state, init_m4test, ROT0, "Barcrest","MPU4 Unit Test (Program 2)",MACHINE_MECHANICAL )
-GAME( 198?, m4clr, 0, mod2_no_bacta, mpu4, mpu4mod2_machines_state, init_m4test, ROT0, "Barcrest","MPU4 Meter Clear ROM",MACHINE_MECHANICAL )
-GAME( 198?, m4rltst, 0, mod2_no_bacta, mpu4, mpu4mod2_machines_state, init_m4test, ROT0, "Barcrest","MPU4 Reel Test (3.0)",MACHINE_MECHANICAL )
+GAME( 198?, m4tst2, 0, mod2_no_bacta(R4, RT1, OVER), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","MPU4 Unit Test (Program 2)",MACHINE_MECHANICAL )
+GAME( 198?, m4clr, 0, mod2_no_bacta(R4, RT1, OVER), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","MPU4 Meter Clear ROM",MACHINE_MECHANICAL )
+GAME( 198?, m4rltst, 0, mod2_no_bacta(R4, RT1, OVER), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Barcrest","MPU4 Reel Test (3.0)",MACHINE_MECHANICAL )
/*********************************************************************************************************
@@ -2442,36 +2508,39 @@ GAME( 198?, m4rltst, 0, mod2_no_bacta, mpu4, mpu4mod2_machine
/* Pcp */
// runs and plays, but no lamps or other display..
-GAME(199?, m4cshino, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Cashino Deluxe (Pcp) (MPU4)",GAME_FLAGS )
+GAME(199?, m4cshino, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Cashino Deluxe (Pcp) (MPU4)",GAME_FLAGS )
// runs and plays, but no lamps or other display..
-GAME(199?, m4jjc, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Jumping Jack Cash (Pcp) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4jjca, m4jjc, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Jumping Jack Cash (Pcp) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4jjc, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Jumping Jack Cash (Pcp) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4jjca, m4jjc, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Jumping Jack Cash (Pcp) (MPU4) (set 2)",GAME_FLAGS )
// runs and plays, but no lamps or other display..
-GAME(199?, m4spton, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Spot On (Pcp) (MPU4)",GAME_FLAGS )
+GAME(199?, m4spton, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Spot On (Pcp) (MPU4)",GAME_FLAGS )
-GAME(199?, m4exlin, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Extra Lines (Pcp) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4exlina, m4exlin, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Extra Lines (Pcp) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4exlin, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Extra Lines (Pcp) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4exlina, m4exlin, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Extra Lines (Pcp) (MPU4) (set 2)",GAME_FLAGS )
-GAME(199?, m4supjst, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4supjsta, m4supjst, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 2)",GAME_FLAGS )
-GAME(199?, m4supjstb, m4supjst, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 3)",GAME_FLAGS )
-GAME(199?, m4supjstc, m4supjst, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 4)",GAME_FLAGS )
-GAME(199?, m4supjstd, m4supjst, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 5)",GAME_FLAGS )
-GAME(199?, m4supjste, m4supjst, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 6)",GAME_FLAGS )
+GAME(199?, m4supjst, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4supjsta, m4supjst, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4supjstb, m4supjst, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 3)",GAME_FLAGS )
+GAME(199?, m4supjstc, m4supjst, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 4)",GAME_FLAGS )
+GAME(199?, m4supjstd, m4supjst, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 5)",GAME_FLAGS )
+GAME(199?, m4supjste, m4supjst, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Super Jester (Pcp) (MPU4) (set 6)",GAME_FLAGS )
-GAME(199?, m4frcrak, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Fruit Cracker (Pcp) (MPU4)",GAME_FLAGS )
+GAME(199?, m4frcrak, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Fruit Cracker (Pcp) (MPU4)",GAME_FLAGS )
-GAME(199?, m4clbrpl, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Pcp","Club Replay (PCP) (MPU4) (01)",GAME_FLAGS )
+GAME(199?, m4clbrpl, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Pcp","Club Replay (PCP) (MPU4) (01)",GAME_FLAGS )
/* Misc */
-GAME(199?, m4spnwin, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Cotswold Microsystems","Spin A Win (Cotswold Microsystems) (MPU4) (set 1)",GAME_FLAGS ) // works?
-GAME(199?, m4spnwina, m4spnwin, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "Cotswold Microsystems","Spin A Win (Cotswold Microsystems) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4spnwin, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Cotswold Microsystems","Spin A Win (Cotswold Microsystems) (MPU4) (set 1)",GAME_FLAGS ) // works?
+GAME(199?, m4spnwina, m4spnwin, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "Cotswold Microsystems","Spin A Win (Cotswold Microsystems) (MPU4) (set 2)",GAME_FLAGS )
// was marked as JPM, but that doesn't seem likely
-GAME(199?, m4pick, 0, mod2, mpu4, mpu4mod2_machines_state, init_m4default, ROT0, "<unknown>","Pick A Fruit (Dutch) (MPU4)",GAME_FLAGS )
+GAME(199?, m4pick, 0, mod2(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, ROT0, "<unknown>","Pick A Fruit (Dutch) (MPU4)",GAME_FLAGS )
-GAMEL(1989?, m4conn4, 0, mod2, connect4, mpu4mod2_machines_state, init_connect4, ROT0, "Dolbeck Systems","Connect 4",MACHINE_IMPERFECT_GRAPHICS|MACHINE_REQUIRES_ARTWORK,layout_connect4 )
+// No reels
+GAMEL(1989?, m4conn4, 0, mod2(OVER), connect4, mpu4mod2_machines_state, init_m4, ROT0, "Dolbeck Systems","Connect 4",MACHINE_IMPERFECT_GRAPHICS|MACHINE_REQUIRES_ARTWORK,layout_connect4 )
+// TUNE ALARM (may or may not be sound-related); probably needs RS-232 link
+GAME(198?, m4funh, 0, mod4psg(R4, RT1), mpu4, mpu4mod2_machines_state, init_m4, 0, "<unknown>", "Fun House (unknown) (MPU4)", GAME_FLAGS ) // was in the SC1 Fun House set
diff --git a/src/mame/barcrest/mpu4mod4oki.cpp b/src/mame/barcrest/mpu4mod4oki.cpp
index 0294a2be756..2e3b37b75b7 100644
--- a/src/mame/barcrest/mpu4mod4oki.cpp
+++ b/src/mame/barcrest/mpu4mod4oki.cpp
@@ -180,16 +180,6 @@ public:
mpu4_state(mconfig, type, tag)
{
}
-
- void init_m4andycp();
-
- void init_m4andyge();
-
- void init_m4tenten();
-
- void init_m4andyfh();
- void init_m4actbnk();
- void init_m4andybt();
};
@@ -202,6 +192,8 @@ public:
} // anonymous namespace
+using namespace mpu4_traits;
+
/* Explanation of automatically generated descriptions
void mpu4mod4oki_machines_state::init_PARENTNAME()
@@ -250,40 +242,32 @@ void mpu4mod4oki_machines_state::init_PARENTNAME()
*
*****************************************************************************************************************************************************************************/
-void mpu4mod4oki_machines_state::init_m4andycp()
-{
- //Derived from Andy_Capp_(Barcrest)_[C05_v1-0_1024_6jp].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_small_extender();
- use_m4_standard_reels();
- //PCKEY =9
- //STKEY =0
- //JPKEY =0
- //JPSET =0
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=true
- //DIP2_6=false
- //DIP2_7=false
- //Sound empire
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000
- //Front door code 39 Cash door code 38
-}
-
+ //Derived from Andy_Capp_(Barcrest)_[C05_v1-0_1024_6jp].gam
+ //PCKEY =9
+ //STKEY =0
+ //JPKEY =0
+ //JPSET =0
+ //DIP1_0=false
+ //DIP1_1=false
+ //DIP1_2=false
+ //DIP1_3=false
+ //DIP1_4=false
+ //DIP1_5=false
+ //DIP1_6=false
+ //DIP1_7=false
+ //DIP2_0=false
+ //DIP2_1=false
+ //DIP2_2=false
+ //DIP2_3=false
+ //DIP2_4=false
+ //DIP2_5=true
+ //DIP2_6=false
+ //DIP2_7=false
+ //Sound empire
+ //Standard
+ //Volume 0 Stereo= 1
+ //Sample rate 16000
+ //Front door code 39 Cash door code 38
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
@@ -307,90 +291,90 @@ void mpu4mod4oki_machines_state::init_m4andycp()
GAMEL( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS, layout_m4andycp )
// "(C)1991 BARCREST" and "C2T 0.2"
-GAME_CUSTOM( 1991, m4andycpc2, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02s.p1", 0x0000, 0x010000, CRC(d004f962) SHA1(1f211fd62438cb7c5d5f4ce9ced29a0a7e64e80b), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T, set 1)" )
-GAME_CUSTOM( 1991, m4andycpc2d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02d.p1", 0x0000, 0x010000, CRC(ce5bbf2e) SHA1(dab2a1015713ceb8dce8b766fc2660207fcbb9f2), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T D)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc2ad, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02ad.p1", 0x0000, 0x010000, CRC(38e36fe3) SHA1(01c007e21a6ac1a77bf314402d727c41b7a222ca), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T AD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc2b, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02b.p1", 0x0000, 0x010000, CRC(f059a9dc) SHA1(0c5d5a4b108c85215b9d5f8c2263b66559cfa90a), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T B)" )
-GAME_CUSTOM( 1991, m4andycpc2bd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02bd.p1", 0x0000, 0x010000, CRC(0eff02a9) SHA1(f460f93098630ac2757a560deb2e741ae9631a54), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T BD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc2r, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02r.p1", 0x0000, 0x010000, CRC(6ccaf958) SHA1(8878e16d2c01131d36f211b3a73e987409f54ef9), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T R)" )
-GAME_CUSTOM( 1991, m4andycpc2rd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02dr.p1", 0x0000, 0x010000, CRC(7daee156) SHA1(2ae03c39ca5704c112c9ec6acba46022f4dd9805), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T RD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc2k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02k.p1", 0x0000, 0x010000, CRC(077024e0) SHA1(80597f28891caa25506bb6bbc77a005623096ff9), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T K)" )
-GAME_CUSTOM( 1991, m4andycpc2kd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02dk.p1", 0x0000, 0x010000, CRC(dc8c078e) SHA1(9dcde48d17a39dbe10333632eacc1f0860e165de), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T KD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc2y, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02y.p1", 0x0000, 0x010000, CRC(f1a1d1b6) SHA1(d9ceedee3b833be8de5b065e45a72ca180283528), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T Y)" )
-GAME_CUSTOM( 1991, m4andycpc2yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c2t02dy.p1", 0x0000, 0x010000, CRC(e0c5c9b8) SHA1(d067d4786ded041d8031808078eb2c0383937931), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T YD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc2, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02s.p1", 0x0000, 0x010000, CRC(d004f962) SHA1(1f211fd62438cb7c5d5f4ce9ced29a0a7e64e80b), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T, set 1)" )
+GAME_CUSTOM( 1991, m4andycpc2d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02d.p1", 0x0000, 0x010000, CRC(ce5bbf2e) SHA1(dab2a1015713ceb8dce8b766fc2660207fcbb9f2), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T D)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc2ad, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02ad.p1", 0x0000, 0x010000, CRC(38e36fe3) SHA1(01c007e21a6ac1a77bf314402d727c41b7a222ca), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T AD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc2b, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02b.p1", 0x0000, 0x010000, CRC(f059a9dc) SHA1(0c5d5a4b108c85215b9d5f8c2263b66559cfa90a), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T B)" )
+GAME_CUSTOM( 1991, m4andycpc2bd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02bd.p1", 0x0000, 0x010000, CRC(0eff02a9) SHA1(f460f93098630ac2757a560deb2e741ae9631a54), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T BD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc2r, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02r.p1", 0x0000, 0x010000, CRC(6ccaf958) SHA1(8878e16d2c01131d36f211b3a73e987409f54ef9), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T R)" )
+GAME_CUSTOM( 1991, m4andycpc2rd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02dr.p1", 0x0000, 0x010000, CRC(7daee156) SHA1(2ae03c39ca5704c112c9ec6acba46022f4dd9805), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T RD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc2k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02k.p1", 0x0000, 0x010000, CRC(077024e0) SHA1(80597f28891caa25506bb6bbc77a005623096ff9), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T K)" )
+GAME_CUSTOM( 1991, m4andycpc2kd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02dk.p1", 0x0000, 0x010000, CRC(dc8c078e) SHA1(9dcde48d17a39dbe10333632eacc1f0860e165de), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T KD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc2y, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02y.p1", 0x0000, 0x010000, CRC(f1a1d1b6) SHA1(d9ceedee3b833be8de5b065e45a72ca180283528), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T Y)" )
+GAME_CUSTOM( 1991, m4andycpc2yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c2t02dy.p1", 0x0000, 0x010000, CRC(e0c5c9b8) SHA1(d067d4786ded041d8031808078eb2c0383937931), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T YD)" ) // datapak
// "(C)1991 BARCREST" and "C2T 0.1"
-GAME_CUSTOM( 1991, m4andycpc2_a, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "acap2010", 0x0000, 0x010000, CRC(1b8e712b) SHA1(6770869966290fe6e61b7bf1971ab7a15e601d69), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T, set 2)" )
+GAME_CUSTOM( 1991, m4andycpc2_a, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "acap2010", 0x0000, 0x010000, CRC(1b8e712b) SHA1(6770869966290fe6e61b7bf1971ab7a15e601d69), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C2T, set 2)" )
// "(C)1991 BARCREST" and "C5T 0.1"
-GAME_CUSTOM( 1991, m4andycpc5, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5ts.p1", 0x0000, 0x010000, CRC(3ade4b1b) SHA1(c65d05e2493a0e2d6a4be58a42aac6cb7f9c01b5), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T)" )
-GAME_CUSTOM( 1991, m4andycpc5d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5td.p1", 0x0000, 0x010000, CRC(ab359cae) SHA1(f8ab817709e0eeb91a059cdef19df99c6286bf3f), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T D)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc5ad, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5tad.p1", 0x0000, 0x010000, CRC(dab92a37) SHA1(30297a7e1a995b76d8f955fd8a40efc914874e29), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T AD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc5b, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5tb.p1", 0x0000, 0x010000, CRC(1a747871) SHA1(61eb026c2d35feade5cfecf609e99cd0c6d0693e), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T B)" )
-GAME_CUSTOM( 1991, m4andycpc5bd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5tbd.p1", 0x0000, 0x010000, CRC(b0fb7c1c) SHA1(f5edf7685cc7015ac9791d35dde3fd284180660f), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T BD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc5k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5tk.p1", 0x0000, 0x010000, CRC(26a1d1f6) SHA1(c64763188dd0520c3f802863d36c84a476efef40), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T K)" )
-GAME_CUSTOM( 1991, m4andycpc5kd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5tdk.p1", 0x0000, 0x010000, CRC(295976d6) SHA1(a506097e94d290f5b66f61c9979b0ae4f211bb0c), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T KD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpc5y, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5ty.p1", 0x0000, 0x010000, CRC(52953040) SHA1(65102c88e8766e07d268fe0267bc6731d8b3eeb3), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T Y)" ) // needs % key
-GAME_CUSTOM( 1991, m4andycpc5yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, init_m4andycp, "c5tdy.p1", 0x0000, 0x010000, CRC(d9b4dc81) SHA1(e7b7a5f9b1ad348444d5403df2bf16b829364d33), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T YD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc5, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5ts.p1", 0x0000, 0x010000, CRC(3ade4b1b) SHA1(c65d05e2493a0e2d6a4be58a42aac6cb7f9c01b5), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T)" )
+GAME_CUSTOM( 1991, m4andycpc5d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5td.p1", 0x0000, 0x010000, CRC(ab359cae) SHA1(f8ab817709e0eeb91a059cdef19df99c6286bf3f), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T D)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc5ad, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5tad.p1", 0x0000, 0x010000, CRC(dab92a37) SHA1(30297a7e1a995b76d8f955fd8a40efc914874e29), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T AD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc5b, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5tb.p1", 0x0000, 0x010000, CRC(1a747871) SHA1(61eb026c2d35feade5cfecf609e99cd0c6d0693e), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T B)" )
+GAME_CUSTOM( 1991, m4andycpc5bd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5tbd.p1", 0x0000, 0x010000, CRC(b0fb7c1c) SHA1(f5edf7685cc7015ac9791d35dde3fd284180660f), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T BD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc5k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5tk.p1", 0x0000, 0x010000, CRC(26a1d1f6) SHA1(c64763188dd0520c3f802863d36c84a476efef40), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T K)" )
+GAME_CUSTOM( 1991, m4andycpc5kd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5tdk.p1", 0x0000, 0x010000, CRC(295976d6) SHA1(a506097e94d290f5b66f61c9979b0ae4f211bb0c), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T KD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpc5y, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5ty.p1", 0x0000, 0x010000, CRC(52953040) SHA1(65102c88e8766e07d268fe0267bc6731d8b3eeb3), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T Y)" ) // needs % key
+GAME_CUSTOM( 1991, m4andycpc5yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "c5tdy.p1", 0x0000, 0x010000, CRC(d9b4dc81) SHA1(e7b7a5f9b1ad348444d5403df2bf16b829364d33), "Barcrest", "Andy Capp (Barcrest) (MPU4) (C5T YD)" ) // datapak
// "(C)1991 BARCREST" and "AN8 0.1"
-GAME_CUSTOM( 1991, m4andycp8, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8s.p1", 0x0000, 0x010000, CRC(14ac28da) SHA1(0b4a3f997e10573f2c4c44daac344f4be52363a0), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8)" )
-GAME_CUSTOM( 1991, m4andycp8d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8d.p1", 0x0000, 0x010000, CRC(ae01af1c) SHA1(7b2305480a318648a3cc6c3bc66f21ac327e25aa), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 D)" ) // datapak
-GAME_CUSTOM( 1991, m4andycp8ad, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8ad.p1", 0x0000, 0x010000, CRC(d0f9da00) SHA1(fb380897fffc33d238b8fe7d47ff4d9d97960283), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 AD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycp8b, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8b.p1", 0x0000, 0x010000, CRC(fc4001ae) SHA1(b0cd795235e6f500f0150097b8f760165c17ca27), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 B)" )
-GAME_CUSTOM( 1991, m4andycp8c, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8c.p1", 0x0000, 0x010000, CRC(35a4403e) SHA1(33d3ca4e7bad25d064e0780c2104c395259c2a94), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 C)" )
-GAME_CUSTOM( 1991, m4andycp8k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8k.p1", 0x0000, 0x010000, CRC(296b4453) SHA1(060a6cea9a0be923e359dd69e34a6c25d631e4e5), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 K)" )
-GAME_CUSTOM( 1991, m4andycp8kd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8dk.p1", 0x0000, 0x010000, CRC(d43ad86d) SHA1(a71f1eb26e5f688db675b5c6bddda713e709a7af), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 KD)" ) // datapak
-GAME_CUSTOM( 1991, m4andycp8y, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8y.p1", 0x0000, 0x010000, CRC(44da57c9) SHA1(0f2776214068400a0e30b5642f42d72f58bbc29b), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 Y)" ) // need % key
-GAME_CUSTOM( 1991, m4andycp8yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "an8dy.p1", 0x0000, 0x010000, CRC(6730e476) SHA1(d19f7d173ec18085ef904c8621e81305bd54a143), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 YD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycp8, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8s.p1", 0x0000, 0x010000, CRC(14ac28da) SHA1(0b4a3f997e10573f2c4c44daac344f4be52363a0), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8)" )
+GAME_CUSTOM( 1991, m4andycp8d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8d.p1", 0x0000, 0x010000, CRC(ae01af1c) SHA1(7b2305480a318648a3cc6c3bc66f21ac327e25aa), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 D)" ) // datapak
+GAME_CUSTOM( 1991, m4andycp8ad, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8ad.p1", 0x0000, 0x010000, CRC(d0f9da00) SHA1(fb380897fffc33d238b8fe7d47ff4d9d97960283), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 AD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycp8b, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8b.p1", 0x0000, 0x010000, CRC(fc4001ae) SHA1(b0cd795235e6f500f0150097b8f760165c17ca27), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 B)" )
+GAME_CUSTOM( 1991, m4andycp8c, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8c.p1", 0x0000, 0x010000, CRC(35a4403e) SHA1(33d3ca4e7bad25d064e0780c2104c395259c2a94), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 C)" )
+GAME_CUSTOM( 1991, m4andycp8k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8k.p1", 0x0000, 0x010000, CRC(296b4453) SHA1(060a6cea9a0be923e359dd69e34a6c25d631e4e5), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 K)" )
+GAME_CUSTOM( 1991, m4andycp8kd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8dk.p1", 0x0000, 0x010000, CRC(d43ad86d) SHA1(a71f1eb26e5f688db675b5c6bddda713e709a7af), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 KD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycp8y, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8y.p1", 0x0000, 0x010000, CRC(44da57c9) SHA1(0f2776214068400a0e30b5642f42d72f58bbc29b), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 Y)" ) // need % key
+GAME_CUSTOM( 1991, m4andycp8yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "an8dy.p1", 0x0000, 0x010000, CRC(6730e476) SHA1(d19f7d173ec18085ef904c8621e81305bd54a143), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AN8 YD)" ) // datapak
// "(C)1991 BARCREST" and "AND 0.4"
-GAME_CUSTOM( 1991, m4andycpd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "ands.p1", 0x0000, 0x010000, CRC(120967eb) SHA1(f47846e5f1c6300518104341740e66610b9a9ab3), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND)" )
-GAME_CUSTOM( 1991, m4andycpdd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "andd.p1", 0x0000, 0x010000, CRC(d48a42fb) SHA1(94e3b994b9425af9a7744d511ad3413a79e24f21), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND D)" ) // datapak
-GAME_CUSTOM( 1991, m4andycpdc, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "andc.p1", 0x0000, 0x010000, CRC(31735e79) SHA1(7247efbfe41dce04dd494f07a8871f34d76eaacd), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND C)" )
-GAME_CUSTOM( 1991, m4andycpdk, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "andk.p1", 0x0000, 0x010000, CRC(08e6d20f) SHA1(f66207f69bf417e9380ecc8bd2ba73c6f3d55150), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND K)" )
-GAME_CUSTOM( 1991, m4andycpdy, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "andy.p1", 0x0000, 0x010000, CRC(b1124803) SHA1(0f3422e5f048d1748d2c912f2ea56f206fd101bb), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND Y, set 1)" ) // needs % key
-GAME_CUSTOM( 1991, m4andycpdyd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "anddy.p1", 0x0000, 0x010000, CRC(7f24b95d) SHA1(0aa97ad653b24265d73577db61200e44abf11c50), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND YD)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ands.p1", 0x0000, 0x010000, CRC(120967eb) SHA1(f47846e5f1c6300518104341740e66610b9a9ab3), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND)" )
+GAME_CUSTOM( 1991, m4andycpdd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "andd.p1", 0x0000, 0x010000, CRC(d48a42fb) SHA1(94e3b994b9425af9a7744d511ad3413a79e24f21), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND D)" ) // datapak
+GAME_CUSTOM( 1991, m4andycpdc, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "andc.p1", 0x0000, 0x010000, CRC(31735e79) SHA1(7247efbfe41dce04dd494f07a8871f34d76eaacd), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND C)" )
+GAME_CUSTOM( 1991, m4andycpdk, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "andk.p1", 0x0000, 0x010000, CRC(08e6d20f) SHA1(f66207f69bf417e9380ecc8bd2ba73c6f3d55150), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND K)" )
+GAME_CUSTOM( 1991, m4andycpdy, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "andy.p1", 0x0000, 0x010000, CRC(b1124803) SHA1(0f3422e5f048d1748d2c912f2ea56f206fd101bb), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND Y, set 1)" ) // needs % key
+GAME_CUSTOM( 1991, m4andycpdyd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "anddy.p1", 0x0000, 0x010000, CRC(7f24b95d) SHA1(0aa97ad653b24265d73577db61200e44abf11c50), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND YD)" ) // datapak
// "(C)1991 BARCREST" and "AND 0.2"
-GAME_CUSTOM( 1991, m4andycpdy_a, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, init_m4andycp, "acap20p", 0x0000, 0x010000, CRC(f0a9a4a4) SHA1(3c9a2e3d90ea91f92ae500856ad97c376edc1548), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND Y, set 2)" ) // needs % key
+GAME_CUSTOM( 1991, m4andycpdy_a, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "acap20p", 0x0000, 0x010000, CRC(f0a9a4a4) SHA1(3c9a2e3d90ea91f92ae500856ad97c376edc1548), "Barcrest", "Andy Capp (Barcrest) (MPU4) (AND Y, set 2)" ) // needs % key
// "(C)1994 B.W.B." and "AC101.0"
-GAME_CUSTOM( 1994, m4andycp, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac10.hex", 0x0000, 0x010000, CRC(0e250923) SHA1(9557315cca7a47c307e811d437ff424fe77a2843), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10)" )
-GAME_CUSTOM( 1994, m4andycp10c, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "aci10___.1_1", 0x0000, 0x010000, CRC(afa29daa) SHA1(33d161977b1e3512b550980aed48954ba7f0c5a2), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C)" )
-GAME_CUSTOM( 1994, m4andycp10d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac_10sd_.1_1", 0x0000, 0x010000, CRC(ec800208) SHA1(47734ae5a3184e4805a7620287fb5da7fe823929), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10D)" ) // datapak
-GAME_CUSTOM( 1994, m4andycp10k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac_10a__.1_1", 0x0000, 0x010000, CRC(c8a1150b) SHA1(99ba283aeacd1c415d261e10b5b7fd43d3c25af8), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10K)" )
-GAME_CUSTOM( 1994, m4andycp10yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac_10sb_.1_1", 0x0000, 0x010000, CRC(f68f8f48) SHA1(a156d942e7ab7446290dcd8def6236e7436126b9), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10YD)" ) // datapak
+GAME_CUSTOM( 1994, m4andycp, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac10.hex", 0x0000, 0x010000, CRC(0e250923) SHA1(9557315cca7a47c307e811d437ff424fe77a2843), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10)" )
+GAME_CUSTOM( 1994, m4andycp10c, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "aci10___.1_1", 0x0000, 0x010000, CRC(afa29daa) SHA1(33d161977b1e3512b550980aed48954ba7f0c5a2), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C)" )
+GAME_CUSTOM( 1994, m4andycp10d, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_10sd_.1_1", 0x0000, 0x010000, CRC(ec800208) SHA1(47734ae5a3184e4805a7620287fb5da7fe823929), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10D)" ) // datapak
+GAME_CUSTOM( 1994, m4andycp10k, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_10a__.1_1", 0x0000, 0x010000, CRC(c8a1150b) SHA1(99ba283aeacd1c415d261e10b5b7fd43d3c25af8), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10K)" )
+GAME_CUSTOM( 1994, m4andycp10yd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_10sb_.1_1", 0x0000, 0x010000, CRC(f68f8f48) SHA1(a156d942e7ab7446290dcd8def6236e7436126b9), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC10YD)" ) // datapak
// "(C)1994 B.W.B." and "AC5 1.0"
-GAME_CUSTOM( 1994, m4andycpac, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac_05s__.1_1", 0x0000, 0x010000, CRC(eab8aaca) SHA1(ccec86cf44f97a894192b2a6f900a93d26e84bf9), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5)" )
-GAME_CUSTOM( 1994, m4andycpacd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac_05sd_.1_1", 0x0000, 0x010000, CRC(4c815831) SHA1(66c6a4fed60ecc5ff5c9202528797d044fde3e76), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 D)" ) // datapak
-GAME_CUSTOM( 1994, m4andycpack, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac_05a__.1_1", 0x0000, 0x010000, CRC(880c2532) SHA1(a6a3c996c7507f0e2b8ae8e9fdfb7473263bd5cf), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 K)" )
-GAME_CUSTOM( 1994, m4andycpacyd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "ac_05sb_.1_1", 0x0000, 0x010000, CRC(dfd2571b) SHA1(98d93e30f4684fcbbc5ce4f356b8c9eeb20cbbdb), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 YD)" ) // datapak
-GAME_CUSTOM( 1994, m4andycpacc, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>, mpu4, init_m4andycp, "aci05___.1_1", 0x0000, 0x010000, CRC(e06174e8) SHA1(e984e45b99d4aef9b46c83590efadbdec9888b2d), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C)" )
+GAME_CUSTOM( 1994, m4andycpac, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_05s__.1_1", 0x0000, 0x010000, CRC(eab8aaca) SHA1(ccec86cf44f97a894192b2a6f900a93d26e84bf9), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5)" )
+GAME_CUSTOM( 1994, m4andycpacd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_05sd_.1_1", 0x0000, 0x010000, CRC(4c815831) SHA1(66c6a4fed60ecc5ff5c9202528797d044fde3e76), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 D)" ) // datapak
+GAME_CUSTOM( 1994, m4andycpack, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_05a__.1_1", 0x0000, 0x010000, CRC(880c2532) SHA1(a6a3c996c7507f0e2b8ae8e9fdfb7473263bd5cf), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 K)" )
+GAME_CUSTOM( 1994, m4andycpacyd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_05sb_.1_1", 0x0000, 0x010000, CRC(dfd2571b) SHA1(98d93e30f4684fcbbc5ce4f356b8c9eeb20cbbdb), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 YD)" ) // datapak
+GAME_CUSTOM( 1994, m4andycpacc, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andycappalt_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "aci05___.1_1", 0x0000, 0x010000, CRC(e06174e8) SHA1(e984e45b99d4aef9b46c83590efadbdec9888b2d), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C)" )
// "(C)1995 B.W.B." and "ACC52.0"
-GAME_CUSTOM( 1995, m4andycpaccsd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4, init_m4andycp, "ac_05_d4.2_1", 0x0000, 0x010000, CRC(f672182a) SHA1(55a6691fa9878bc2becf1f080915c0cd939240dd), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (ACC5)" ) // datapak (odd ident string)
+GAME_CUSTOM( 1995, m4andycpaccsd, m4andycp, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1, HT, LPS), mpu4, init_m4, "ac_05_d4.2_1", 0x0000, 0x010000, CRC(f672182a) SHA1(55a6691fa9878bc2becf1f080915c0cd939240dd), "BWB", "Andy Capp (BWB / Barcrest) (MPU4) (ACC5)" ) // datapak (odd ident string)
// different protection
// "95,S ALIVE!!!" and "AND 0.3" (hack?)
-GAME_CUSTOM( 199?, m4andycp20, m4andycp, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4andycp, "acap_20_.4", 0x0000, 0x010000, CRC(29848eed) SHA1(4096ab2f58b3293c559ff69c6f0f4d6c5dee2fd2), "hack?", "Andy Capp (Barcrest) (MPU4) (hack?, set 1)" ) // bad chr
-GAME_CUSTOM( 199?, m4andycp20_a, m4andycp, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4andycp, "acap_20_.8", 0x0000, 0x010000, CRC(3981ec67) SHA1(ad040a4c8690d4348bfe306309df5374251f2b3e), "hack?", "Andy Capp (Barcrest) (MPU4) (hack?, set 2)" ) // bad chr
+GAME_CUSTOM( 199?, m4andycp20, m4andycp, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, HT, LPS), mpu4, init_m4, "acap_20_.4", 0x0000, 0x010000, CRC(29848eed) SHA1(4096ab2f58b3293c559ff69c6f0f4d6c5dee2fd2), "hack?", "Andy Capp (Barcrest) (MPU4) (hack?, set 1)" ) // bad chr
+GAME_CUSTOM( 199?, m4andycp20_a, m4andycp, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, HT, LPS), mpu4, init_m4, "acap_20_.8", 0x0000, 0x010000, CRC(3981ec67) SHA1(ad040a4c8690d4348bfe306309df5374251f2b3e), "hack?", "Andy Capp (Barcrest) (MPU4) (hack?, set 2)" ) // bad chr
// different protection
// "95,S ALIVE!!!" and "AND 0.3" (hack?)
-GAME_CUSTOM( 199?, m4andycp20_b, m4andycp, mod4oki_bootleg_fixedret<0x1e>, mpu4, init_m4andycp, "acap20_11", 0x0000, 0x010000, CRC(799fd89e) SHA1(679016fad8b012bf6b6c617b99fd0dbe71eff562), "hack?", "Andy Capp (Barcrest) (MPU4) (hack?, set 3)" ) // bad chr
+GAME_CUSTOM( 199?, m4andycp20_b, m4andycp, mod4oki_bootleg_fixedret<0x1e>(R4, RT1, HT, LPS), mpu4, init_m4, "acap20_11", 0x0000, 0x010000, CRC(799fd89e) SHA1(679016fad8b012bf6b6c617b99fd0dbe71eff562), "hack?", "Andy Capp (Barcrest) (MPU4) (hack?, set 3)" ) // bad chr
// different protection, involving 814 and regular reads, see note at top of driver
// "FATHER CHISTMAS" and "AC5 1.0" (hack?)
-GAME_CUSTOM( 1994, m4andycpac_a, m4andycp, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4andycp, "acap_05_.8", 0x0000, 0x010000, CRC(a17dd8de) SHA1(963d39fdca7c7b54f5ecf723c982eb30a426ebae), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5, hack?)" )
-GAME_CUSTOM( 1994, m4andycpacc_a, m4andycp, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4andycp, "acap_05_.4", 0x0000, 0x010000, CRC(ca00ee84) SHA1(f1fef3db3db5ca7f0eb72ccc1daba8446db02924), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 1)" )
-GAME_CUSTOM( 1994, m4andycpacc_c, m4andycp, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4andycp, "ac058c", 0x0000, 0x010000, CRC(15204ccc) SHA1(ade376193bc2d53dd4c824ee35fbcc16da31330a), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 3)" )
-GAME_CUSTOM( 1994, m4andycpacc_b, m4andycp, mod4oki_bootleg_fixedret<0x47>, mpu4, init_m4andycp, "ac056c", 0x0000, 0x010000, CRC(cdeaeb06) SHA1(5bfcfba614477f4df9f4b2e56e8448eb357c554a), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 2)" )
-GAME_CUSTOM( 1994, m4andycpacc_d, m4andycp, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4andycp, "acap05_11", 0x0000, 0x010000, CRC(fb1533a0) SHA1(814e5dd9c4fe3baf4ea3b22c7e02e30b07bd27a1), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 4)" )
-GAME_CUSTOM( 1994, m4andycpacc_e, m4andycp, mod4oki_bootleg_fixedret<0x2b>, mpu4, init_m4andycp, "acap55", 0x0000, 0x010000, CRC(8007c459) SHA1(b3b6213d89eb0d2cc2f7dab81e0f0f2fdd0f8776), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 5)" )
+GAME_CUSTOM( 1994, m4andycpac_a, m4andycp, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, HT, LPS), mpu4, init_m4, "acap_05_.8", 0x0000, 0x010000, CRC(a17dd8de) SHA1(963d39fdca7c7b54f5ecf723c982eb30a426ebae), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5, hack?)" )
+GAME_CUSTOM( 1994, m4andycpacc_a, m4andycp, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, HT, LPS), mpu4, init_m4, "acap_05_.4", 0x0000, 0x010000, CRC(ca00ee84) SHA1(f1fef3db3db5ca7f0eb72ccc1daba8446db02924), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 1)" )
+GAME_CUSTOM( 1994, m4andycpacc_c, m4andycp, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, HT, LPS), mpu4, init_m4, "ac058c", 0x0000, 0x010000, CRC(15204ccc) SHA1(ade376193bc2d53dd4c824ee35fbcc16da31330a), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 3)" )
+GAME_CUSTOM( 1994, m4andycpacc_b, m4andycp, mod4oki_bootleg_fixedret<0x47>(R4, RT1, HT, LPS), mpu4, init_m4, "ac056c", 0x0000, 0x010000, CRC(cdeaeb06) SHA1(5bfcfba614477f4df9f4b2e56e8448eb357c554a), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 2)" )
+GAME_CUSTOM( 1994, m4andycpacc_d, m4andycp, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, HT, LPS), mpu4, init_m4, "acap05_11", 0x0000, 0x010000, CRC(fb1533a0) SHA1(814e5dd9c4fe3baf4ea3b22c7e02e30b07bd27a1), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 4)" )
+GAME_CUSTOM( 1994, m4andycpacc_e, m4andycp, mod4oki_bootleg_fixedret<0x2b>(R4, RT1, HT, LPS), mpu4, init_m4, "acap55", 0x0000, 0x010000, CRC(8007c459) SHA1(b3b6213d89eb0d2cc2f7dab81e0f0f2fdd0f8776), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 5)" )
// "FATHER CHISTMAS" and "AC101.0" (hack?)
-GAME_CUSTOM( 1994, m4andycp10_a, m4andycp, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4andycp, "acap_10_.8", 0x0000, 0x010000, CRC(614403a7) SHA1(b627c7c3c6f9a43a0cd9e064715aeee8834c717c), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10, hack?)" )
-GAME_CUSTOM( 1994, m4andycp10c_b, m4andycp, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4andycp, "acp8ac", 0x0000, 0x010000, CRC(d51997b5) SHA1(fe08b5a3832eeaa80f674893342c3baea1608a91), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 2)" )
-GAME_CUSTOM( 1994, m4andycp10c_d, m4andycp, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4andycp, "acap_10_.4", 0x0000, 0x010000, CRC(fffe742d) SHA1(f2ca45391690dc31662e2d97a3ee34473effa258), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 4)" )
-GAME_CUSTOM( 1994, m4andycp10c_c, m4andycp, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4andycp, "acap10_11", 0x0000, 0x010000, CRC(c3a866e7) SHA1(4c18e5a26ad2885eb012fd3dd61aaf9cc7d3519a), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 3)" )
-GAME_CUSTOM( 1994, m4andycp10c_a, m4andycp, mod4oki_bootleg_fixedret<0x1c>, mpu4, init_m4andycp, "acapp10p5.bin", 0x0000, 0x010000, CRC(de650e19) SHA1(c1b9cbad23a1eac9b3718f4f2457c97317f96be6), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 1)" )
+GAME_CUSTOM( 1994, m4andycp10_a, m4andycp, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, HT, LPS), mpu4, init_m4, "acap_10_.8", 0x0000, 0x010000, CRC(614403a7) SHA1(b627c7c3c6f9a43a0cd9e064715aeee8834c717c), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10, hack?)" )
+GAME_CUSTOM( 1994, m4andycp10c_b, m4andycp, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, HT, LPS), mpu4, init_m4, "acp8ac", 0x0000, 0x010000, CRC(d51997b5) SHA1(fe08b5a3832eeaa80f674893342c3baea1608a91), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 2)" )
+GAME_CUSTOM( 1994, m4andycp10c_d, m4andycp, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, HT, LPS), mpu4, init_m4, "acap_10_.4", 0x0000, 0x010000, CRC(fffe742d) SHA1(f2ca45391690dc31662e2d97a3ee34473effa258), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 4)" )
+GAME_CUSTOM( 1994, m4andycp10c_c, m4andycp, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, HT, LPS), mpu4, init_m4, "acap10_11", 0x0000, 0x010000, CRC(c3a866e7) SHA1(4c18e5a26ad2885eb012fd3dd61aaf9cc7d3519a), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 3)" )
+GAME_CUSTOM( 1994, m4andycp10c_a, m4andycp, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, HT, LPS), mpu4, init_m4, "acapp10p5.bin", 0x0000, 0x010000, CRC(de650e19) SHA1(c1b9cbad23a1eac9b3718f4f2457c97317f96be6), "hack?", "Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 1)" )
/*****************************************************************************************************************************************************************************
@@ -416,7 +400,7 @@ ROM_START( m4andycpdut )
ROM_END
// blank copyright and "DAC 1.3" (6 reel game, not the same as the UK version?)
-GAME(199?, m4andycpdut, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six_sextender, ROT0, "Barcrest", "Andy Capp (Barcrest) (Dutch) (MPU4) (DAC 1.3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4andycpdut, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>(R6, RT1, LPS), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest", "Andy Capp (Barcrest) (Dutch) (MPU4) (DAC 1.3)", GAME_FLAGS|MACHINE_NO_SOUND )
/*****************************************************************************************************************************************************************************
@@ -438,7 +422,7 @@ GAME(199?, m4andycpdut, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::phr_char
ROM_LOAD( name, offset, length, hash ) \
M4ANDYFL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "ALT 0.4"
GAME_CUSTOM( 1991, m4andyflt, m4andyfl, "alt04s.p1", 0x0000, 0x010000, CRC(81cf27b3) SHA1(b04970a20a297032cf33dbe97fa22fb723587228), "Barcrest", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4)" )
@@ -472,7 +456,7 @@ GAME_CUSTOM( 1991, m4andyfluyd, m4andyfl, "alu03dy.p1", 0x000
ROM_LOAD( name, offset, length, hash ) \
M4ANDYFL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cheryo_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cheryo_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1996 B.W.B." and "AL4 2.1"
GAME_CUSTOM( 1996, m4andyfl, 0, "andy loves flo 05a 4 2-1",0x0000, 0x010000, CRC(773d2c6f) SHA1(944be6fff70439077a9c0d858e76806e0317585c), "BWB", "Andy Loves Flo (BWB / Barcrest) (MPU4) (AL4 2.1 KS)" )
@@ -486,7 +470,7 @@ GAME_CUSTOM( 1996, m4andyfl8bs, m4andyfl, "al_05a__.2_1", 0x000
ROM_LOAD( name, offset, length, hash ) \
M4ANDYFL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andyfloalt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andyfloalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "AL3 0.1"
GAME_CUSTOM( 1991, m4andyfl3, m4andyfl, "al3s.p1", 0x0000, 0x010000, CRC(07d4d6c3) SHA1(d013cf49ed4b84e6149065c95d1cd00eca0d62b8), "Barcrest", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1)" )
@@ -506,7 +490,7 @@ GAME_CUSTOM( 1991, m4andyfl3yd, m4andyfl, "al3dy.p1", 0x000
ROM_LOAD( name, offset, length, hash ) \
M4ANDYFL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "AL8 0.1"
GAME_CUSTOM( 1991, m4andyfl8, m4andyfl, "al8s.p1", 0x0000, 0x010000, CRC(37e211f9) SHA1(8614e8081fdd370d6c3dd537ee6058a2247d4ae0), "Barcrest", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1)" )
@@ -550,85 +534,85 @@ GAME_CUSTOM( 1991, m4andyflfr, m4andyfl, "alfr.p1", 0x000
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "DF5 0.3"
-GAME_CUSTOM( 1993, m4dtyfref5, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503s.p1", 0x0000, 0x010000, CRC(d5e80ed5) SHA1(b2d601b2a0020f4adf80b1256d31c8cce432ecee), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3)" )
-GAME_CUSTOM( 1993, m4dtyfref5d, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503d.p1", 0x0000, 0x010000, CRC(3eab581a) SHA1(e1f358081953feccf1f03d733f29e839d5f51fcb), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 D)" )
-GAME_CUSTOM( 1993, m4dtyfref5ad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503ad.p1", 0x0000, 0x010000, CRC(348e375f) SHA1(f9a7e84afb33ec8fad14521eb2ea5d5cdfa48005), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 AD)" )
-GAME_CUSTOM( 1993, m4dtyfref5b, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503b.p1", 0x0000, 0x010000, CRC(5eef10a2) SHA1(938e9a04fe54ac24dd93e9a1388c1dcf485ac212), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 B)" )
-GAME_CUSTOM( 1993, m4dtyfref5bd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503bd.p1", 0x0000, 0x010000, CRC(94840089) SHA1(a48668cdc1d7edae425cc80f2ce0f884f8619242), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 BD)" )
-GAME_CUSTOM( 1993, m4dtyfref5k, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503k.p1", 0x0000, 0x010000, CRC(bc51cc39) SHA1(0bb977c14e66ec48cd64b01a509d8f0cecdc7880), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 K)" )
-GAME_CUSTOM( 1993, m4dtyfref5kd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503dk.p1", 0x0000, 0x010000, CRC(85ede229) SHA1(6799567df8078b69f897c0c5d8a315c6e3ef79b5), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 KD)" )
-GAME_CUSTOM( 1993, m4dtyfref5r, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503r.p1", 0x0000, 0x010000, CRC(6b1940e0) SHA1(e8d3683d1ef65d2e7e035e9aab98ab9136f89464), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 R)" )
-GAME_CUSTOM( 1993, m4dtyfref5rd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503dr.p1", 0x0000, 0x010000, CRC(42721aa6) SHA1(8a29a4433d641ea37bbe3bf99f9222e8261dd63f), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 RD)" )
-GAME_CUSTOM( 1993, m4dtyfref5y, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503y.p1", 0x0000, 0x010000, CRC(118642d4) SHA1(af2c86f0120f38652dc3d1141c5339a32bf73e11), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 Y)" )
-GAME_CUSTOM( 1993, m4dtyfref5yd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "df503dy.p1", 0x0000, 0x010000, CRC(cfce461e) SHA1(5bbbe878e89b1d775048945e259b711ef60de9a1), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 YD)" )
+GAME_CUSTOM( 1993, m4dtyfref5, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503s.p1", 0x0000, 0x010000, CRC(d5e80ed5) SHA1(b2d601b2a0020f4adf80b1256d31c8cce432ecee), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3)" )
+GAME_CUSTOM( 1993, m4dtyfref5d, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503d.p1", 0x0000, 0x010000, CRC(3eab581a) SHA1(e1f358081953feccf1f03d733f29e839d5f51fcb), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 D)" )
+GAME_CUSTOM( 1993, m4dtyfref5ad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503ad.p1", 0x0000, 0x010000, CRC(348e375f) SHA1(f9a7e84afb33ec8fad14521eb2ea5d5cdfa48005), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 AD)" )
+GAME_CUSTOM( 1993, m4dtyfref5b, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503b.p1", 0x0000, 0x010000, CRC(5eef10a2) SHA1(938e9a04fe54ac24dd93e9a1388c1dcf485ac212), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 B)" )
+GAME_CUSTOM( 1993, m4dtyfref5bd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503bd.p1", 0x0000, 0x010000, CRC(94840089) SHA1(a48668cdc1d7edae425cc80f2ce0f884f8619242), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 BD)" )
+GAME_CUSTOM( 1993, m4dtyfref5k, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503k.p1", 0x0000, 0x010000, CRC(bc51cc39) SHA1(0bb977c14e66ec48cd64b01a509d8f0cecdc7880), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 K)" )
+GAME_CUSTOM( 1993, m4dtyfref5kd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503dk.p1", 0x0000, 0x010000, CRC(85ede229) SHA1(6799567df8078b69f897c0c5d8a315c6e3ef79b5), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 KD)" )
+GAME_CUSTOM( 1993, m4dtyfref5r, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503r.p1", 0x0000, 0x010000, CRC(6b1940e0) SHA1(e8d3683d1ef65d2e7e035e9aab98ab9136f89464), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 R)" )
+GAME_CUSTOM( 1993, m4dtyfref5rd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503dr.p1", 0x0000, 0x010000, CRC(42721aa6) SHA1(8a29a4433d641ea37bbe3bf99f9222e8261dd63f), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 RD)" )
+GAME_CUSTOM( 1993, m4dtyfref5y, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503y.p1", 0x0000, 0x010000, CRC(118642d4) SHA1(af2c86f0120f38652dc3d1141c5339a32bf73e11), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 Y)" )
+GAME_CUSTOM( 1993, m4dtyfref5yd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df503dy.p1", 0x0000, 0x010000, CRC(cfce461e) SHA1(5bbbe878e89b1d775048945e259b711ef60de9a1), "Barcrest","Duty Free (Barcrest) (MPU4) (DF5 0.3 YD)" )
// "(C)1993 BARCREST" and "DFT 0.1"
-GAME_CUSTOM( 1993, m4dtyfreft, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dfts.p1", 0x0000, 0x010000, CRC(d6585e76) SHA1(91538ff218d8dd7a0d6747daaa9921d3e4b3ec33), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1)" )
-GAME_CUSTOM( 1993, m4dtyfreftd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dftd.p1", 0x0000, 0x010000, CRC(9ac1f31f) SHA1(541a761c8755d1d85cedbba306ff7330d284480f), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 D)" )
-GAME_CUSTOM( 1993, m4dtyfreftad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dftad.p1", 0x0000, 0x010000, CRC(045cedc1) SHA1(0f833077dee2b942e17ce49b5f506d9754ed0bc1), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 AD)" )
-GAME_CUSTOM( 1993, m4dtyfreftb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dftb.p1", 0x0000, 0x010000, CRC(93567c8b) SHA1(8dc7d662ae4a5dd58240e90144c0c9905afc04f1), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 B)" )
-GAME_CUSTOM( 1993, m4dtyfreftbd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dftbd.p1", 0x0000, 0x010000, CRC(b5e5b19a) SHA1(8533865e8c63498e808fb9b1da86fe0ac2a7efdc), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 BD)" )
-GAME_CUSTOM( 1993, m4dtyfreftk, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dftk.p1", 0x0000, 0x010000, CRC(ad9bb027) SHA1(630e334fdffbdecc903f75b9447c2c7993cf2656), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 K)" )
-GAME_CUSTOM( 1993, m4dtyfreftkd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dftdk.p1", 0x0000, 0x010000, CRC(dbb4bf41) SHA1(c20b102a53f4d4ccbdb83433a80c77aa444a982d), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 KD)" )
-GAME_CUSTOM( 1993, m4dtyfrefty, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dfty.p1", 0x0000, 0x010000, CRC(0dead807) SHA1(a704ec65b1d6f91b4950181a792bb082c81fe668), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 Y)" )
-GAME_CUSTOM( 1993, m4dtyfreftyd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "dftdy.p1", 0x0000, 0x010000, CRC(6b12a337) SHA1(57cfa667a2ae3bea36d82ef32429638dc36533ad), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 YD)" )
+GAME_CUSTOM( 1993, m4dtyfreft, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dfts.p1", 0x0000, 0x010000, CRC(d6585e76) SHA1(91538ff218d8dd7a0d6747daaa9921d3e4b3ec33), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1)" )
+GAME_CUSTOM( 1993, m4dtyfreftd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dftd.p1", 0x0000, 0x010000, CRC(9ac1f31f) SHA1(541a761c8755d1d85cedbba306ff7330d284480f), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 D)" )
+GAME_CUSTOM( 1993, m4dtyfreftad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dftad.p1", 0x0000, 0x010000, CRC(045cedc1) SHA1(0f833077dee2b942e17ce49b5f506d9754ed0bc1), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 AD)" )
+GAME_CUSTOM( 1993, m4dtyfreftb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dftb.p1", 0x0000, 0x010000, CRC(93567c8b) SHA1(8dc7d662ae4a5dd58240e90144c0c9905afc04f1), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 B)" )
+GAME_CUSTOM( 1993, m4dtyfreftbd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dftbd.p1", 0x0000, 0x010000, CRC(b5e5b19a) SHA1(8533865e8c63498e808fb9b1da86fe0ac2a7efdc), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 BD)" )
+GAME_CUSTOM( 1993, m4dtyfreftk, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dftk.p1", 0x0000, 0x010000, CRC(ad9bb027) SHA1(630e334fdffbdecc903f75b9447c2c7993cf2656), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 K)" )
+GAME_CUSTOM( 1993, m4dtyfreftkd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dftdk.p1", 0x0000, 0x010000, CRC(dbb4bf41) SHA1(c20b102a53f4d4ccbdb83433a80c77aa444a982d), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 KD)" )
+GAME_CUSTOM( 1993, m4dtyfrefty, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dfty.p1", 0x0000, 0x010000, CRC(0dead807) SHA1(a704ec65b1d6f91b4950181a792bb082c81fe668), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 Y)" )
+GAME_CUSTOM( 1993, m4dtyfreftyd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dftdy.p1", 0x0000, 0x010000, CRC(6b12a337) SHA1(57cfa667a2ae3bea36d82ef32429638dc36533ad), "Barcrest","Duty Free (Barcrest) (MPU4) (DFT 0.1 YD)" )
// "(C)1993 BARCREST" and "XD5 0.2"
-GAME_CUSTOM( 1993, m4dtyfrexd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502s.p1", 0x0000, 0x010000, CRC(223117c7) SHA1(9c017c4165db7076c76c081404d27742fd1f62e7), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2)" )
-GAME_CUSTOM( 1993, m4dtyfrexdd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502d.p1", 0x0000, 0x010000, CRC(7b44a085) SHA1(d7e4c25e0d42a32f72afdb17b66425e1127373fc), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 D)" )
-GAME_CUSTOM( 1993, m4dtyfrexdad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502ad.p1", 0x0000, 0x010000, CRC(62700345) SHA1(9825a9a6161e217ba4682902ac25528287d4ecf3), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 AD)" )
-GAME_CUSTOM( 1993, m4dtyfrexdb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502b.p1", 0x0000, 0x010000, CRC(40069386) SHA1(0d065c2b528b406468354be68bbafdcac05f779d), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 B)" )
-GAME_CUSTOM( 1993, m4dtyfrexdbd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502bd.p1", 0x0000, 0x010000, CRC(2cdc9833) SHA1(d3fa76c0a9a0113fbb7a83a47e3f7a72aeb942aa), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 BD)" )
-GAME_CUSTOM( 1993, m4dtyfrexdc, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502c.p1", 0x0000, 0x010000, CRC(17124bb6) SHA1(4ab22cffe11e84ff08bf0f026b0ca6d9a0d32bed), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 C)" )
-GAME_CUSTOM( 1993, m4dtyfrexdk, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502k.p1", 0x0000, 0x010000, CRC(c9a3b787) SHA1(c7166c9e809a37037dfdc616df5fbd6b6ff8b2f8), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 K)" )
-GAME_CUSTOM( 1993, m4dtyfrexdkd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502dk.p1", 0x0000, 0x010000, CRC(790aac05) SHA1(db697b9a87d0266fabd23e1b085234e36c816170), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 KD)" )
-GAME_CUSTOM( 1993, m4dtyfrexdr, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502r.p1", 0x0000, 0x010000, CRC(4ddbd944) SHA1(c3df807ead3a50c7be73b084f65771e4b9d1f2d0), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 R)" )
-GAME_CUSTOM( 1993, m4dtyfrexdrd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502dr.p1", 0x0000, 0x010000, CRC(77a14f87) SHA1(651b58c0a9ec13441c9bf8d7bf0d7c736337f171), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 RD)" )
-GAME_CUSTOM( 1993, m4dtyfrexdy, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502y.p1", 0x0000, 0x010000, CRC(d0b0f1aa) SHA1(39560550083952cae568d4d634c04bf48b7baca6), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 Y)" )
-GAME_CUSTOM( 1993, m4dtyfrexdyd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd502dy.p1", 0x0000, 0x010000, CRC(eaca6769) SHA1(1d3d1264d849043f0adcf9a32520e5f80ae17b5f), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 YD)" )
+GAME_CUSTOM( 1993, m4dtyfrexd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502s.p1", 0x0000, 0x010000, CRC(223117c7) SHA1(9c017c4165db7076c76c081404d27742fd1f62e7), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2)" )
+GAME_CUSTOM( 1993, m4dtyfrexdd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502d.p1", 0x0000, 0x010000, CRC(7b44a085) SHA1(d7e4c25e0d42a32f72afdb17b66425e1127373fc), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 D)" )
+GAME_CUSTOM( 1993, m4dtyfrexdad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502ad.p1", 0x0000, 0x010000, CRC(62700345) SHA1(9825a9a6161e217ba4682902ac25528287d4ecf3), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 AD)" )
+GAME_CUSTOM( 1993, m4dtyfrexdb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502b.p1", 0x0000, 0x010000, CRC(40069386) SHA1(0d065c2b528b406468354be68bbafdcac05f779d), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 B)" )
+GAME_CUSTOM( 1993, m4dtyfrexdbd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502bd.p1", 0x0000, 0x010000, CRC(2cdc9833) SHA1(d3fa76c0a9a0113fbb7a83a47e3f7a72aeb942aa), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 BD)" )
+GAME_CUSTOM( 1993, m4dtyfrexdc, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502c.p1", 0x0000, 0x010000, CRC(17124bb6) SHA1(4ab22cffe11e84ff08bf0f026b0ca6d9a0d32bed), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 C)" )
+GAME_CUSTOM( 1993, m4dtyfrexdk, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502k.p1", 0x0000, 0x010000, CRC(c9a3b787) SHA1(c7166c9e809a37037dfdc616df5fbd6b6ff8b2f8), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 K)" )
+GAME_CUSTOM( 1993, m4dtyfrexdkd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502dk.p1", 0x0000, 0x010000, CRC(790aac05) SHA1(db697b9a87d0266fabd23e1b085234e36c816170), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 KD)" )
+GAME_CUSTOM( 1993, m4dtyfrexdr, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502r.p1", 0x0000, 0x010000, CRC(4ddbd944) SHA1(c3df807ead3a50c7be73b084f65771e4b9d1f2d0), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 R)" )
+GAME_CUSTOM( 1993, m4dtyfrexdrd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502dr.p1", 0x0000, 0x010000, CRC(77a14f87) SHA1(651b58c0a9ec13441c9bf8d7bf0d7c736337f171), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 RD)" )
+GAME_CUSTOM( 1993, m4dtyfrexdy, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502y.p1", 0x0000, 0x010000, CRC(d0b0f1aa) SHA1(39560550083952cae568d4d634c04bf48b7baca6), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 Y)" )
+GAME_CUSTOM( 1993, m4dtyfrexdyd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd502dy.p1", 0x0000, 0x010000, CRC(eaca6769) SHA1(1d3d1264d849043f0adcf9a32520e5f80ae17b5f), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.2 YD)" )
// "(C)1993 BARCREST" and "XD5 0.1"
-GAME_CUSTOM( 1993, m4dtyfrexd_a, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xd5s.p1", 0x0000, 0x010000, CRC(235ba9d1) SHA1(3a58c986f63c9ee75e91c59455b0a02582b4301b), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.1)" )
+GAME_CUSTOM( 1993, m4dtyfrexd_a, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xd5s.p1", 0x0000, 0x010000, CRC(235ba9d1) SHA1(3a58c986f63c9ee75e91c59455b0a02582b4301b), "Barcrest","Duty Free (Barcrest) (MPU4) (XD5 0.1)" )
// "(C)1993 BARCREST" and "XFT 0.1"
-GAME_CUSTOM( 1993, m4dtyfrexf, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01s.p1", 0x0000, 0x010000, CRC(fc107ba0) SHA1(661f1ab0d0192f77c355d5570885940d71174592), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1)" )
-GAME_CUSTOM( 1993, m4dtyfrexfd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01d.p1", 0x0000, 0x010000, CRC(88391d1c) SHA1(f1b1034b962a03efd7d2cbe6ac0cc7328871a180), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 D)" )
-GAME_CUSTOM( 1993, m4dtyfrexfad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01ad.p1", 0x0000, 0x010000, CRC(7299da07) SHA1(eb1371ce52e24fbfcac8f45166ca56d8aee9d403), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 AD)" )
-GAME_CUSTOM( 1993, m4dtyfrexfb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01b.p1", 0x0000, 0x010000, CRC(c24904c4) SHA1(1c1b94b499f7a50e04b1287ce95633a8b0a5c0ea), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 B)" )
-GAME_CUSTOM( 1993, m4dtyfrexfbd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01bd.p1", 0x0000, 0x010000, CRC(e67a0e47) SHA1(8115a5ab8b508ff30b28fa8f5d33f598385ee115), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 BD)" )
-GAME_CUSTOM( 1993, m4dtyfrexfc, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01c.p1", 0x0000, 0x010000, CRC(ee915038) SHA1(a0239268eae757e8e7ee16d9acb5dc28e7820b4e), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 C)" )
-GAME_CUSTOM( 1993, m4dtyfrexfk, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01k.p1", 0x0000, 0x010000, CRC(fbdc88b2) SHA1(231b6b8ba92a794ec363c1b853921e28e6b34fec), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 K)" )
-GAME_CUSTOM( 1993, m4dtyfrexfkd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01dk.p1", 0x0000, 0x010000, CRC(dfef8231) SHA1(7610a7bcdb91a39cf86ac926818d02f4d751f099), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 KD)" )
-GAME_CUSTOM( 1993, m4dtyfrexfr, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01r.p1", 0x0000, 0x010000, CRC(dd8b05e6) SHA1(64a5aaaa6e7fb162c23ad0e36d39923e986b0fb4), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 R)" )
-GAME_CUSTOM( 1993, m4dtyfrexfrd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01dr.p1", 0x0000, 0x010000, CRC(213f7fe5) SHA1(7e9cad6df7f4a58a0b98dbac552bf545a53ebfcd), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 RD)" )
-GAME_CUSTOM( 1993, m4dtyfrexfy, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01y.p1", 0x0000, 0x010000, CRC(39e49e72) SHA1(459e0d81b6d0d2aa44aa6a7a00cbdec4d9536df0), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 Y)" )
-GAME_CUSTOM( 1993, m4dtyfrexfyd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, init_m4default_lextender, "xft01dy.p1", 0x0000, 0x010000, CRC(25fc8e71) SHA1(54c4c8c2118b4758dedb15f0a11f918f2ee0fb7d), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 YD)" )
+GAME_CUSTOM( 1993, m4dtyfrexf, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01s.p1", 0x0000, 0x010000, CRC(fc107ba0) SHA1(661f1ab0d0192f77c355d5570885940d71174592), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1)" )
+GAME_CUSTOM( 1993, m4dtyfrexfd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01d.p1", 0x0000, 0x010000, CRC(88391d1c) SHA1(f1b1034b962a03efd7d2cbe6ac0cc7328871a180), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 D)" )
+GAME_CUSTOM( 1993, m4dtyfrexfad, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01ad.p1", 0x0000, 0x010000, CRC(7299da07) SHA1(eb1371ce52e24fbfcac8f45166ca56d8aee9d403), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 AD)" )
+GAME_CUSTOM( 1993, m4dtyfrexfb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01b.p1", 0x0000, 0x010000, CRC(c24904c4) SHA1(1c1b94b499f7a50e04b1287ce95633a8b0a5c0ea), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 B)" )
+GAME_CUSTOM( 1993, m4dtyfrexfbd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01bd.p1", 0x0000, 0x010000, CRC(e67a0e47) SHA1(8115a5ab8b508ff30b28fa8f5d33f598385ee115), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 BD)" )
+GAME_CUSTOM( 1993, m4dtyfrexfc, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01c.p1", 0x0000, 0x010000, CRC(ee915038) SHA1(a0239268eae757e8e7ee16d9acb5dc28e7820b4e), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 C)" )
+GAME_CUSTOM( 1993, m4dtyfrexfk, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01k.p1", 0x0000, 0x010000, CRC(fbdc88b2) SHA1(231b6b8ba92a794ec363c1b853921e28e6b34fec), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 K)" )
+GAME_CUSTOM( 1993, m4dtyfrexfkd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01dk.p1", 0x0000, 0x010000, CRC(dfef8231) SHA1(7610a7bcdb91a39cf86ac926818d02f4d751f099), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 KD)" )
+GAME_CUSTOM( 1993, m4dtyfrexfr, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01r.p1", 0x0000, 0x010000, CRC(dd8b05e6) SHA1(64a5aaaa6e7fb162c23ad0e36d39923e986b0fb4), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 R)" )
+GAME_CUSTOM( 1993, m4dtyfrexfrd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01dr.p1", 0x0000, 0x010000, CRC(213f7fe5) SHA1(7e9cad6df7f4a58a0b98dbac552bf545a53ebfcd), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 RD)" )
+GAME_CUSTOM( 1993, m4dtyfrexfy, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01y.p1", 0x0000, 0x010000, CRC(39e49e72) SHA1(459e0d81b6d0d2aa44aa6a7a00cbdec4d9536df0), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 Y)" )
+GAME_CUSTOM( 1993, m4dtyfrexfyd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "xft01dy.p1", 0x0000, 0x010000, CRC(25fc8e71) SHA1(54c4c8c2118b4758dedb15f0a11f918f2ee0fb7d), "Barcrest","Duty Free (Barcrest) (MPU4) (XFT 0.1 YD)" )
// "(C)1993 BARCREST" and "DUT 0.4"
-GAME_CUSTOM( 1993, m4dtyfre, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "duts.p1", 0x0000, 0x010000, CRC(8c7d6567) SHA1(8e82c4168d4d455c7cb95a895c04f7ad327894ec), "Barcrest","Duty Free (Barcrest) (MPU4) (DUT 0.4)" )
-GAME_CUSTOM( 1993, m4dtyfreutb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "dutb.p1", 0x0000, 0x010000, CRC(479acab7) SHA1(645e876b2c59dd4c091b5f168dcfd2cfa7eda0a3), "Barcrest","Duty Free (Barcrest) (MPU4) (DUT 0.4 B)" )
-GAME_CUSTOM( 1993, m4dtyfreutc, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "dutc.p1", 0x0000, 0x010000, CRC(654858eb) SHA1(4e95d6f1b84360b747a04d34bfda4d8c8ee3ea3b), "Barcrest","Duty Free (Barcrest) (MPU4) (DUT 0.4 C)" )
+GAME_CUSTOM( 1993, m4dtyfre, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "duts.p1", 0x0000, 0x010000, CRC(8c7d6567) SHA1(8e82c4168d4d455c7cb95a895c04f7ad327894ec), "Barcrest","Duty Free (Barcrest) (MPU4) (DUT 0.4)" )
+GAME_CUSTOM( 1993, m4dtyfreutb, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dutb.p1", 0x0000, 0x010000, CRC(479acab7) SHA1(645e876b2c59dd4c091b5f168dcfd2cfa7eda0a3), "Barcrest","Duty Free (Barcrest) (MPU4) (DUT 0.4 B)" )
+GAME_CUSTOM( 1993, m4dtyfreutc, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "dutc.p1", 0x0000, 0x010000, CRC(654858eb) SHA1(4e95d6f1b84360b747a04d34bfda4d8c8ee3ea3b), "Barcrest","Duty Free (Barcrest) (MPU4) (DUT 0.4 C)" )
// "(C)1993 BARCREST" and "DF8 0.1"
-GAME_CUSTOM( 1993, m4dtyfref8, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "df8s.p1", 0x0000, 0x010000, CRC(00571ce4) SHA1(39f5ecec8ccdefb68a8b9d2ab1cd0be6acb0c1c7), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1)" )
-GAME_CUSTOM( 1993, m4dtyfref8d, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "df8d.p1", 0x0000, 0x010000, CRC(df3a0ed7) SHA1(97569499f65e768a059fc86bdbcbde31e1977c23), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 D)" )
-GAME_CUSTOM( 1993, m4dtyfref8c, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "df8c.p1", 0x0000, 0x010000, CRC(07a82d24) SHA1(548576ce7c8d661777122e0d86d8273933beff11), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 C)" )
-GAME_CUSTOM( 1993, m4dtyfref8k, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "df8k.p1", 0x0000, 0x010000, CRC(056ac122) SHA1(9a993c0a7322323512a26b147963591212a226ab), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 K)" )
-GAME_CUSTOM( 1993, m4dtyfref8y, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "df8y.p1", 0x0000, 0x010000, CRC(cb902ef4) SHA1(efd7cb0a002aa54131725759cb73387f281f15a9), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 Y)" )
-GAME_CUSTOM( 1993, m4dtyfref8yd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "df8dy.p1", 0x0000, 0x010000, CRC(0f24e42d) SHA1(1049f50bc8e0a2f7b77d8e3cdc8883b6879e5cd9), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 YD)" )
+GAME_CUSTOM( 1993, m4dtyfref8, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df8s.p1", 0x0000, 0x010000, CRC(00571ce4) SHA1(39f5ecec8ccdefb68a8b9d2ab1cd0be6acb0c1c7), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1)" )
+GAME_CUSTOM( 1993, m4dtyfref8d, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df8d.p1", 0x0000, 0x010000, CRC(df3a0ed7) SHA1(97569499f65e768a059fc86bdbcbde31e1977c23), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 D)" )
+GAME_CUSTOM( 1993, m4dtyfref8c, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df8c.p1", 0x0000, 0x010000, CRC(07a82d24) SHA1(548576ce7c8d661777122e0d86d8273933beff11), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 C)" )
+GAME_CUSTOM( 1993, m4dtyfref8k, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df8k.p1", 0x0000, 0x010000, CRC(056ac122) SHA1(9a993c0a7322323512a26b147963591212a226ab), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 K)" )
+GAME_CUSTOM( 1993, m4dtyfref8y, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df8y.p1", 0x0000, 0x010000, CRC(cb902ef4) SHA1(efd7cb0a002aa54131725759cb73387f281f15a9), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 Y)" )
+GAME_CUSTOM( 1993, m4dtyfref8yd, m4dtyfre, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "df8dy.p1", 0x0000, 0x010000, CRC(0f24e42d) SHA1(1049f50bc8e0a2f7b77d8e3cdc8883b6879e5cd9), "Barcrest","Duty Free (Barcrest) (MPU4) (DF8 0.1 YD)" )
// "1997 COCO" and "DF4 4.1" (hack?)
-GAME_CUSTOM( 199?, m4dtyfre_h1, m4dtyfre, mod4oki_bootleg_fixedret<0x2b>, mpu4, init_m4default_lextender, "dfre55", 0x0000, 0x010000, CRC(01e7d367) SHA1(638b709e4bb997998ccc7c4ea8adc33cabf2fe36), "hack?","Duty Free (BWB / Barcrest) (MPU4) (DF4 4.1, hack?)" ) // bad chr
+GAME_CUSTOM( 199?, m4dtyfre_h1, m4dtyfre, mod4oki_bootleg_fixedret<0x2b>(R4, RT1, LPLB), mpu4, init_m4, "dfre55", 0x0000, 0x010000, CRC(01e7d367) SHA1(638b709e4bb997998ccc7c4ea8adc33cabf2fe36), "hack?","Duty Free (BWB / Barcrest) (MPU4) (DF4 4.1, hack?)" ) // bad chr
// "HI BIG BOY" and "DFT 0.1" (hack?)
-GAME_CUSTOM( 199?, m4dtyfre_h2, m4dtyfre, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "duty2010", 0x0000, 0x010000, CRC(48617f20) SHA1(dd35eef2357af6f88be42bb81608696ed97522c5), "hack?","Duty Free (Barcrest) (MPU4) (DFT 0.1, hack?)" ) // bad chr
+GAME_CUSTOM( 199?, m4dtyfre_h2, m4dtyfre, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "duty2010", 0x0000, 0x010000, CRC(48617f20) SHA1(dd35eef2357af6f88be42bb81608696ed97522c5), "hack?","Duty Free (Barcrest) (MPU4) (DFT 0.1, hack?)" ) // bad chr
// "(C)1996 B.W.B." and various ident strings, are these hacks? require non-standard protection
-GAME_CUSTOM( 1996, m4dtyfrebwb, m4dtyfre, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default_lextender, "4df5.10", 0x0000, 0x010000, CRC(01c9e06f) SHA1(6d9d4a43f621c4a80259040875a1fe851459b662), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF10 4.3, set 1)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_a, m4dtyfre, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default_lextender, "dfree510l", 0x0000, 0x010000, CRC(7cf877a9) SHA1(54a87391832a641bf5f7104968b919dbb2bfa1eb), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF10 4.3, set 2)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_b, m4dtyfre, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_lextender, "4df5.8t", 0x0000, 0x010000, CRC(e8abec56) SHA1(84f6abc5e8b46c55052d308266000085374b12af), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF8 4.2)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_d, m4dtyfre, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4default_lextender, "df5,2.8t", 0x0000, 0x010000, CRC(eb4cf0ae) SHA1(45c4e143a3e358c4bdc0c10e38039cba48a9e6dc), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF8 2.2, set 2)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_g, m4dtyfre, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4default_lextender, "df5,2.4", 0x0000, 0x010000, CRC(50f8566c) SHA1(364d33de4b34d0052ffc98536468c0a13f847a2a), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF4 1.1)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb, m4dtyfre, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, LPLB), mpu4, init_m4, "4df5.10", 0x0000, 0x010000, CRC(01c9e06f) SHA1(6d9d4a43f621c4a80259040875a1fe851459b662), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF10 4.3, set 1)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_a, m4dtyfre, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, LPLB), mpu4, init_m4, "dfree510l", 0x0000, 0x010000, CRC(7cf877a9) SHA1(54a87391832a641bf5f7104968b919dbb2bfa1eb), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF10 4.3, set 2)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_b, m4dtyfre, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPLB), mpu4, init_m4, "4df5.8t", 0x0000, 0x010000, CRC(e8abec56) SHA1(84f6abc5e8b46c55052d308266000085374b12af), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF8 4.2)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_d, m4dtyfre, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, LPLB), mpu4, init_m4, "df5,2.8t", 0x0000, 0x010000, CRC(eb4cf0ae) SHA1(45c4e143a3e358c4bdc0c10e38039cba48a9e6dc), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF8 2.2, set 2)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_g, m4dtyfre, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, LPLB), mpu4, init_m4, "df5,2.4", 0x0000, 0x010000, CRC(50f8566c) SHA1(364d33de4b34d0052ffc98536468c0a13f847a2a), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF4 1.1)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_c, m4dtyfre, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4default_lextender, "bwb duty free 5.8.bin", 0x0000, 0x010000, CRC(c67e7315) SHA1(a70183b0937c138c96fd1a0cd5bacff1acd0cbdb), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF8 2.2, set 1)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_e, m4dtyfre, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_lextender, "4df5.4", 0x0000, 0x010000, CRC(60e21664) SHA1(2a343f16ece19396ad41eeac8c94a23d8e648d4f), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF4 4.1)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_f, m4dtyfre, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_lextender, "df5.4", 0x0000, 0x010000, CRC(14de7ecb) SHA1(f7445b33b2febbf93fd0398ab310ac104e79443c), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF4 2.1)" )
-GAME_CUSTOM( 1996, m4dtyfrebwb_h, m4dtyfre, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "df5.10", 0x0000, 0x010000, CRC(96acf53f) SHA1(1297a9162dea474079d0ea63b2b1b8e7f649230a), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DFC 2.3)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_c, m4dtyfre, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, LPLB), mpu4, init_m4, "bwb duty free 5.8.bin", 0x0000, 0x010000, CRC(c67e7315) SHA1(a70183b0937c138c96fd1a0cd5bacff1acd0cbdb), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF8 2.2, set 1)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_e, m4dtyfre, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPLB), mpu4, init_m4, "4df5.4", 0x0000, 0x010000, CRC(60e21664) SHA1(2a343f16ece19396ad41eeac8c94a23d8e648d4f), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF4 4.1)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_f, m4dtyfre, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPLB), mpu4, init_m4, "df5.4", 0x0000, 0x010000, CRC(14de7ecb) SHA1(f7445b33b2febbf93fd0398ab310ac104e79443c), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DF4 2.1)" )
+GAME_CUSTOM( 1996, m4dtyfrebwb_h, m4dtyfre, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "df5.10", 0x0000, 0x010000, CRC(96acf53f) SHA1(1297a9162dea474079d0ea63b2b1b8e7f649230a), "BWB","Duty Free (BWB / Barcrest) (MPU4) (DFC 2.3)" )
/*****************************************************************************************************************************************************************************
*
@@ -651,7 +635,7 @@ GAME_CUSTOM( 1996, m4dtyfrebwb_h, m4dtyfre, mod4oki_bootleg_fixedret<0x1d>, mpu
ROM_LOAD( name, offset, length, hash ) \
M4SHODF_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "SDF 0.2"
GAME_CUSTOM( 199?, m4shodf, 0, "sdfs.p1", 0x0000, 0x010000, CRC(5df9abdb) SHA1(0dce3a7ff4d2f11c370a3a2578c592910a9e7371), "Barcrest","Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2)" )
@@ -691,7 +675,7 @@ GAME_CUSTOM( 199?, m4shodf__g, m4shodf, "sd8y.p1", 0x0000, 0x010000, CRC(f7
ROM_LOAD( name, offset, length, hash ) \
M4PRZDTY_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PDU 0.2"
GAME_CUSTOM( 199?, m4przdty, 0, "pdus.p1", 0x0000, 0x010000, CRC(eaa2ae08) SHA1(a4cef3ee8c005fb717625699260d24ef6a368824), "Barcrest","Prize Duty Free (Barcrest) (MPU4) (PDU 0.2)" )
@@ -742,65 +726,65 @@ GAME_CUSTOM( 199?, m4przdty__k, m4przdty, "pd8y.p1", 0x0000, 0x010000, CRC
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "RR6 1.2"
-GAME_CUSTOM( 1991, m4rhog, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6s.p1", 0x0000, 0x010000, CRC(f978ca0b) SHA1(11eeac41f4c77b38b33baefb16dab7de1268d161), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2)" )
-GAME_CUSTOM( 1991, m4rhogr6d, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6d.p1", 0x0000, 0x010000, CRC(b61115ea) SHA1(92b97cc8b71eb31e8377a59344faaf0d800d1bdc), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 D)" )
-GAME_CUSTOM( 1991, m4rhogr6ad, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6ad.p1", 0x0000, 0x010000, CRC(f328204d) SHA1(057f28e7eaaa372b901a76250fb7ebf4403348ad), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 AD)" )
-GAME_CUSTOM( 1991, m4rhogr6b, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6b.p1", 0x0000, 0x010000, CRC(ccacd58e) SHA1(64b67e54e5568378a18ba99017078fcd4e6bc749), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 B)" )
-GAME_CUSTOM( 1991, m4rhogr6c, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6c.p1", 0x0000, 0x010000, CRC(b5783c69) SHA1(38c122455bed904c9fd683be1a8508a69cbad03f), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 C)" )
-GAME_CUSTOM( 1991, m4rhogr6k, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6k.p1", 0x0000, 0x010000, CRC(121d29bf) SHA1(8a6dcf345012b2c499acd32c6bb76eb81ada6fa9), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 K)" )
-GAME_CUSTOM( 1991, m4rhogr6y, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6y.p1", 0x0000, 0x010000, CRC(56344b28) SHA1(7f6c740d0991a646393a47e2e85322a7c92bdd62), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 Y)" )
-GAME_CUSTOM( 1991, m4rhogr6yd, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rr6dy.p1", 0x0000, 0x010000, CRC(0e540e0d) SHA1(a783e73822e436669c8cc1504619990725306df1), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 YD)" )
+GAME_CUSTOM( 1991, m4rhog, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6s.p1", 0x0000, 0x010000, CRC(f978ca0b) SHA1(11eeac41f4c77b38b33baefb16dab7de1268d161), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2)" )
+GAME_CUSTOM( 1991, m4rhogr6d, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6d.p1", 0x0000, 0x010000, CRC(b61115ea) SHA1(92b97cc8b71eb31e8377a59344faaf0d800d1bdc), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 D)" )
+GAME_CUSTOM( 1991, m4rhogr6ad, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6ad.p1", 0x0000, 0x010000, CRC(f328204d) SHA1(057f28e7eaaa372b901a76250fb7ebf4403348ad), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 AD)" )
+GAME_CUSTOM( 1991, m4rhogr6b, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6b.p1", 0x0000, 0x010000, CRC(ccacd58e) SHA1(64b67e54e5568378a18ba99017078fcd4e6bc749), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 B)" )
+GAME_CUSTOM( 1991, m4rhogr6c, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6c.p1", 0x0000, 0x010000, CRC(b5783c69) SHA1(38c122455bed904c9fd683be1a8508a69cbad03f), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 C)" )
+GAME_CUSTOM( 1991, m4rhogr6k, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6k.p1", 0x0000, 0x010000, CRC(121d29bf) SHA1(8a6dcf345012b2c499acd32c6bb76eb81ada6fa9), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 K)" )
+GAME_CUSTOM( 1991, m4rhogr6y, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6y.p1", 0x0000, 0x010000, CRC(56344b28) SHA1(7f6c740d0991a646393a47e2e85322a7c92bdd62), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 Y)" )
+GAME_CUSTOM( 1991, m4rhogr6yd, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rr6dy.p1", 0x0000, 0x010000, CRC(0e540e0d) SHA1(a783e73822e436669c8cc1504619990725306df1), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.2 YD)" )
// "(C)1991 BARCREST" and "RR6 1.1"
-GAME_CUSTOM( 1991, m4rhogr6y_a, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, init_m4default_sextender, "rdhogvkn", 0x0000, 0x010000, CRC(3db03ada) SHA1(9b26f466c1dc1d03edacf64cbe507e084edf5f90), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.1 Y)" )
+GAME_CUSTOM( 1991, m4rhogr6y_a, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rdhogvkn", 0x0000, 0x010000, CRC(3db03ada) SHA1(9b26f466c1dc1d03edacf64cbe507e084edf5f90), "Barcrest","Road Hog (Barcrest) (MPU4) (RR6 1.1 Y)" )
// "(C)1995 B.W.B." and "RO_ 3.0"
-GAME_CUSTOM( 1995, m4rhogr3, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>, mpu4, init_m4default_sextender, "rh5p8.bin", 0x0000, 0x010000, CRC(35d56379) SHA1(ab70ef8151823c3157cf4cc4f9b29875c6ac81cc), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 3.0)" )
+GAME_CUSTOM( 1995, m4rhogr3, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rh5p8.bin", 0x0000, 0x010000, CRC(35d56379) SHA1(ab70ef8151823c3157cf4cc4f9b29875c6ac81cc), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 3.0)" )
// "(C)1994 B.W.B." and "RO_ 2.0"
-GAME_CUSTOM( 1994, m4rhogr2, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_05s__.2_1", 0x0000, 0x010000, CRC(dc18f70f) SHA1(da81b8279e4f58b1447f51beb446a6007eb39df9), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0)" )
-GAME_CUSTOM( 1994, m4rhogr2d, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_05sd_.2_1", 0x0000, 0x010000, CRC(f230ae7e) SHA1(5525ed33d115b01722186587de20013265ac19b2), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 D)" )
-GAME_CUSTOM( 1994, m4rhogr2c, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "roi05___.2_1", 0x0000, 0x010000, CRC(85fbd24a) SHA1(653a3cf3e651d94611caacddbd0692111667424a), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 C)" )
-GAME_CUSTOM( 1994, m4rhogr2k, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_05a__.2_1", 0x0000, 0x010000, CRC(67450ed1) SHA1(84cab7bb2411eb47c1336159bd1941862da59db3), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 K)" )
-GAME_CUSTOM( 1994, m4rhogr2y, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_05sk_.2_1", 0x0000, 0x010000, CRC(3e1dfedd) SHA1(a750663c96060b858e194445bc1e677b49da85b8), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 Y)" )
-GAME_CUSTOM( 1994, m4rhogr2yd, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_05sb_.2_1", 0x0000, 0x010000, CRC(4a33cfcf) SHA1(ac5d4873df74b521018d5eeac96fd7003ee093e8), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 YD)" )
+GAME_CUSTOM( 1994, m4rhogr2, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_05s__.2_1", 0x0000, 0x010000, CRC(dc18f70f) SHA1(da81b8279e4f58b1447f51beb446a6007eb39df9), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0)" )
+GAME_CUSTOM( 1994, m4rhogr2d, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_05sd_.2_1", 0x0000, 0x010000, CRC(f230ae7e) SHA1(5525ed33d115b01722186587de20013265ac19b2), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 D)" )
+GAME_CUSTOM( 1994, m4rhogr2c, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "roi05___.2_1", 0x0000, 0x010000, CRC(85fbd24a) SHA1(653a3cf3e651d94611caacddbd0692111667424a), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 C)" )
+GAME_CUSTOM( 1994, m4rhogr2k, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_05a__.2_1", 0x0000, 0x010000, CRC(67450ed1) SHA1(84cab7bb2411eb47c1336159bd1941862da59db3), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 K)" )
+GAME_CUSTOM( 1994, m4rhogr2y, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_05sk_.2_1", 0x0000, 0x010000, CRC(3e1dfedd) SHA1(a750663c96060b858e194445bc1e677b49da85b8), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 Y)" )
+GAME_CUSTOM( 1994, m4rhogr2yd, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_05sb_.2_1", 0x0000, 0x010000, CRC(4a33cfcf) SHA1(ac5d4873df74b521018d5eeac96fd7003ee093e8), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 YD)" )
// "(C)1994 B.W.B." and "RO_ 1.0"
-GAME_CUSTOM( 1994, m4rhogr1, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_10s__.1_1", 0x0000, 0x010000, CRC(d140597a) SHA1(0ddf898b5db2a1cbfda84e8a63e0be3de7582cbd), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0)" )
-GAME_CUSTOM( 1994, m4rhogr1d, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_10sd_.1_1", 0x0000, 0x010000, CRC(3f9152f3) SHA1(97e0c0461b8d4994515ac9e20d001dc7e74042ec), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 D)" )
-GAME_CUSTOM( 1994, m4rhogr1c, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "roi10___.1_1", 0x0000, 0x010000, CRC(2f832f4b) SHA1(b9228e2585cff6d4d9df64048c77e0b9ad3e75d7), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 C)" )
-GAME_CUSTOM( 1994, m4rhogr1k, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_10a__.1_1", 0x0000, 0x010000, CRC(1772bce6) SHA1(c5d0cec8e5bcfcef5003325169522f1da066354b), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 K, set 1)" )
-GAME_CUSTOM( 1994, m4rhogr1y, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_10sk_.1_1", 0x0000, 0x010000, CRC(5d5118d1) SHA1(c4abc5ccdeb711b6ec2a2c82bb2f8da9d824fe4e), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 Y)" )
-GAME_CUSTOM( 1994, m4rhogr1yd, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "ro_10sb_.1_1", 0x0000, 0x010000, CRC(34febd6f) SHA1(e1d5e178771714f9633dd9782c1f9d373a9ca5e1), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 YD)" )
-GAME_CUSTOM( 1994, m4rhogr1k_a, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default_sextender, "rhog5p", 0x0000, 0x010000, CRC(49b11beb) SHA1(89c2320de4b3f2ff6ba28501f88147b659f1ee20), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 K, set 2, wrong version number?)" ) // clearly not the same version as above, more code...
+GAME_CUSTOM( 1994, m4rhogr1, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_10s__.1_1", 0x0000, 0x010000, CRC(d140597a) SHA1(0ddf898b5db2a1cbfda84e8a63e0be3de7582cbd), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0)" )
+GAME_CUSTOM( 1994, m4rhogr1d, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_10sd_.1_1", 0x0000, 0x010000, CRC(3f9152f3) SHA1(97e0c0461b8d4994515ac9e20d001dc7e74042ec), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 D)" )
+GAME_CUSTOM( 1994, m4rhogr1c, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "roi10___.1_1", 0x0000, 0x010000, CRC(2f832f4b) SHA1(b9228e2585cff6d4d9df64048c77e0b9ad3e75d7), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 C)" )
+GAME_CUSTOM( 1994, m4rhogr1k, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_10a__.1_1", 0x0000, 0x010000, CRC(1772bce6) SHA1(c5d0cec8e5bcfcef5003325169522f1da066354b), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 K, set 1)" )
+GAME_CUSTOM( 1994, m4rhogr1y, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_10sk_.1_1", 0x0000, 0x010000, CRC(5d5118d1) SHA1(c4abc5ccdeb711b6ec2a2c82bb2f8da9d824fe4e), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 Y)" )
+GAME_CUSTOM( 1994, m4rhogr1yd, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "ro_10sb_.1_1", 0x0000, 0x010000, CRC(34febd6f) SHA1(e1d5e178771714f9633dd9782c1f9d373a9ca5e1), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 YD)" )
+GAME_CUSTOM( 1994, m4rhogr1k_a, m4rhog, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rhog5p", 0x0000, 0x010000, CRC(49b11beb) SHA1(89c2320de4b3f2ff6ba28501f88147b659f1ee20), "BWB","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 K, set 2, wrong version number?)" ) // clearly not the same version as above, more code...
// "(C)1995 B.W.B." and "ROC 2.0" (bad, and possible wrong game, club version?)
-GAME_CUSTOM( 1995, m4rhog_roc, m4rhog, mod4oki, mpu4, init_m4default_sextender, "roadhog5p4std.bin", 0x0000, 0x010000, BAD_DUMP CRC(0ff60341) SHA1(c12d5b160d9e47a6f1aa6f378c2a70186be6bdff), "BWB","Road Hog (BWB / Barcrest) (MPU4) (ROC 2.0, bad)" )
+GAME_CUSTOM( 1995, m4rhog_roc, m4rhog, mod4oki(R4, RT1, LPS), mpu4, init_m4, "roadhog5p4std.bin", 0x0000, 0x010000, BAD_DUMP CRC(0ff60341) SHA1(c12d5b160d9e47a6f1aa6f378c2a70186be6bdff), "BWB","Road Hog (BWB / Barcrest) (MPU4) (ROC 2.0, bad)" )
// "(C)1991 BARCREST" and "RR6 1.2" custom protection, hacked
-GAME_CUSTOM( 1991, m4rhog_h12, m4rhog, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "rhog20c", 0x0000, 0x010000, CRC(74ec16f7) SHA1(995d75b3a4e88d8a34dc395b185f728c18e00a2b), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2?, hack?)" )
-GAME_CUSTOM( 1991, m4rhog_h13, m4rhog, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "rhog_20_.8", 0x0000, 0x010000, CRC(3a82e4bf) SHA1(6582951c2afe14502c37460381bf4c28ec02f3c9), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2, hack?)" )
-GAME_CUSTOM( 1991, m4rhog_h14, m4rhog, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "rhog_20_.4", 0x0000, 0x010000, CRC(15e28457) SHA1(2a758a727a6956e3029b2026cd189f6249677c6a), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 1)" )
+GAME_CUSTOM( 1991, m4rhog_h12, m4rhog, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "rhog20c", 0x0000, 0x010000, CRC(74ec16f7) SHA1(995d75b3a4e88d8a34dc395b185f728c18e00a2b), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2?, hack?)" )
+GAME_CUSTOM( 1991, m4rhog_h13, m4rhog, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "rhog_20_.8", 0x0000, 0x010000, CRC(3a82e4bf) SHA1(6582951c2afe14502c37460381bf4c28ec02f3c9), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2, hack?)" )
+GAME_CUSTOM( 1991, m4rhog_h14, m4rhog, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "rhog_20_.4", 0x0000, 0x010000, CRC(15e28457) SHA1(2a758a727a6956e3029b2026cd189f6249677c6a), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 1)" )
// "(C)1991 BARCREST" and "RR6 1.2" custom protection
-GAME_CUSTOM( 1991, m4rhog_h15, m4rhog, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default_sextender, "rhog20_11", 0x0000, 0x010000, CRC(63c80ee0) SHA1(22a3f11007acedd833af9e73e3038fb3542781fe), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 2)" )
+GAME_CUSTOM( 1991, m4rhog_h15, m4rhog, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, LPS), mpu4, init_m4, "rhog20_11", 0x0000, 0x010000, CRC(63c80ee0) SHA1(22a3f11007acedd833af9e73e3038fb3542781fe), "hack?","Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 2)" )
// different protection, involving 814 and regular reads, see note at top of driver
// "HAVE A NICE DAY" and "RO_ 2.0"
-GAME_CUSTOM( 1994, m4rhog_h1, m4rhog, mod4oki_bootleg_fixedret<0x44>, mpu4, init_m4default_sextender, "road hog 5p 6.bin", 0x0000, 0x010000, CRC(b365d1f0) SHA1(af3b4f5162af6c033039a1e004bc803175a4e996), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 1)" )
-GAME_CUSTOM( 1994, m4rhog_h5, m4rhog, mod4oki_bootleg_fixedret<0x44>, mpu4, init_m4default_sextender, "rh056c", 0x0000, 0x010000, CRC(073845e2) SHA1(5e6f3ccdfc346f95e5e7e955144332e727da1d9e), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 5)" )
+GAME_CUSTOM( 1994, m4rhog_h1, m4rhog, mod4oki_bootleg_fixedret<0x44>(R4, RT1, LPS), mpu4, init_m4, "road hog 5p 6.bin", 0x0000, 0x010000, CRC(b365d1f0) SHA1(af3b4f5162af6c033039a1e004bc803175a4e996), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 1)" )
+GAME_CUSTOM( 1994, m4rhog_h5, m4rhog, mod4oki_bootleg_fixedret<0x44>(R4, RT1, LPS), mpu4, init_m4, "rh056c", 0x0000, 0x010000, CRC(073845e2) SHA1(5e6f3ccdfc346f95e5e7e955144332e727da1d9e), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 5)" )
// "HAVE A NICE DAY" and "RO_ 2.0"
-GAME_CUSTOM( 1994, m4rhog_h2, m4rhog, mod4oki_bootleg_fixedret<0x1c>, mpu4, init_m4default_sextender, "rhog05_11", 0x0000, 0x010000, CRC(8e4b14aa) SHA1(8b67b34597c0d30b0b3cf2566536c02f880a74bc), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 2)" )
+GAME_CUSTOM( 1994, m4rhog_h2, m4rhog, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, LPS), mpu4, init_m4, "rhog05_11", 0x0000, 0x010000, CRC(8e4b14aa) SHA1(8b67b34597c0d30b0b3cf2566536c02f880a74bc), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 2)" )
// "HAVE A NICE DAY" and "RO_ 2.0"
-GAME_CUSTOM( 1994, m4rhog_h3, m4rhog, mod4oki_bootleg_fixedret<0x28>, mpu4, init_m4default_sextender, "rhog55", 0x0000, 0x010000, CRC(29395082) SHA1(538434b82e31f7e40770a9b882e54a16195ee998), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 3)" )
+GAME_CUSTOM( 1994, m4rhog_h3, m4rhog, mod4oki_bootleg_fixedret<0x28>(R4, RT1, LPS), mpu4, init_m4, "rhog55", 0x0000, 0x010000, CRC(29395082) SHA1(538434b82e31f7e40770a9b882e54a16195ee998), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 3)" )
// "HAVE A NICE DAY" and "RO_ 2.0"
-GAME_CUSTOM( 1994, m4rhog_h4, m4rhog, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_sextender, "rhog58c", 0x0000, 0x010000, CRC(e02b6da6) SHA1(7d329adcac594c98685dc5404f2b9e8f717cc47f), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 4)" )
-GAME_CUSTOM( 1994, m4rhog_h6, m4rhog, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_sextender, "rhog_05_.4", 0x0000, 0x010000, CRC(a75a2bd4) SHA1(d21505d27792acf8fa20a7cdc830efbe8756fe81), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 6)" )
-GAME_CUSTOM( 1994, m4rhog_h7, m4rhog, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_sextender, "rhog_05_.8", 0x0000, 0x010000, CRC(5476f9b4) SHA1(fbd038e8710a79ea697d5acb482bed2f307cefbb), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 7)" )
+GAME_CUSTOM( 1994, m4rhog_h4, m4rhog, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPS), mpu4, init_m4, "rhog58c", 0x0000, 0x010000, CRC(e02b6da6) SHA1(7d329adcac594c98685dc5404f2b9e8f717cc47f), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 4)" )
+GAME_CUSTOM( 1994, m4rhog_h6, m4rhog, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPS), mpu4, init_m4, "rhog_05_.4", 0x0000, 0x010000, CRC(a75a2bd4) SHA1(d21505d27792acf8fa20a7cdc830efbe8756fe81), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 6)" )
+GAME_CUSTOM( 1994, m4rhog_h7, m4rhog, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPS), mpu4, init_m4, "rhog_05_.8", 0x0000, 0x010000, CRC(5476f9b4) SHA1(fbd038e8710a79ea697d5acb482bed2f307cefbb), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 7)" )
// "HAVE A NICE DAY" and "RO_ 1.0"
-GAME_CUSTOM( 1994, m4rhog_h8, m4rhog, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default_sextender, "rhog10_11", 0x0000, 0x010000, CRC(83575be7) SHA1(2cb549554028f2fdc32ecfa58b786de375b8fa35), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 1)" )
+GAME_CUSTOM( 1994, m4rhog_h8, m4rhog, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, LPS), mpu4, init_m4, "rhog10_11", 0x0000, 0x010000, CRC(83575be7) SHA1(2cb549554028f2fdc32ecfa58b786de375b8fa35), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 1)" )
// "HAVE A NICE DAY" and "RO_ 1.0"
-GAME_CUSTOM( 1994, m4rhog_h9, m4rhog, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "rhog10c", 0x0000, 0x010000, CRC(308c6d4f) SHA1(f7f8063fe8dd4ef204f225d0aa5202732ead5fa0), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 2)" )
-GAME_CUSTOM( 1994, m4rhog_h10, m4rhog, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "rhog_10_.4", 0x0000, 0x010000, CRC(8efa581c) SHA1(03c25b674cfb02792edc9ef8a76b16af31d80aae), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 3)" )
-GAME_CUSTOM( 1994, m4rhog_h11, m4rhog, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "rhog_10_.8", 0x0000, 0x010000, CRC(84d1f95d) SHA1(33f10e0e1e5abe6011b05f32f55c7dd6d3298945), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 4)" )
+GAME_CUSTOM( 1994, m4rhog_h9, m4rhog, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "rhog10c", 0x0000, 0x010000, CRC(308c6d4f) SHA1(f7f8063fe8dd4ef204f225d0aa5202732ead5fa0), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 2)" )
+GAME_CUSTOM( 1994, m4rhog_h10, m4rhog, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "rhog_10_.4", 0x0000, 0x010000, CRC(8efa581c) SHA1(03c25b674cfb02792edc9ef8a76b16af31d80aae), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 3)" )
+GAME_CUSTOM( 1994, m4rhog_h11, m4rhog, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "rhog_10_.8", 0x0000, 0x010000, CRC(84d1f95d) SHA1(33f10e0e1e5abe6011b05f32f55c7dd6d3298945), "hack?","Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 4)" )
@@ -811,41 +795,32 @@ GAME_CUSTOM( 1994, m4rhog_h11, m4rhog, mod4oki_bootleg_fixedret<0x2f>, mpu
*
*****************************************************************************************************************************************************************************/
-void mpu4mod4oki_machines_state::init_m4andyge()
-{
- //Derived from Andy's_Great_Escape_(Barcrest)_[C02_1024_10jp].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_small_extender();
- use_m4_five_reel_std();
-
- //PCKEY =1
- //STKEY =3
- //JPKEY =7
- //JPSET =3
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=false
- //DIP2_6=false
- //DIP2_7=false
- //Sound other
- //Standard
- //Volume 1 Stereo= 1
- //Sample rate 16000
- //Front door code 0 Cash door code 0
-}
-
+//Derived from Andy's_Great_Escape_(Barcrest)_[C02_1024_10jp].gam
+//PCKEY =1
+//STKEY =3
+//JPKEY =7
+//JPSET =3
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=false
+//DIP2_6=false
+//DIP2_7=false
+//Sound other
+//Standard
+//Volume 1 Stereo= 1
+//Sample rate 16000
+//Front door code 0 Cash door code 0
#define M4ANDYGE_EXTRA_ROMS \
ROM_REGION( 0x1200, "plds", 0 ) /* PAL16V8 PLD, like others - CHR? Guess it should be here... */ \
@@ -864,75 +839,75 @@ void mpu4mod4oki_machines_state::init_m4andyge()
GAMEL( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS, layout_m4andyge )
// "(C)1991 BARCREST" and "A2T 0.1"
-GAME_CUSTOM( 1991, m4andyge2t, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2ts.p1", 0x0000, 0x010000, CRC(d47c9c42) SHA1(5374cb5739a5c2ab2be32166c4819682f3266320), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1)" )
-GAME_CUSTOM( 1991, m4andyge2td, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2td.p1", 0x0000, 0x010000, CRC(ad17a652) SHA1(86006c706768a9227a21eb8da25817f4efacaa39), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 D)" )
-GAME_CUSTOM( 1991, m4andyge2tad, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2tad.p1", 0x0000, 0x010000, CRC(0e3971d7) SHA1(f8de4a932937923d585f816fc9bffbe9887011c1), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 AD)" )
-GAME_CUSTOM( 1991, m4andyge2tb, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2tb.p1", 0x0000, 0x010000, CRC(d8c4bf4d) SHA1(06e082db39576f2da39866bdb8daab49e2b4108d), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 B)" )
-GAME_CUSTOM( 1991, m4andyge2tbd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2tbd.p1", 0x0000, 0x010000, CRC(ed048ad0) SHA1(a2ffae901171363ccb827c7bf6299f29b0347e3c), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 BD)" )
-GAME_CUSTOM( 1991, m4andyge2tk, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2tk.p1", 0x0000, 0x010000, CRC(8ca6ce3d) SHA1(6c869eceea88109b23a2b850deda6c5a46ca5a48), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 K)" )
-GAME_CUSTOM( 1991, m4andyge2tkd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2tdk.p1", 0x0000, 0x010000, CRC(f11bd420) SHA1(0904ecf296474ee5283da26d8c728af438aac595), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 KD)" )
-GAME_CUSTOM( 1991, m4andyge2ty, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2ty.p1", 0x0000, 0x010000, CRC(30c22b5d) SHA1(be87fcbfb13c34c3d0ee1f586e887c80ffa01245), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 Y)" )
-GAME_CUSTOM( 1991, m4andyge2tyd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a2tdy.p1", 0x0000, 0x010000, CRC(0ffcb8d7) SHA1(b1d591eed982d2bc2e02b96e2561bbb372242480), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 YD)" )
+GAME_CUSTOM( 1991, m4andyge2t, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2ts.p1", 0x0000, 0x010000, CRC(d47c9c42) SHA1(5374cb5739a5c2ab2be32166c4819682f3266320), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1)" )
+GAME_CUSTOM( 1991, m4andyge2td, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2td.p1", 0x0000, 0x010000, CRC(ad17a652) SHA1(86006c706768a9227a21eb8da25817f4efacaa39), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 D)" )
+GAME_CUSTOM( 1991, m4andyge2tad, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2tad.p1", 0x0000, 0x010000, CRC(0e3971d7) SHA1(f8de4a932937923d585f816fc9bffbe9887011c1), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 AD)" )
+GAME_CUSTOM( 1991, m4andyge2tb, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2tb.p1", 0x0000, 0x010000, CRC(d8c4bf4d) SHA1(06e082db39576f2da39866bdb8daab49e2b4108d), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 B)" )
+GAME_CUSTOM( 1991, m4andyge2tbd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2tbd.p1", 0x0000, 0x010000, CRC(ed048ad0) SHA1(a2ffae901171363ccb827c7bf6299f29b0347e3c), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 BD)" )
+GAME_CUSTOM( 1991, m4andyge2tk, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2tk.p1", 0x0000, 0x010000, CRC(8ca6ce3d) SHA1(6c869eceea88109b23a2b850deda6c5a46ca5a48), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 K)" )
+GAME_CUSTOM( 1991, m4andyge2tkd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2tdk.p1", 0x0000, 0x010000, CRC(f11bd420) SHA1(0904ecf296474ee5283da26d8c728af438aac595), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 KD)" )
+GAME_CUSTOM( 1991, m4andyge2ty, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2ty.p1", 0x0000, 0x010000, CRC(30c22b5d) SHA1(be87fcbfb13c34c3d0ee1f586e887c80ffa01245), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 Y)" )
+GAME_CUSTOM( 1991, m4andyge2tyd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a2tdy.p1", 0x0000, 0x010000, CRC(0ffcb8d7) SHA1(b1d591eed982d2bc2e02b96e2561bbb372242480), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 YD)" )
// "(C)1991 BARCREST" and "A5T 0.1"
-GAME_CUSTOM( 1991, m4andyge5t, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5ts.p1", 0x0000, 0x010000, CRC(9ab99a1e) SHA1(605c5ee71aa0583f02e9ced604692814e33b741a), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1)" )
-GAME_CUSTOM( 1991, m4andyge5td, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5td.p1", 0x0000, 0x010000, CRC(b3ebc357) SHA1(6d0718474f83f71151189c3175b687564c1d49b0), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 D)" )
-GAME_CUSTOM( 1991, m4andyge5tad, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5tad.p1", 0x0000, 0x010000, CRC(df767538) SHA1(17ca5ea5b217fda448f61412cae82ae61447c5ad), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 AD)" )
-GAME_CUSTOM( 1991, m4andyge5tb, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5tb.p1", 0x0000, 0x010000, CRC(e6f22d3f) SHA1(f6da8edc0b058ce316ccca306f930469ef6d016c), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 B)" )
-GAME_CUSTOM( 1991, m4andyge5tbd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5tbd.p1", 0x0000, 0x010000, CRC(24aa63c8) SHA1(838f1fff46c65dd56f25fd491f8aab3be826a845), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 BD)" )
-GAME_CUSTOM( 1991, m4andyge5tk, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5tk.p1", 0x0000, 0x010000, CRC(c63209f8) SHA1(71968dd94431610ddef35bb4cf8dcba749470a26), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 K)" )
-GAME_CUSTOM( 1991, m4andyge5tkd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5tdk.p1", 0x0000, 0x010000, CRC(67472634) SHA1(aae14b9ea4125b94dd1a7325c000629258573499), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 KD)" )
-GAME_CUSTOM( 1991, m4andyge5ty, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5ty.p1", 0x0000, 0x010000, CRC(86ef0bd8) SHA1(870b8165e206f84e59a3badfba441a567626f297), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 Y)" )
-GAME_CUSTOM( 1991, m4andyge5tyd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, grtecp, init_m4andyge, "a5tdy.p1", 0x0000, 0x010000, CRC(9f9c15c2) SHA1(0e6471c62450bd8468adde1a2d69c5b24c472bfc), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 YD)" )
+GAME_CUSTOM( 1991, m4andyge5t, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5ts.p1", 0x0000, 0x010000, CRC(9ab99a1e) SHA1(605c5ee71aa0583f02e9ced604692814e33b741a), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1)" )
+GAME_CUSTOM( 1991, m4andyge5td, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5td.p1", 0x0000, 0x010000, CRC(b3ebc357) SHA1(6d0718474f83f71151189c3175b687564c1d49b0), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 D)" )
+GAME_CUSTOM( 1991, m4andyge5tad, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5tad.p1", 0x0000, 0x010000, CRC(df767538) SHA1(17ca5ea5b217fda448f61412cae82ae61447c5ad), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 AD)" )
+GAME_CUSTOM( 1991, m4andyge5tb, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5tb.p1", 0x0000, 0x010000, CRC(e6f22d3f) SHA1(f6da8edc0b058ce316ccca306f930469ef6d016c), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 B)" )
+GAME_CUSTOM( 1991, m4andyge5tbd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5tbd.p1", 0x0000, 0x010000, CRC(24aa63c8) SHA1(838f1fff46c65dd56f25fd491f8aab3be826a845), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 BD)" )
+GAME_CUSTOM( 1991, m4andyge5tk, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5tk.p1", 0x0000, 0x010000, CRC(c63209f8) SHA1(71968dd94431610ddef35bb4cf8dcba749470a26), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 K)" )
+GAME_CUSTOM( 1991, m4andyge5tkd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5tdk.p1", 0x0000, 0x010000, CRC(67472634) SHA1(aae14b9ea4125b94dd1a7325c000629258573499), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 KD)" )
+GAME_CUSTOM( 1991, m4andyge5ty, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5ty.p1", 0x0000, 0x010000, CRC(86ef0bd8) SHA1(870b8165e206f84e59a3badfba441a567626f297), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 Y)" )
+GAME_CUSTOM( 1991, m4andyge5tyd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a5tdy.p1", 0x0000, 0x010000, CRC(9f9c15c2) SHA1(0e6471c62450bd8468adde1a2d69c5b24c472bfc), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 YD)" )
// "(C)1991 BARCREST" and "AN2 0.3"
-GAME_CUSTOM( 1991, m4andyge, 0, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "an2s.p1", 0x0000, 0x010000, CRC(65399fa0) SHA1(ecefdf63e7aa477001fa530ed340e90e85252c3c), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 1)" ) // one of these is probably hacked
-GAME_CUSTOM( 1991, m4andygen2_a, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "agesc20p", 0x0000, 0x010000, CRC(94fec0f3) SHA1(7678e01a4e0fcc4136f6d4a668c4d1dd9a8f1246), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 2)" ) // or has the wrong id strings
-GAME_CUSTOM( 1991, m4andygen2d, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "an2d.p1", 0x0000, 0x010000, CRC(5651ed3d) SHA1(6a1fbff252bf266b03c4cb64294053f686a523d6), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 D)" )
-GAME_CUSTOM( 1991, m4andygen2c, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "an2c.p1", 0x0000, 0x010000, CRC(3e233c24) SHA1(4e8f0cb45851db509020afd47821893ab49448d7), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 C)" )
-GAME_CUSTOM( 1991, m4andygen2k, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "an2k.p1", 0x0000, 0x010000, CRC(c0886dff) SHA1(ef2b509fde05ef4ef055a09275afc9e153f50efc), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 K)" )
-GAME_CUSTOM( 1991, m4andygen2y, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "an2y.p1", 0x0000, 0x010000, CRC(a9cd1ed2) SHA1(052fc711efe633a2ece6bf24fabdc0b69b9355fd), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 Y)" )
+GAME_CUSTOM( 1991, m4andyge, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "an2s.p1", 0x0000, 0x010000, CRC(65399fa0) SHA1(ecefdf63e7aa477001fa530ed340e90e85252c3c), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 1)" ) // one of these is probably hacked
+GAME_CUSTOM( 1991, m4andygen2_a, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "agesc20p", 0x0000, 0x010000, CRC(94fec0f3) SHA1(7678e01a4e0fcc4136f6d4a668c4d1dd9a8f1246), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 2)" ) // or has the wrong id strings
+GAME_CUSTOM( 1991, m4andygen2d, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "an2d.p1", 0x0000, 0x010000, CRC(5651ed3d) SHA1(6a1fbff252bf266b03c4cb64294053f686a523d6), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 D)" )
+GAME_CUSTOM( 1991, m4andygen2c, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "an2c.p1", 0x0000, 0x010000, CRC(3e233c24) SHA1(4e8f0cb45851db509020afd47821893ab49448d7), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 C)" )
+GAME_CUSTOM( 1991, m4andygen2k, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "an2k.p1", 0x0000, 0x010000, CRC(c0886dff) SHA1(ef2b509fde05ef4ef055a09275afc9e153f50efc), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 K)" )
+GAME_CUSTOM( 1991, m4andygen2y, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "an2y.p1", 0x0000, 0x010000, CRC(a9cd1ed2) SHA1(052fc711efe633a2ece6bf24fabdc0b69b9355fd), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 Y)" )
// "(C)1991 BARCREST" and "A28 0.1"
-GAME_CUSTOM( 1991, m4andyge28, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28s.p1", 0x0000, 0x010000, CRC(40529bad) SHA1(d22b0e8a8f4acec78dc05cde01d68b625008f3b0), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1)" )
-GAME_CUSTOM( 1991, m4andyge28d, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28d.p1", 0x0000, 0x010000, CRC(e8eee34e) SHA1(c223a8c1fd2c609376bab9e780020523c4e76b08), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 D)" )
-GAME_CUSTOM( 1991, m4andyge28ad, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28ad.p1", 0x0000, 0x010000, CRC(ecb0b180) SHA1(23d68e34e7a58fc6574e6c8524ce2e4e4cd25582), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 AD)" )
-GAME_CUSTOM( 1991, m4andyge28b, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28b.p1", 0x0000, 0x010000, CRC(481c6c1c) SHA1(d8133d87e481f9c01c60324e918f706da6486c1b), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 B)" )
-GAME_CUSTOM( 1991, m4andyge28bd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28bd.p1", 0x0000, 0x010000, CRC(a59430b1) SHA1(000a00ba115408ab35fea74faa745220a9fcad68), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 BD)" )
-GAME_CUSTOM( 1991, m4andyge28c, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28c.p1", 0x0000, 0x010000, CRC(e74533db) SHA1(f6f77dc61c08cdced0dca9133dfeeb5fdd4076f0), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 C)" )
-GAME_CUSTOM( 1991, m4andyge28k, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28k.p1", 0x0000, 0x010000, CRC(c83b94fa) SHA1(8194b25bfcb8ba0323c63ee2f2b45f030aa1caeb), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 K)" )
-GAME_CUSTOM( 1991, m4andyge28kd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28dk.p1", 0x0000, 0x010000, CRC(115a2bc1) SHA1(31736f9583b4f110a6c838cecbd47acb7baa58c9), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 KD)" )
-GAME_CUSTOM( 1991, m4andyge28y, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28y.p1", 0x0000, 0x010000, CRC(fb1c83b7) SHA1(76b40e1ea47732ae0f6e9557c2d0445421122ac8), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 Y)" )
-GAME_CUSTOM( 1991, m4andyge28yd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, grtecp, init_m4andyge, "a28dy.p1", 0x0000, 0x010000, CRC(05ef8b21) SHA1(762aaad6892511ba1f3266c1ed0a09850339cc63), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 YD)" )
+GAME_CUSTOM( 1991, m4andyge28, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28s.p1", 0x0000, 0x010000, CRC(40529bad) SHA1(d22b0e8a8f4acec78dc05cde01d68b625008f3b0), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1)" )
+GAME_CUSTOM( 1991, m4andyge28d, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28d.p1", 0x0000, 0x010000, CRC(e8eee34e) SHA1(c223a8c1fd2c609376bab9e780020523c4e76b08), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 D)" )
+GAME_CUSTOM( 1991, m4andyge28ad, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28ad.p1", 0x0000, 0x010000, CRC(ecb0b180) SHA1(23d68e34e7a58fc6574e6c8524ce2e4e4cd25582), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 AD)" )
+GAME_CUSTOM( 1991, m4andyge28b, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28b.p1", 0x0000, 0x010000, CRC(481c6c1c) SHA1(d8133d87e481f9c01c60324e918f706da6486c1b), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 B)" )
+GAME_CUSTOM( 1991, m4andyge28bd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28bd.p1", 0x0000, 0x010000, CRC(a59430b1) SHA1(000a00ba115408ab35fea74faa745220a9fcad68), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 BD)" )
+GAME_CUSTOM( 1991, m4andyge28c, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28c.p1", 0x0000, 0x010000, CRC(e74533db) SHA1(f6f77dc61c08cdced0dca9133dfeeb5fdd4076f0), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 C)" )
+GAME_CUSTOM( 1991, m4andyge28k, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28k.p1", 0x0000, 0x010000, CRC(c83b94fa) SHA1(8194b25bfcb8ba0323c63ee2f2b45f030aa1caeb), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 K)" )
+GAME_CUSTOM( 1991, m4andyge28kd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28dk.p1", 0x0000, 0x010000, CRC(115a2bc1) SHA1(31736f9583b4f110a6c838cecbd47acb7baa58c9), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 KD)" )
+GAME_CUSTOM( 1991, m4andyge28y, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28y.p1", 0x0000, 0x010000, CRC(fb1c83b7) SHA1(76b40e1ea47732ae0f6e9557c2d0445421122ac8), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 Y)" )
+GAME_CUSTOM( 1991, m4andyge28yd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "a28dy.p1", 0x0000, 0x010000, CRC(05ef8b21) SHA1(762aaad6892511ba1f3266c1ed0a09850339cc63), "Barcrest","Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 YD)" )
// "(C)1995 B.W.B." and "AGC 2.0"
-GAME_CUSTOM( 1995, m4andygegc2, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, grtecp, init_m4andyge, "ag_05__c.2_1", 0x0000, 0x010000, CRC(c38c11a3) SHA1(c2d81d99a842eac8dff3e0be57f37af9eb534ad1), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AGC 2.0)" )
-GAME_CUSTOM( 1995, m4andygegc2d, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, grtecp, init_m4andyge, "ag_05_d4.2_1", 0x0000, 0x010000, CRC(29953aa1) SHA1(c1346ab7e651c35d704e5127c4d44d2086fd48e3), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AGC 2.0 D)" )
+GAME_CUSTOM( 1995, m4andygegc2, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_05__c.2_1", 0x0000, 0x010000, CRC(c38c11a3) SHA1(c2d81d99a842eac8dff3e0be57f37af9eb534ad1), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AGC 2.0)" )
+GAME_CUSTOM( 1995, m4andygegc2d, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_05_d4.2_1", 0x0000, 0x010000, CRC(29953aa1) SHA1(c1346ab7e651c35d704e5127c4d44d2086fd48e3), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AGC 2.0 D)" )
// "(C)1994 B.W.B." and "AG5 3.0"
-GAME_CUSTOM( 1994, m4andygeg5, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_05s__.3_1", 0x0000, 0x010000, CRC(c0e45872) SHA1(936ca3230cd36dd4ad2c74ea33ea469c482e5688), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0)" )
-GAME_CUSTOM( 1994, m4andygeg5d, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_05sd_.3_1", 0x0000, 0x010000, CRC(b7fced5c) SHA1(6b359b29019bf22b2ebdd96a69f919b18935a98c), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 D)" )
-GAME_CUSTOM( 1994, m4andygeg5a, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "agesc5p", 0x0000, 0x010000, CRC(9de05e25) SHA1(b4d6aea5cffb14babd89cfa76575a68277bfaa4b), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 A)" )
-GAME_CUSTOM( 1994, m4andygeg5c, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "agi05___.3_1", 0x0000, 0x010000, CRC(b061a468) SHA1(a1f1a8bd55eb7a684de270bace9464812172ed92), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 C)" )
-GAME_CUSTOM( 1994, m4andygeg5k, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_05a__.3_1", 0x0000, 0x010000, CRC(89f4281e) SHA1(3ada70d7c5ef523f1a4eddfc8f1967e4a6de190d), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 K)" )
-GAME_CUSTOM( 1994, m4andygeg5yd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_05sb_.3_1", 0x0000, 0x010000, CRC(f5055b62) SHA1(b12a7d2a1143ce47e6a327831d5df21483d78b03), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 YD)" )
+GAME_CUSTOM( 1994, m4andygeg5, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_05s__.3_1", 0x0000, 0x010000, CRC(c0e45872) SHA1(936ca3230cd36dd4ad2c74ea33ea469c482e5688), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0)" )
+GAME_CUSTOM( 1994, m4andygeg5d, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_05sd_.3_1", 0x0000, 0x010000, CRC(b7fced5c) SHA1(6b359b29019bf22b2ebdd96a69f919b18935a98c), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 D)" )
+GAME_CUSTOM( 1994, m4andygeg5a, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "agesc5p", 0x0000, 0x010000, CRC(9de05e25) SHA1(b4d6aea5cffb14babd89cfa76575a68277bfaa4b), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 A)" )
+GAME_CUSTOM( 1994, m4andygeg5c, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "agi05___.3_1", 0x0000, 0x010000, CRC(b061a468) SHA1(a1f1a8bd55eb7a684de270bace9464812172ed92), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 C)" )
+GAME_CUSTOM( 1994, m4andygeg5k, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_05a__.3_1", 0x0000, 0x010000, CRC(89f4281e) SHA1(3ada70d7c5ef523f1a4eddfc8f1967e4a6de190d), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 K)" )
+GAME_CUSTOM( 1994, m4andygeg5yd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_05sb_.3_1", 0x0000, 0x010000, CRC(f5055b62) SHA1(b12a7d2a1143ce47e6a327831d5df21483d78b03), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 YD)" )
// "(C)1994 B.W.B." and "AG__2.0"
-GAME_CUSTOM( 1994, m4andygeg_2, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_10s__.2_1", 0x0000, 0x010000, CRC(0dfeda46) SHA1(27e7548845f116537043e26002d8a5458275389d), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0)" )
-GAME_CUSTOM( 1994, m4andygeg_2d, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_10sd_.2_1", 0x0000, 0x010000, CRC(03ab435f) SHA1(3b04324c1ae839529d99255008874df3744769a4), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 D)" )
-GAME_CUSTOM( 1994, m4andygeg_2c, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "agi10___.2_1", 0x0000, 0x010000, CRC(7c56a6ca) SHA1(adb567b8e1b6cc727bcfa694ade947f8c695f44a), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 C)" )
-GAME_CUSTOM( 1994, m4andygeg_2k, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_10a__.2_1", 0x0000, 0x010000, CRC(ca80d891) SHA1(17bf51fecc3cecbb1e0ef0550296c8bf81d3d879), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 K)" )
-GAME_CUSTOM( 1994, m4andygeg_2yd, m4andyge, mod4oki_5r_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, grtecp, init_m4andyge, "ag_10sb_.2_1", 0x0000, 0x010000, CRC(6f025416) SHA1(bb0167ba0a67dd1a03ec3e69e2050e2bf1d35244), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 YD)" )
+GAME_CUSTOM( 1994, m4andygeg_2, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_10s__.2_1", 0x0000, 0x010000, CRC(0dfeda46) SHA1(27e7548845f116537043e26002d8a5458275389d), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0)" )
+GAME_CUSTOM( 1994, m4andygeg_2d, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_10sd_.2_1", 0x0000, 0x010000, CRC(03ab435f) SHA1(3b04324c1ae839529d99255008874df3744769a4), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 D)" )
+GAME_CUSTOM( 1994, m4andygeg_2c, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "agi10___.2_1", 0x0000, 0x010000, CRC(7c56a6ca) SHA1(adb567b8e1b6cc727bcfa694ade947f8c695f44a), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 C)" )
+GAME_CUSTOM( 1994, m4andygeg_2k, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_10a__.2_1", 0x0000, 0x010000, CRC(ca80d891) SHA1(17bf51fecc3cecbb1e0ef0550296c8bf81d3d879), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 K)" )
+GAME_CUSTOM( 1994, m4andygeg_2yd, m4andyge, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R5, RT1, LPS, HT), grtecp, init_m4, "ag_10sb_.2_1", 0x0000, 0x010000, CRC(6f025416) SHA1(bb0167ba0a67dd1a03ec3e69e2050e2bf1d35244), "BWB","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 YD)" )
// these are unprotected, don't read from chr, possibly all hacks?
// "(C)1994 B.W.B." and "AG5 3.0"
-GAME_CUSTOM( 1994, m4andyge_hx1, m4andyge, mod4oki_5r, grtecp, init_m4andyge, "acappgreatescape5p4.bin", 0x0000, 0x010000, CRC(87733a0d) SHA1(6e2fc0f43eb48740b120af77302f1322a27e8a5a), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 1)" )
-GAME_CUSTOM( 1994, m4andyge_hx2, m4andyge, mod4oki_5r, grtecp, init_m4andyge, "age55", 0x0000, 0x010000, CRC(481e942d) SHA1(23ac3c4f624ae73940baf515002a178d39ba32b0), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 2)" )
-GAME_CUSTOM( 1994, m4andyge_hx3, m4andyge, mod4oki_5r, grtecp, init_m4andyge, "age58c", 0x0000, 0x010000, CRC(0b1e4a0e) SHA1(e2bcd590a358e48b26b056f83c7180da0e036024), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 3)" )
-GAME_CUSTOM( 1994, m4andyge_hx4, m4andyge, mod4oki_5r, grtecp, init_m4andyge, "age05_101", 0x0000, 0x010000, CRC(70c1d1ab) SHA1(478891cadaeba76666af5c4f25531456ebbe789a), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 4)" )
+GAME_CUSTOM( 1994, m4andyge_hx1, m4andyge, mod4oki(R5, RT1, LPS, HT), grtecp, init_m4, "acappgreatescape5p4.bin", 0x0000, 0x010000, CRC(87733a0d) SHA1(6e2fc0f43eb48740b120af77302f1322a27e8a5a), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 1)" )
+GAME_CUSTOM( 1994, m4andyge_hx2, m4andyge, mod4oki(R5, RT1, LPS, HT), grtecp, init_m4, "age55", 0x0000, 0x010000, CRC(481e942d) SHA1(23ac3c4f624ae73940baf515002a178d39ba32b0), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 2)" )
+GAME_CUSTOM( 1994, m4andyge_hx3, m4andyge, mod4oki(R5, RT1, LPS, HT), grtecp, init_m4, "age58c", 0x0000, 0x010000, CRC(0b1e4a0e) SHA1(e2bcd590a358e48b26b056f83c7180da0e036024), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 3)" )
+GAME_CUSTOM( 1994, m4andyge_hx4, m4andyge, mod4oki(R5, RT1, LPS, HT), grtecp, init_m4, "age05_101", 0x0000, 0x010000, CRC(70c1d1ab) SHA1(478891cadaeba76666af5c4f25531456ebbe789a), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 4)" )
// " " and "AG__2.0"
-GAME_CUSTOM( 1994, m4andyge_hx5, m4andyge, mod4oki_5r, grtecp, init_m4andyge, "age10_101", 0x0000, 0x010000, CRC(55e3a27e) SHA1(209166d052cc296f135225c77bb57abbef1a86ae), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 CX, hack?)" )
+GAME_CUSTOM( 1994, m4andyge_hx5, m4andyge, mod4oki(R5, RT1, LPS, HT), grtecp, init_m4, "age10_101", 0x0000, 0x010000, CRC(55e3a27e) SHA1(209166d052cc296f135225c77bb57abbef1a86ae), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 CX, hack?)" )
// different protection
// "RICK LUVS BRIAN" and "8V1 3.0"
-GAME_CUSTOM( 199?, m4andyge_h1, m4andyge, mod4oki_5r_bootleg_fixedret<0x0c>, grtecp, init_m4andyge, "age5p8p.bin", 0x0000, 0x010000, CRC(c3b40981) SHA1(da56e468ae67f1a231fea721235036c75c5efac3), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 3.0, hack?, set 1)" )
-GAME_CUSTOM( 199?, m4andyge_h2, m4andyge, mod4oki_5r_bootleg_fixedret<0x0c>, grtecp, init_m4andyge, "ages58c", 0x0000, 0x010000, CRC(af479dc9) SHA1(7e0e3b36289d689bbd0c022730d7aee62192f49f), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 3.0, hack?, set 2)" )
+GAME_CUSTOM( 199?, m4andyge_h1, m4andyge, mod4oki_bootleg_fixedret<0x0c>(R5, RT1, LPS, HT), grtecp, init_m4, "age5p8p.bin", 0x0000, 0x010000, CRC(c3b40981) SHA1(da56e468ae67f1a231fea721235036c75c5efac3), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 3.0, hack?, set 1)" )
+GAME_CUSTOM( 199?, m4andyge_h2, m4andyge, mod4oki_bootleg_fixedret<0x0c>(R5, RT1, LPS, HT), grtecp, init_m4, "ages58c", 0x0000, 0x010000, CRC(af479dc9) SHA1(7e0e3b36289d689bbd0c022730d7aee62192f49f), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 3.0, hack?, set 2)" )
// " " and "8V1 0.3"
-GAME_CUSTOM( 199?, m4andyge_h3, m4andyge, mod4oki_5r_bootleg_fixedret<0x2c>, grtecp, init_m4andyge, "age_20_.8", 0x0000, 0x010000, CRC(b1f91b2a) SHA1(9340f87d6d186b3af0384ab546c3d3f487e797d4), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 0.3, hack?, set 1)" )
-GAME_CUSTOM( 199?, m4andyge_h4, m4andyge, mod4oki_5r_bootleg_fixedret<0x1c>, grtecp, init_m4andyge, "age20_101", 0x0000, 0x010000, CRC(7e3674f0) SHA1(351e353da24b63d2ef7cb09690b770b26505569a), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 0.3, hack?, set 2)" )
+GAME_CUSTOM( 199?, m4andyge_h3, m4andyge, mod4oki_bootleg_fixedret<0x2c>(R5, RT1, LPS, HT), grtecp, init_m4, "age_20_.8", 0x0000, 0x010000, CRC(b1f91b2a) SHA1(9340f87d6d186b3af0384ab546c3d3f487e797d4), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 0.3, hack?, set 1)" )
+GAME_CUSTOM( 199?, m4andyge_h4, m4andyge, mod4oki_bootleg_fixedret<0x1c>(R5, RT1, LPS, HT), grtecp, init_m4, "age20_101", 0x0000, 0x010000, CRC(7e3674f0) SHA1(351e353da24b63d2ef7cb09690b770b26505569a), "hack?","Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 0.3, hack?, set 2)" )
/*****************************************************************************************************************************************************************************
@@ -959,45 +934,45 @@ GAME_CUSTOM( 199?, m4andyge_h4, m4andyge, mod4oki_5r_bootleg_fixedret<0x1
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// (C)1993 BARCREST and DEN 1.2
-GAME_CUSTOM( 199?, m4denmen, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dens.p1", 0x0000, 0x010000, CRC(d3687138) SHA1(611985a9116ea14992b34a84ed31693f88d99797), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2)" )
-GAME_CUSTOM( 199?, m4denmendnd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dend.p1", 0x0000, 0x010000, CRC(176cd283) SHA1(f72c69b346f926a6e11b685ab9a6a2783b836450), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 D)" )
-GAME_CUSTOM( 199?, m4denmendnb, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "denb.p1", 0x0000, 0x010000, CRC(b0164796) SHA1(61ff7e7ea2c27742177d851a4eb9a041d95b37d7), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 B)" )
-GAME_CUSTOM( 199?, m4denmendnc, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "denc.p1", 0x0000, 0x010000, CRC(549e17bc) SHA1(78271e11d4c8e742acce9087f194a1db8fc8c3eb), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 C)" )
-GAME_CUSTOM( 199?, m4denmendnk, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "denk.p1", 0x0000, 0x010000, CRC(8983cbe0) SHA1(159dcbc3f5d24b6be03ae9c3c2af58993bebd38c), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 K)" )
-GAME_CUSTOM( 199?, m4denmendny, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "deny.p1", 0x0000, 0x010000, CRC(83ebd9f6) SHA1(f59e9d34295df8200f85a51d725437954acf9bdc), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 Y)" )
+GAME_CUSTOM( 199?, m4denmen, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dens.p1", 0x0000, 0x010000, CRC(d3687138) SHA1(611985a9116ea14992b34a84ed31693f88d99797), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2)" )
+GAME_CUSTOM( 199?, m4denmendnd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dend.p1", 0x0000, 0x010000, CRC(176cd283) SHA1(f72c69b346f926a6e11b685ab9a6a2783b836450), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 D)" )
+GAME_CUSTOM( 199?, m4denmendnb, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "denb.p1", 0x0000, 0x010000, CRC(b0164796) SHA1(61ff7e7ea2c27742177d851a4eb9a041d95b37d7), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 B)" )
+GAME_CUSTOM( 199?, m4denmendnc, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "denc.p1", 0x0000, 0x010000, CRC(549e17bc) SHA1(78271e11d4c8e742acce9087f194a1db8fc8c3eb), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 C)" )
+GAME_CUSTOM( 199?, m4denmendnk, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "denk.p1", 0x0000, 0x010000, CRC(8983cbe0) SHA1(159dcbc3f5d24b6be03ae9c3c2af58993bebd38c), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 K)" )
+GAME_CUSTOM( 199?, m4denmendny, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "deny.p1", 0x0000, 0x010000, CRC(83ebd9f6) SHA1(f59e9d34295df8200f85a51d725437954acf9bdc), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 Y)" )
// (C)1993 BARCREST and DM8 0.1
-GAME_CUSTOM( 199?, m4denmend8, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dm8s.p1", 0x0000, 0x010000, CRC(27484793) SHA1(872ad9bdbad793aa3bb4b8d227627f901a04d70e), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1)" )
-GAME_CUSTOM( 199?, m4denmend8d, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dm8d.p1", 0x0000, 0x010000, CRC(23258932) SHA1(03b929bd86c429a7806f75639569534bfe7634a8), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 D)" )
-GAME_CUSTOM( 199?, m4denmend8c, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dm8c.p1", 0x0000, 0x010000, CRC(f5bd6c61) SHA1(ec443a284dae480c944f437426c28481a61c8ebb), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 C)" )
-GAME_CUSTOM( 199?, m4denmend8k, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dm8k.p1", 0x0000, 0x010000, CRC(9b3c3827) SHA1(2f584cfbbf38435377785dd654fe7b97c78e731a), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 K)" )
-GAME_CUSTOM( 199?, m4denmend8y, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dm8y.p1", 0x0000, 0x010000, CRC(ebfcb926) SHA1(c6a623de9163e3f49ee7e5dbb8df867a90d0d0a9), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 Y)" )
-GAME_CUSTOM( 199?, m4denmend8yd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, init_m4default, "dm8dy.p1", 0x0000, 0x010000, CRC(3c5ef7c8) SHA1(ac102525900f34c53082d37fb1bd14db9ce928fe), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 YD)" )
+GAME_CUSTOM( 199?, m4denmend8, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm8s.p1", 0x0000, 0x010000, CRC(27484793) SHA1(872ad9bdbad793aa3bb4b8d227627f901a04d70e), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1)" )
+GAME_CUSTOM( 199?, m4denmend8d, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm8d.p1", 0x0000, 0x010000, CRC(23258932) SHA1(03b929bd86c429a7806f75639569534bfe7634a8), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 D)" )
+GAME_CUSTOM( 199?, m4denmend8c, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm8c.p1", 0x0000, 0x010000, CRC(f5bd6c61) SHA1(ec443a284dae480c944f437426c28481a61c8ebb), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 C)" )
+GAME_CUSTOM( 199?, m4denmend8k, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm8k.p1", 0x0000, 0x010000, CRC(9b3c3827) SHA1(2f584cfbbf38435377785dd654fe7b97c78e731a), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 K)" )
+GAME_CUSTOM( 199?, m4denmend8y, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm8y.p1", 0x0000, 0x010000, CRC(ebfcb926) SHA1(c6a623de9163e3f49ee7e5dbb8df867a90d0d0a9), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 Y)" )
+GAME_CUSTOM( 199?, m4denmend8yd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm8dy.p1", 0x0000, 0x010000, CRC(3c5ef7c8) SHA1(ac102525900f34c53082d37fb1bd14db9ce928fe), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 YD)" )
// (C)1993 BARCREST and DM5 0.1
-GAME_CUSTOM( 199?, m4denmend5, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5s.p1", 0x0000, 0x010000, CRC(49672daa) SHA1(92e327b59b532e58b8c2a4e507f56c2ae069420c), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1)" )
-GAME_CUSTOM( 199?, m4denmend5d, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5d.p1", 0x0000, 0x010000, CRC(0c6250d5) SHA1(56b316df56d6448137332044bfe1081401eef3e8), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 D)" )
-GAME_CUSTOM( 199?, m4denmend5ad, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5ad.p1", 0x0000, 0x010000, CRC(f01125cc) SHA1(faa80bfb107db127b2f9c4c7d23ec495775d2162), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 AD)" )
-GAME_CUSTOM( 199?, m4denmend5b, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5b.p1", 0x0000, 0x010000, CRC(2c6dae4c) SHA1(281e4ba31a60fb5600790f21095e697db80736b7), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 B)" )
-GAME_CUSTOM( 199?, m4denmend5bd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5bd.p1", 0x0000, 0x010000, CRC(a65c534d) SHA1(e5c38a9a06e20878cb820e5a12545405d699ff9d), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 BD)" )
-GAME_CUSTOM( 199?, m4denmend5k, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5k.p1", 0x0000, 0x010000, CRC(581572d6) SHA1(ac7303ea828846e770f8f1c7c818369d4b006495), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 K)" )
-GAME_CUSTOM( 199?, m4denmend5kd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5dk.p1", 0x0000, 0x010000, CRC(848412a1) SHA1(bb385e2abdc2651b4a7ea9d30108dfa8adab0aea), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 KD)" )
-GAME_CUSTOM( 199?, m4denmend5y, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5y.p1", 0x0000, 0x010000, CRC(e6b9a800) SHA1(543ef65352a98676d66f6a5d3d7f568e10aac084), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 Y)" )
-GAME_CUSTOM( 199?, m4denmend5yd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dm5dy.p1", 0x0000, 0x010000, CRC(0c091457) SHA1(930b87211b8df5846fa857744aafae2f2985e578), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 YD)" )
+GAME_CUSTOM( 199?, m4denmend5, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5s.p1", 0x0000, 0x010000, CRC(49672daa) SHA1(92e327b59b532e58b8c2a4e507f56c2ae069420c), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1)" )
+GAME_CUSTOM( 199?, m4denmend5d, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5d.p1", 0x0000, 0x010000, CRC(0c6250d5) SHA1(56b316df56d6448137332044bfe1081401eef3e8), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 D)" )
+GAME_CUSTOM( 199?, m4denmend5ad, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5ad.p1", 0x0000, 0x010000, CRC(f01125cc) SHA1(faa80bfb107db127b2f9c4c7d23ec495775d2162), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 AD)" )
+GAME_CUSTOM( 199?, m4denmend5b, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5b.p1", 0x0000, 0x010000, CRC(2c6dae4c) SHA1(281e4ba31a60fb5600790f21095e697db80736b7), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 B)" )
+GAME_CUSTOM( 199?, m4denmend5bd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5bd.p1", 0x0000, 0x010000, CRC(a65c534d) SHA1(e5c38a9a06e20878cb820e5a12545405d699ff9d), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 BD)" )
+GAME_CUSTOM( 199?, m4denmend5k, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5k.p1", 0x0000, 0x010000, CRC(581572d6) SHA1(ac7303ea828846e770f8f1c7c818369d4b006495), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 K)" )
+GAME_CUSTOM( 199?, m4denmend5kd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5dk.p1", 0x0000, 0x010000, CRC(848412a1) SHA1(bb385e2abdc2651b4a7ea9d30108dfa8adab0aea), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 KD)" )
+GAME_CUSTOM( 199?, m4denmend5y, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5y.p1", 0x0000, 0x010000, CRC(e6b9a800) SHA1(543ef65352a98676d66f6a5d3d7f568e10aac084), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 Y)" )
+GAME_CUSTOM( 199?, m4denmend5yd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dm5dy.p1", 0x0000, 0x010000, CRC(0c091457) SHA1(930b87211b8df5846fa857744aafae2f2985e578), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 YD)" )
// (C)1993 BARCREST and DMT 0.1
-GAME_CUSTOM( 199?, m4denmendt, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmts.p1", 0x0000, 0x010000, CRC(1a2776e3) SHA1(4d5029a5abafb3945d533ca5ca23b32c036fbb31), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1)" )
-GAME_CUSTOM( 199?, m4denmendtd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmtd.p1", 0x0000, 0x010000, CRC(9b38fa46) SHA1(ce6509349c82a651336753a3062c1cf2390d0b9a), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 D)" )
-GAME_CUSTOM( 199?, m4denmendtad, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmtad.p1", 0x0000, 0x010000, CRC(2edab31e) SHA1(c1cb258aba42e6ae33df731504d23162118054be), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 AD)" )
-GAME_CUSTOM( 199?, m4denmendtb, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmtb.p1", 0x0000, 0x010000, CRC(c40fe8a4) SHA1(e182b0b1b975947da3b0a94afd17cdf166d7a8ac), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 B)" )
-GAME_CUSTOM( 199?, m4denmendtbd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmtbd.p1", 0x0000, 0x010000, CRC(d9140665) SHA1(cba8fc1c285c9192a6ea80b3f0c958781a818489), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 BD)" )
-GAME_CUSTOM( 199?, m4denmendtk, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmtk.p1", 0x0000, 0x010000, CRC(b64b6b3f) SHA1(f39b2143b811375564ec82030a7d34057f79b3f7), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 K)" )
-GAME_CUSTOM( 199?, m4denmendtkd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmtdk.p1", 0x0000, 0x010000, CRC(b6211765) SHA1(3a2c5b1ef27113221ce7b61562f06589bcfa9072), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 KD)" )
-GAME_CUSTOM( 199?, m4denmendty, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmty.p1", 0x0000, 0x010000, CRC(dbfa78a5) SHA1(edd9a1f286f3aa56a919e9e0c0013e9940d139ac), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 Y)" )
-GAME_CUSTOM( 199?, m4denmendtyd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default, "dmtdy.p1", 0x0000, 0x010000, CRC(66064a45) SHA1(3f64212b85320fba66afd40c0bb0cd58a5a616bf), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 YD)" )
+GAME_CUSTOM( 199?, m4denmendt, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmts.p1", 0x0000, 0x010000, CRC(1a2776e3) SHA1(4d5029a5abafb3945d533ca5ca23b32c036fbb31), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1)" )
+GAME_CUSTOM( 199?, m4denmendtd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmtd.p1", 0x0000, 0x010000, CRC(9b38fa46) SHA1(ce6509349c82a651336753a3062c1cf2390d0b9a), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 D)" )
+GAME_CUSTOM( 199?, m4denmendtad, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmtad.p1", 0x0000, 0x010000, CRC(2edab31e) SHA1(c1cb258aba42e6ae33df731504d23162118054be), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 AD)" )
+GAME_CUSTOM( 199?, m4denmendtb, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmtb.p1", 0x0000, 0x010000, CRC(c40fe8a4) SHA1(e182b0b1b975947da3b0a94afd17cdf166d7a8ac), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 B)" )
+GAME_CUSTOM( 199?, m4denmendtbd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmtbd.p1", 0x0000, 0x010000, CRC(d9140665) SHA1(cba8fc1c285c9192a6ea80b3f0c958781a818489), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 BD)" )
+GAME_CUSTOM( 199?, m4denmendtk, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmtk.p1", 0x0000, 0x010000, CRC(b64b6b3f) SHA1(f39b2143b811375564ec82030a7d34057f79b3f7), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 K)" )
+GAME_CUSTOM( 199?, m4denmendtkd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmtdk.p1", 0x0000, 0x010000, CRC(b6211765) SHA1(3a2c5b1ef27113221ce7b61562f06589bcfa9072), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 KD)" )
+GAME_CUSTOM( 199?, m4denmendty, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmty.p1", 0x0000, 0x010000, CRC(dbfa78a5) SHA1(edd9a1f286f3aa56a919e9e0c0013e9940d139ac), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 Y)" )
+GAME_CUSTOM( 199?, m4denmendtyd, m4denmen, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, init_m4, "dmtdy.p1", 0x0000, 0x010000, CRC(66064a45) SHA1(3f64212b85320fba66afd40c0bb0cd58a5a616bf), "Barcrest","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 YD)" )
// different protection
// "(C)1993 BARCREST" and "DMT 0.1" (but hack? similar to other DMT sets, but with extra code inserted in places etc. different chr check)
-GAME_CUSTOM( 199?, m4denmen_h1, m4denmen, mod4oki_bootleg_fixedret<0x2b>, mpu4, init_m4default, "dtm205", 0x0000, 0x010000, CRC(af76a460) SHA1(325021a92042c87e804bc17d6a7ccfda8bf865b8), "hack","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1, hack?)" )
+GAME_CUSTOM( 199?, m4denmen_h1, m4denmen, mod4oki_bootleg_fixedret<0x2b>(R4, RT1), mpu4, init_m4, "dtm205", 0x0000, 0x010000, CRC(af76a460) SHA1(325021a92042c87e804bc17d6a7ccfda8bf865b8), "hack","Dennis The Menace (Barcrest) (MPU4) (DMT 0.1, hack?)" )
// "DAFFY DUCK" and "V1 0.1" (display message R.E.O instead of Barcrest)
-GAME_CUSTOM( 199?, m4denmen_h2, m4denmen, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default, "den20.10", 0x0000, 0x010000, CRC(e002932d) SHA1(0a9b31c138a79695e1c1c29eee40c5a741275da6), "hack","Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 1)" )
-GAME_CUSTOM( 199?, m4denmen_h3, m4denmen, mod4oki_bootleg_fixedret<0x10>, mpu4, init_m4default, "denm2010", 0x0000, 0x010000, CRC(dbed5e48) SHA1(f374f01aeefca7cc19fc46c93e2ca7a10606b183), "hack","Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 2)" )
+GAME_CUSTOM( 199?, m4denmen_h2, m4denmen, mod4oki_bootleg_fixedret<0x1d>(R4, RT1), mpu4, init_m4, "den20.10", 0x0000, 0x010000, CRC(e002932d) SHA1(0a9b31c138a79695e1c1c29eee40c5a741275da6), "hack","Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 1)" )
+GAME_CUSTOM( 199?, m4denmen_h3, m4denmen, mod4oki_bootleg_fixedret<0x10>(R4, RT1), mpu4, init_m4, "denm2010", 0x0000, 0x010000, CRC(dbed5e48) SHA1(f374f01aeefca7cc19fc46c93e2ca7a10606b183), "hack","Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 2)" )
/*****************************************************************************************************************************************************************************
@@ -1027,22 +1002,22 @@ GAME_CUSTOM( 199?, m4denmen_h3, m4denmen, mod4oki_bootleg_fixedret<0x10>, mpu
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CRM 3.0"
-GAME_CUSTOM( 1993, m4crmaze, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crms.p1", 0x0000, 0x020000, CRC(b289c54b) SHA1(eb74bb559e2be2737fc311d044b9ce87014616f3), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0)" )
-GAME_CUSTOM( 1993, m4crmaze__h, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmd.p1", 0x0000, 0x020000, CRC(1232a809) SHA1(483b96b3b3ea50cbf5c3823c3ba20369b88bd459), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 D)" )
-GAME_CUSTOM( 1993, m4crmaze__d, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmad.p1", 0x0000, 0x020000, CRC(ed30e66e) SHA1(25c09637f6efaf8e24f758405fb55d6cfc7f4782), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 AD)" )
-GAME_CUSTOM( 1993, m4crmaze__e, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmb.p1", 0x0000, 0x020000, CRC(6f29a37f) SHA1(598541e2dbf05b3f2a70279276407cd93734731e), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 B)" )
-GAME_CUSTOM( 1993, m4crmaze__f, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmbd.p1", 0x0000, 0x020000, CRC(602a48ab) SHA1(3f1bf2b3294d15013e89d906865f065476202e54), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 BD)" )
-GAME_CUSTOM( 1993, m4crmaze__g, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmc.p1", 0x0000, 0x020000, CRC(58631e6d) SHA1(cffecd4c4ca46aa0ccfbaf7592d58da0428cf143), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 C)" )
-GAME_CUSTOM( 1993, m4crmaze__k, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmk.p1", 0x0000, 0x020000, CRC(25ee0b29) SHA1(addadf351a26e235a7fca573145a501aa6c0b53c), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 K)" )
-GAME_CUSTOM( 1993, m4crmaze__i, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmdk.p1", 0x0000, 0x020000, CRC(2aede0fd) SHA1(1731c901149c196d8f6a8bf3c2eec4f9a42126ad), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 KD)" )
-GAME_CUSTOM( 1993, m4crmaze__l, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmy.p1", 0x0000, 0x020000, CRC(a20d2bd7) SHA1(b05a0e2ab2b90a86873976c26a8299cb703fd6eb), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 Y)" )
-GAME_CUSTOM( 1993, m4crmaze__j, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "crmdy.p1", 0x0000, 0x020000, CRC(ad0ec003) SHA1(2d8a7467c3a79d60100f1290abe06410aaefaa49), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 YD)" )
+GAME_CUSTOM( 1993, m4crmaze, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crms.p1", 0x0000, 0x020000, CRC(b289c54b) SHA1(eb74bb559e2be2737fc311d044b9ce87014616f3), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0)" )
+GAME_CUSTOM( 1993, m4crmaze__h, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmd.p1", 0x0000, 0x020000, CRC(1232a809) SHA1(483b96b3b3ea50cbf5c3823c3ba20369b88bd459), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 D)" )
+GAME_CUSTOM( 1993, m4crmaze__d, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmad.p1", 0x0000, 0x020000, CRC(ed30e66e) SHA1(25c09637f6efaf8e24f758405fb55d6cfc7f4782), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 AD)" )
+GAME_CUSTOM( 1993, m4crmaze__e, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmb.p1", 0x0000, 0x020000, CRC(6f29a37f) SHA1(598541e2dbf05b3f2a70279276407cd93734731e), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 B)" )
+GAME_CUSTOM( 1993, m4crmaze__f, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmbd.p1", 0x0000, 0x020000, CRC(602a48ab) SHA1(3f1bf2b3294d15013e89d906865f065476202e54), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 BD)" )
+GAME_CUSTOM( 1993, m4crmaze__g, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmc.p1", 0x0000, 0x020000, CRC(58631e6d) SHA1(cffecd4c4ca46aa0ccfbaf7592d58da0428cf143), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 C)" )
+GAME_CUSTOM( 1993, m4crmaze__k, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmk.p1", 0x0000, 0x020000, CRC(25ee0b29) SHA1(addadf351a26e235a7fca573145a501aa6c0b53c), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 K)" )
+GAME_CUSTOM( 1993, m4crmaze__i, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmdk.p1", 0x0000, 0x020000, CRC(2aede0fd) SHA1(1731c901149c196d8f6a8bf3c2eec4f9a42126ad), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 KD)" )
+GAME_CUSTOM( 1993, m4crmaze__l, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmy.p1", 0x0000, 0x020000, CRC(a20d2bd7) SHA1(b05a0e2ab2b90a86873976c26a8299cb703fd6eb), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 Y)" )
+GAME_CUSTOM( 1993, m4crmaze__j, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crmdy.p1", 0x0000, 0x020000, CRC(ad0ec003) SHA1(2d8a7467c3a79d60100f1290abe06410aaefaa49), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 YD)" )
// "(C)1993 BARCREST" and "CRM 2.3"
-GAME_CUSTOM( 1993, m4crmaze__c, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, init_m4default_big_lextender, "cmaze8", 0x0000, 0x020000, CRC(f2f81306) SHA1(725bfbdc53cf66c08b440c2b8d45547aa426d9c7), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 2.3)" )
+GAME_CUSTOM( 1993, m4crmaze__c, m4crmaze, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "cmaze8", 0x0000, 0x020000, CRC(f2f81306) SHA1(725bfbdc53cf66c08b440c2b8d45547aa426d9c7), "Barcrest","The Crystal Maze (Barcrest) (MPU4) (CRM 2.3)" )
// different protection
// no copyright string, and "CRM 3.0"
-GAME_CUSTOM( 1993, m4crmaze__m, m4crmaze, mod4oki_bootleg_fixedret<0x70>, mpu4jackpot8tkn, init_m4default_big_lextender, "crystalmaze15.bin", 0x0000, 0x020000, CRC(492440a4) SHA1(2d5fe812f1d815620f7e72333d44946b66f5c867), "hack?","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0, hack?)" )
+GAME_CUSTOM( 1993, m4crmaze__m, m4crmaze, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4big, "crystalmaze15.bin", 0x0000, 0x020000, CRC(492440a4) SHA1(2d5fe812f1d815620f7e72333d44946b66f5c867), "hack?","The Crystal Maze (Barcrest) (MPU4) (CRM 3.0, hack?)" )
// roms below are a smaller size, have they been hacked to not use banking, or are they bad, they're all Bwb versions but all have the Barcrest at the end blanked out rather than replaced
#undef GAME_CUSTOM
@@ -1055,17 +1030,17 @@ GAME_CUSTOM( 1993, m4crmaze__m, m4crmaze, mod4oki_bootleg_fixedret<0x70>, mpu
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// no copyright string, and "CR8 1.2"
-GAME_CUSTOM( 199?, m4crmaze__s, m4crmaze, mod4oki_bootleg_fixedret<0x2e>, mpu4jackpot8tkn, init_m4default_lextender, "cmaz58t", 0x0000, 0x010000, CRC(81a2c48a) SHA1(3ea25a2863f1350054f41cb169282c592565dbcd), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR8 1.2, hack?)" )
+GAME_CUSTOM( 199?, m4crmaze__s, m4crmaze, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4, "cmaz58t", 0x0000, 0x010000, CRC(81a2c48a) SHA1(3ea25a2863f1350054f41cb169282c592565dbcd), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR8 1.2, hack?)" )
// no copyright string, and "CRC 0.7"
-GAME_CUSTOM( 199?, m4crmaze__n, m4crmaze, mod4oki_bootleg_fixedret<0x1c>, mpu4jackpot8tkn, init_m4default_lextender, "cmaz5.10", 0x0000, 0x010000, CRC(13a64c64) SHA1(3a7c4173f99fdf1a4b5d5b627022b18eb66837ce), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CRC 0.7, hack?)" )
+GAME_CUSTOM( 199?, m4crmaze__n, m4crmaze, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4, "cmaz5.10", 0x0000, 0x010000, CRC(13a64c64) SHA1(3a7c4173f99fdf1a4b5d5b627022b18eb66837ce), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CRC 0.7, hack?)" )
// no copyright string, and "CRC 1.3"
-GAME_CUSTOM( 199?, m4crmaze__p, m4crmaze, mod4oki_bootleg_fixedret<0x1c>, mpu4jackpot8tkn, init_m4default_lextender, "cmaz510", 0x0000, 0x010000, CRC(0a1d39ac) SHA1(37888bbea427e115c29253deb85ed851ff6bdfd4), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CRC 1.3, hack?)" )
+GAME_CUSTOM( 199?, m4crmaze__p, m4crmaze, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4, "cmaz510", 0x0000, 0x010000, CRC(0a1d39ac) SHA1(37888bbea427e115c29253deb85ed851ff6bdfd4), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CRC 1.3, hack?)" )
// no copyright string, and "CR5 1.0"
-GAME_CUSTOM( 199?, m4crmaze__o, m4crmaze, mod4oki_bootleg_fixedret<0x2b>, mpu4jackpot8tkn, init_m4default_lextender, "cmaz5.5", 0x0000, 0x010000, CRC(1f110757) SHA1(a60bac78176dab70d68bfb2b6a44debf499c96e3), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 1.0, hack?)" )
+GAME_CUSTOM( 199?, m4crmaze__o, m4crmaze, mod4oki_bootleg_fixedret<0x2b>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4, "cmaz5.5", 0x0000, 0x010000, CRC(1f110757) SHA1(a60bac78176dab70d68bfb2b6a44debf499c96e3), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 1.0, hack?)" )
// no copyright string, and "CR5 2.0"
-GAME_CUSTOM( 199?, m4crmaze__q, m4crmaze, mod4oki_bootleg_fixedret<0x2b>, mpu4jackpot8tkn, init_m4default_lextender, "cmaz55", 0x0000, 0x010000, CRC(2c2540ce) SHA1(12163109e05fe8675bc2dbcad95f598bebec8ba3), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 2.0, hack?, set 1)" )
+GAME_CUSTOM( 199?, m4crmaze__q, m4crmaze, mod4oki_bootleg_fixedret<0x2b>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4, "cmaz55", 0x0000, 0x010000, CRC(2c2540ce) SHA1(12163109e05fe8675bc2dbcad95f598bebec8ba3), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 2.0, hack?, set 1)" )
// no copyright string, and "CR5 2.0"
-GAME_CUSTOM( 199?, m4crmaze__r, m4crmaze, mod4oki_bootleg_fixedret<0x28>, mpu4jackpot8tkn, init_m4default_lextender, "cmaz55v2", 0x0000, 0x010000, CRC(9a3515d6) SHA1(5edd2c67152d353a48ad2f28b685fae1e1e7fff7), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 2.0, hack?, set 2)" )
+GAME_CUSTOM( 199?, m4crmaze__r, m4crmaze, mod4oki_bootleg_fixedret<0x28>(R4, RT1, LPLB), mpu4jackpot8tkn, init_m4, "cmaz55v2", 0x0000, 0x010000, CRC(9a3515d6) SHA1(5edd2c67152d353a48ad2f28b685fae1e1e7fff7), "Bwb / hack?","The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 2.0, hack?, set 2)" )
/*****************************************************************************************************************************************************************************
@@ -1089,7 +1064,7 @@ GAME_CUSTOM( 199?, m4crmaze__r, m4crmaze, mod4oki_bootleg_fixedret<0x28>, mpu
ROM_LOAD( name, offset, length, hash ) \
M4SHOCM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, input, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), input, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "SCM 0.1"
GAME_CUSTOM( 199?, m4shocm, 0, mpu4jackpot8tkn20p, "scms.p1", 0x0000, 0x020000, CRC(8cb17f49) SHA1(6c67d5d65567ba3677f51f9c636e1f8e253111de), "Barcrest","Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1)" )
@@ -1128,7 +1103,7 @@ GAME_CUSTOM( 199?, m4shocm__j, m4shocm, mpu4jackpot8tkn20p, "scmk.p1", 0
ROM_LOAD( name, offset, length, hash ) \
M4CASHMN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CMA 0.8"
GAME_CUSTOM( 199?, m4cashmn__m, m4cashmn, "cma08ad.p1", 0x0000, 0x020000, CRC(fce2f785) SHA1(fc508e3d1036319894985600cb0142f13536078c), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.8 AD)" )
@@ -1166,7 +1141,7 @@ GAME_CUSTOM( 199?, m4cashmn__al, m4cashmn, "cmh07y.p1", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4CASHMN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CMA 0.7"
GAME_CUSTOM( 199?, m4cashmn, 0, "cma07s.p1", 0x0000, 0x020000, CRC(e9c1d9f2) SHA1(f2df4ae650ec2b62d15bbaa562d638476bf926e7), "Barcrest","Cash Machine (Barcrest) (MPU4) (CMA 0.7)" )
@@ -1208,7 +1183,7 @@ GAME_CUSTOM( 199?, m4cashmn__a, m4cashmn, "camc2010", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4CASHMN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CMH 0.6"
GAME_CUSTOM( 199?, m4cashmn__za, m4cashmn, "cma15g", 0x0000, 0x020000, CRC(f30b3ef2) SHA1(c8fb4d883d12a477a703d8cb0842994675aaf879), "hack?","Cash Machine (Barcrest) (MPU4) (CMH 0.6 Y, hack?)" )
@@ -1235,7 +1210,7 @@ GAME_CUSTOM( 199?, m4cashmn__zb, m4cashmn, "cma15t", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4TOPTEN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4topten, 0, "tts04s.p1", 0x0000, 0x020000, CRC(5e53f04f) SHA1(d49377966ed787cc3571eadff8c4c16fac74434c), "Barcrest","Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4)" )
GAME_CUSTOM( 199?, m4topten__ak, m4topten, "tts04ad.p1", 0x0000, 0x020000, CRC(cdcc3d18) SHA1(4e9ccb8bfbe5b86731a24631cc60819919bb3ce8), "Barcrest","Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 AD)" )
@@ -1276,7 +1251,7 @@ GAME_CUSTOM( 199?, m4topten__5, m4topten, "tth12y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4TOPTEN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4topten__6, m4topten, "tts02ad.p1", 0x0000, 0x020000, CRC(afba21a4) SHA1(6394014f5d46df96d6c7cd840fec996a6d5ffee5), "Barcrest","Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 AD)" )
GAME_CUSTOM( 199?, m4topten__7, m4topten, "tts02b.p1", 0x0000, 0x020000, CRC(ef4e080d) SHA1(a82940e58537d0c40f97c43aec470d68e9b344e8), "Barcrest","Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 B)" )
@@ -1315,7 +1290,7 @@ GAME_CUSTOM( 199?, m4topten__r, m4topten, "tth10y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4TOPTEN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string, different protection
@@ -1333,7 +1308,7 @@ ROM_START( m4take5 )
ROM_END
// badchr, non-standard protection, hack?
-GAME(199?, m4take5, m4topten, mod4oki_bootleg_fixedret<0x69>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"bootleg?","Top Tenner ('Take 5' bootleg) (MPU4) (TES 2.0)",GAME_FLAGS )
+GAME(199?, m4take5, m4topten, mod4oki_bootleg_fixedret<0x69>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0,"bootleg?","Top Tenner ('Take 5' bootleg) (MPU4) (TES 2.0)",GAME_FLAGS )
@@ -1358,7 +1333,7 @@ GAME(199?, m4take5, m4topten, mod4oki_bootleg_fixedret<0x69>, mpu4
ROM_LOAD( name, offset, length, hash ) \
M4TOOT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "TOC 0.4"
GAME_CUSTOM( 199?, m4toot__v, m4toot, "toc04s.p1", 0x0000, 0x020000, CRC(295e6fff) SHA1(a21d991f00f144e12de60b891e3e2e5dd7d08d71), "Barcrest","Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4)" )
@@ -1394,7 +1369,7 @@ GAME_CUSTOM( 199?, m4toot__ak, m4toot, "tot06y.p1", 0x0000, 0x020000, CRC(8
ROM_LOAD( name, offset, length, hash ) \
M4TOOT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "TOC 0.3"
GAME_CUSTOM( 199?, m4toot, 0, "toc03s.p1", 0x0000, 0x020000, CRC(30feff92) SHA1(14397768ebd7469b4d1cff22ca9727f63608a98a), "Barcrest","Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3)" )
@@ -1432,7 +1407,7 @@ GAME_CUSTOM( 199?, m4toot__al, m4toot, "tten2010", 0x0000, 0x020000, CRC(2
ROM_LOAD( name, offset, length, hash ) \
M4TOOT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -1461,7 +1436,7 @@ GAME_CUSTOM( 199?, m4toot__zb, m4toot, "tot15t", 0x0000, 0x020000, CRC(1
ROM_LOAD( name, offset, length, hash ) \
M4EAW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "ER8 0.1"
@@ -1518,7 +1493,7 @@ GAME_CUSTOM( 199?, m4eaw__v, m4eaw, "ceu02y.p1", 0x0000, 0x0100
ROM_LOAD( name, offset, length, hash ) \
M4EAW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "ER2 0.1"
@@ -1554,7 +1529,7 @@ GAME_CUSTOM( 199?, m4eaw__bl, m4eaw, "erty.p1", 0x0000, 0x0100
ROM_LOAD( name, offset, length, hash ) \
M4EAW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "ER4 0.1" (startup is ENN 0.1)
GAME_CUSTOM( 199?, m4eaw__6, m4eaw, "enn01s.p1", 0x0000, 0x010000, CRC(d0ba447d) SHA1(744d5448c5318287e58994b684e116ac1a236f05), "Barcrest","Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 / ER4 0.1)" )
@@ -1621,62 +1596,62 @@ GAME_CUSTOM( 199?, m4eaw__bx, m4eaw, "eun01y.p1", 0x0000, 0x0100
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// (C)1993 BARCREST and "WN5 0.1"
-GAME_CUSTOM( 199?, m4wta__m, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5s.p1", 0x0000, 0x010000, CRC(f6e925c1) SHA1(963f06462c73300757aad2371df4ebe28afca521), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1)" )
-GAME_CUSTOM( 199?, m4wta__f, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5ad.p1", 0x0000, 0x010000, CRC(0eb0845d) SHA1(57a2ca27672119e71af3b990cedcf52dd89e24cc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 AD)" )
-GAME_CUSTOM( 199?, m4wta__g, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5b.p1", 0x0000, 0x010000, CRC(82cefba2) SHA1(07753a5f0d455422f33495a6f050c8e16a92e087), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 B)" )
-GAME_CUSTOM( 199?, m4wta__h, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5bd.p1", 0x0000, 0x010000, CRC(19d25b26) SHA1(91459c87e95d9800c5f77fd0c7f72f8a1488dc37), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 BD)" )
-GAME_CUSTOM( 199?, m4wta__i, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5d.p1", 0x0000, 0x010000, CRC(8a3d6bed) SHA1(a20f24cd5216976913c0405f54883d6080986867), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 D)" )
-GAME_CUSTOM( 199?, m4wta__j, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5dk.p1", 0x0000, 0x010000, CRC(1dfcb2bc) SHA1(b1a73a7758c3126f7b13156835c91a4900cbe6e0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 KD)" )
-GAME_CUSTOM( 199?, m4wta__k, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5dy.p1", 0x0000, 0x010000, CRC(d45e1db0) SHA1(2524c4b60a89ea0ca15cf999fbd1f8d9029dfbb6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 YD)" )
-GAME_CUSTOM( 199?, m4wta__l, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5k.p1", 0x0000, 0x010000, CRC(71c34cb4) SHA1(e1b96dd30d8ab680128d76886691d06fcd2d48c0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 K)" )
-GAME_CUSTOM( 199?, m4wta__n, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wn5y.p1", 0x0000, 0x010000, CRC(7155f8b5) SHA1(f55f88fd7b0144cb7b64640d529b179dd056f5ec), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 Y)" )
+GAME_CUSTOM( 199?, m4wta__m, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5s.p1", 0x0000, 0x010000, CRC(f6e925c1) SHA1(963f06462c73300757aad2371df4ebe28afca521), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1)" )
+GAME_CUSTOM( 199?, m4wta__f, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5ad.p1", 0x0000, 0x010000, CRC(0eb0845d) SHA1(57a2ca27672119e71af3b990cedcf52dd89e24cc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 AD)" )
+GAME_CUSTOM( 199?, m4wta__g, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5b.p1", 0x0000, 0x010000, CRC(82cefba2) SHA1(07753a5f0d455422f33495a6f050c8e16a92e087), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 B)" )
+GAME_CUSTOM( 199?, m4wta__h, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5bd.p1", 0x0000, 0x010000, CRC(19d25b26) SHA1(91459c87e95d9800c5f77fd0c7f72f8a1488dc37), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 BD)" )
+GAME_CUSTOM( 199?, m4wta__i, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5d.p1", 0x0000, 0x010000, CRC(8a3d6bed) SHA1(a20f24cd5216976913c0405f54883d6080986867), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 D)" )
+GAME_CUSTOM( 199?, m4wta__j, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5dk.p1", 0x0000, 0x010000, CRC(1dfcb2bc) SHA1(b1a73a7758c3126f7b13156835c91a4900cbe6e0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 KD)" )
+GAME_CUSTOM( 199?, m4wta__k, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5dy.p1", 0x0000, 0x010000, CRC(d45e1db0) SHA1(2524c4b60a89ea0ca15cf999fbd1f8d9029dfbb6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 YD)" )
+GAME_CUSTOM( 199?, m4wta__l, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5k.p1", 0x0000, 0x010000, CRC(71c34cb4) SHA1(e1b96dd30d8ab680128d76886691d06fcd2d48c0), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 K)" )
+GAME_CUSTOM( 199?, m4wta__n, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn5y.p1", 0x0000, 0x010000, CRC(7155f8b5) SHA1(f55f88fd7b0144cb7b64640d529b179dd056f5ec), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN5 0.1 Y)" )
// "(C)1993 BARCREST" and "WNT 0.1"
-GAME_CUSTOM( 199?, m4wta__4, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wnts.p1", 0x0000, 0x010000, CRC(3a9b0878) SHA1(85e86cca1a3a079746cd4401767ba1d9fc31a938), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1)" )
-GAME_CUSTOM( 199?, m4wta__x, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wntad.p1", 0x0000, 0x010000, CRC(8502766e) SHA1(2a47c8f8ce8711b30962c5e8ef9093bdd3543551), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 AD)" )
-GAME_CUSTOM( 199?, m4wta__y, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wntb.p1", 0x0000, 0x010000, CRC(1e3159f0) SHA1(ab9d0e9e6731b40c66c358d98c6481f31d9a0b0c), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 B)" )
-GAME_CUSTOM( 199?, m4wta__z, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wntbd.p1", 0x0000, 0x010000, CRC(91cc8978) SHA1(570ad4092bb148106fb2600f1e22b6cb6f57002a), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 BD)" )
-GAME_CUSTOM( 199?, m4wta__0, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wntd.p1", 0x0000, 0x010000, CRC(ad68d804) SHA1(f301d0d267dd0020903f06b67ee6494b71258c68), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 D)" )
-GAME_CUSTOM( 199?, m4wta__1, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wntdk.p1", 0x0000, 0x010000, CRC(3a6b65b8) SHA1(1da0448e53a45fa249c14b5655cd0dc957ebb646), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 KD)" )
-GAME_CUSTOM( 199?, m4wta__2, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wntdy.p1", 0x0000, 0x010000, CRC(2420634f) SHA1(5c6e891c34a6e2b3a6acb3856c1554145bb24d0d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 YD)" )
-GAME_CUSTOM( 199?, m4wta__3, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wntk.p1", 0x0000, 0x010000, CRC(3d8d07c7) SHA1(4659e2459d956bbcf5ef2a605527317ccdafcccb), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 K)" )
-GAME_CUSTOM( 199?, m4wta__5, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "wnty.p1", 0x0000, 0x010000, CRC(edaa5ae7) SHA1(d24b9f37d75f13f16718374e48e6c003b0b3333f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 Y)" )
+GAME_CUSTOM( 199?, m4wta__4, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wnts.p1", 0x0000, 0x010000, CRC(3a9b0878) SHA1(85e86cca1a3a079746cd4401767ba1d9fc31a938), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1)" )
+GAME_CUSTOM( 199?, m4wta__x, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wntad.p1", 0x0000, 0x010000, CRC(8502766e) SHA1(2a47c8f8ce8711b30962c5e8ef9093bdd3543551), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 AD)" )
+GAME_CUSTOM( 199?, m4wta__y, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wntb.p1", 0x0000, 0x010000, CRC(1e3159f0) SHA1(ab9d0e9e6731b40c66c358d98c6481f31d9a0b0c), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 B)" )
+GAME_CUSTOM( 199?, m4wta__z, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wntbd.p1", 0x0000, 0x010000, CRC(91cc8978) SHA1(570ad4092bb148106fb2600f1e22b6cb6f57002a), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 BD)" )
+GAME_CUSTOM( 199?, m4wta__0, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wntd.p1", 0x0000, 0x010000, CRC(ad68d804) SHA1(f301d0d267dd0020903f06b67ee6494b71258c68), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 D)" )
+GAME_CUSTOM( 199?, m4wta__1, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wntdk.p1", 0x0000, 0x010000, CRC(3a6b65b8) SHA1(1da0448e53a45fa249c14b5655cd0dc957ebb646), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 KD)" )
+GAME_CUSTOM( 199?, m4wta__2, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wntdy.p1", 0x0000, 0x010000, CRC(2420634f) SHA1(5c6e891c34a6e2b3a6acb3856c1554145bb24d0d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 YD)" )
+GAME_CUSTOM( 199?, m4wta__3, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wntk.p1", 0x0000, 0x010000, CRC(3d8d07c7) SHA1(4659e2459d956bbcf5ef2a605527317ccdafcccb), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 K)" )
+GAME_CUSTOM( 199?, m4wta__5, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wnty.p1", 0x0000, 0x010000, CRC(edaa5ae7) SHA1(d24b9f37d75f13f16718374e48e6c003b0b3333f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WNT 0.1 Y)" )
// (C)1993 BARCREST and "WIN 0.6"
-GAME_CUSTOM( 199?, m4wta, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wins.p1", 0x0000, 0x010000, CRC(d79d1e5b) SHA1(722657423a605d6d272d61e4e00b4055ed05f98d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6)" )
-GAME_CUSTOM( 199?, m4wta__b, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "windy.p1", 0x0000, 0x010000, CRC(d8b78c2d) SHA1(d8c2a2ac30a9b876acfbe99e3c540ba0e82cde33), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6 YD)" )
-GAME_CUSTOM( 199?, m4wta__e, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "winy.p1", 0x0000, 0x010000, CRC(5ff8ed08) SHA1(9567db64e8ebf25ecb22236598cc88a3106f0e36), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6 Y)" )
-GAME_CUSTOM( 199?, m4wta__aa, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wtall20a", 0x0000, 0x010000, CRC(b53c951e) SHA1(24f96d16852a4fbaf49fbdf29a26d15877f07b18), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6 K)" )
+GAME_CUSTOM( 199?, m4wta, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wins.p1", 0x0000, 0x010000, CRC(d79d1e5b) SHA1(722657423a605d6d272d61e4e00b4055ed05f98d), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6)" )
+GAME_CUSTOM( 199?, m4wta__b, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "windy.p1", 0x0000, 0x010000, CRC(d8b78c2d) SHA1(d8c2a2ac30a9b876acfbe99e3c540ba0e82cde33), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6 YD)" )
+GAME_CUSTOM( 199?, m4wta__e, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "winy.p1", 0x0000, 0x010000, CRC(5ff8ed08) SHA1(9567db64e8ebf25ecb22236598cc88a3106f0e36), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6 Y)" )
+GAME_CUSTOM( 199?, m4wta__aa, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wtall20a", 0x0000, 0x010000, CRC(b53c951e) SHA1(24f96d16852a4fbaf49fbdf29a26d15877f07b18), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WIN 0.6 K)" )
// (C)1993 BARCREST and "WN8 0.1"
-GAME_CUSTOM( 199?, m4wta__u, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8s.p1", 0x0000, 0x010000, CRC(5c5a0f31) SHA1(301e595141dd6eb9250d71e591780e15a7d36423), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1)" )
-GAME_CUSTOM( 199?, m4wta__o, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8b.p1", 0x0000, 0x010000, CRC(7e84f99c) SHA1(bef41b3e7906bdaadfa5741e9ae40028f4fd360f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 B)" )
-GAME_CUSTOM( 199?, m4wta__p, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8c.p1", 0x0000, 0x010000, CRC(471ba65a) SHA1(6ede860bcf323ee75dd7f75a51e5d1166ee72abc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 C)" )
-GAME_CUSTOM( 199?, m4wta__q, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8d.p1", 0x0000, 0x010000, CRC(eb2bd01e) SHA1(df74f8eb8fa411bab20ab522fd7c511a1370fe90), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 D)" )
-GAME_CUSTOM( 199?, m4wta__r, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8dk.p1", 0x0000, 0x010000, CRC(ec20a0bc) SHA1(61b615165a6e77cd85e1fa6aeb955307ec48d1b6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 KD)" )
-GAME_CUSTOM( 199?, m4wta__s, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8dy.p1", 0x0000, 0x010000, CRC(d2a1513c) SHA1(e4d2ad88846cbb6b393d3615bf10e1dea01de219), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 YD)" )
-GAME_CUSTOM( 199?, m4wta__t, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8k.p1", 0x0000, 0x010000, CRC(3e15c690) SHA1(2fc1cca91ac5cc9abeac112e4d60e8fd57b07b94), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 K)" )
-GAME_CUSTOM( 199?, m4wta__v, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default_lextender, "wn8y.p1", 0x0000, 0x010000, CRC(993cee6a) SHA1(26b2d5d3aa3465f90fe74960f183b8580ea2fbb1), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 Y)" )
+GAME_CUSTOM( 199?, m4wta__u, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8s.p1", 0x0000, 0x010000, CRC(5c5a0f31) SHA1(301e595141dd6eb9250d71e591780e15a7d36423), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1)" )
+GAME_CUSTOM( 199?, m4wta__o, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8b.p1", 0x0000, 0x010000, CRC(7e84f99c) SHA1(bef41b3e7906bdaadfa5741e9ae40028f4fd360f), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 B)" )
+GAME_CUSTOM( 199?, m4wta__p, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8c.p1", 0x0000, 0x010000, CRC(471ba65a) SHA1(6ede860bcf323ee75dd7f75a51e5d1166ee72abc), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 C)" )
+GAME_CUSTOM( 199?, m4wta__q, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8d.p1", 0x0000, 0x010000, CRC(eb2bd01e) SHA1(df74f8eb8fa411bab20ab522fd7c511a1370fe90), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 D)" )
+GAME_CUSTOM( 199?, m4wta__r, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8dk.p1", 0x0000, 0x010000, CRC(ec20a0bc) SHA1(61b615165a6e77cd85e1fa6aeb955307ec48d1b6), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 KD)" )
+GAME_CUSTOM( 199?, m4wta__s, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8dy.p1", 0x0000, 0x010000, CRC(d2a1513c) SHA1(e4d2ad88846cbb6b393d3615bf10e1dea01de219), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 YD)" )
+GAME_CUSTOM( 199?, m4wta__t, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8k.p1", 0x0000, 0x010000, CRC(3e15c690) SHA1(2fc1cca91ac5cc9abeac112e4d60e8fd57b07b94), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 K)" )
+GAME_CUSTOM( 199?, m4wta__v, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wn8y.p1", 0x0000, 0x010000, CRC(993cee6a) SHA1(26b2d5d3aa3465f90fe74960f183b8580ea2fbb1), "Barcrest","Winner Takes All (Barcrest) (MPU4) (WN8 0.1 Y)" )
// "(C)1996 B.W.B." and "WN4 1.1"
-GAME_CUSTOM( 199?, m4wta__9, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wtaalt_characteriser_prot>, mpu4, init_m4default_lextender, "wta_5p_4c.bin", 0x0000, 0x010000, CRC(54c51976) SHA1(70cae1f931615b993ac6a9e7ce2e529ad6d27da8), "BWB","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 K5)" )
-GAME_CUSTOM( 199?, m4wta__ab, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wtaalt_characteriser_prot>, mpu4, init_m4default_lextender, "wt_05__4.1_1", 0x0000, 0x010000, CRC(5e05485e) SHA1(062f16ca92518f746f5410a2b9b551542e1a68e3), "BWB","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 5)" )
+GAME_CUSTOM( 199?, m4wta__9, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wtaalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wta_5p_4c.bin", 0x0000, 0x010000, CRC(54c51976) SHA1(70cae1f931615b993ac6a9e7ce2e529ad6d27da8), "BWB","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 K5)" )
+GAME_CUSTOM( 199?, m4wta__ab, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wtaalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wt_05__4.1_1", 0x0000, 0x010000, CRC(5e05485e) SHA1(062f16ca92518f746f5410a2b9b551542e1a68e3), "BWB","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 5)" )
// "(C)1996 B.W.B." and "WN5 3.0"
-GAME_CUSTOM( 199?, m4wta__ac, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wtaalt_characteriser_prot>, mpu4, init_m4default_lextender, "wt_05__5.3_1", 0x0000, 0x010000, CRC(8a289bbd) SHA1(8ae0858716ed6aa02f6b4f93fd367c7cee85d13a), "BWB","Winner Takes All (Barcrest) (MPU4) (WN5 3.0 5)" )
+GAME_CUSTOM( 199?, m4wta__ac, m4wta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wtaalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "wt_05__5.3_1", 0x0000, 0x010000, CRC(8a289bbd) SHA1(8ae0858716ed6aa02f6b4f93fd367c7cee85d13a), "BWB","Winner Takes All (Barcrest) (MPU4) (WN5 3.0 5)" )
// below require different protection handling
// "(C)1993 BARCREST" and "WNT 0.1"
-GAME_CUSTOM( 199?, m4wta__w, m4wta, mod4oki_bootleg_fixedret<0x1e>, mpu4, init_m4default_lextender, "wnta2010", 0x0000, 0x010000, CRC(5b08faf8) SHA1(f4657041562044e17febfe77ad1f849545dcdaec), "hack","Winner Takes All (Barcrest) (MPU4) (WNT 0.1, hack)" )
+GAME_CUSTOM( 199?, m4wta__w, m4wta, mod4oki_bootleg_fixedret<0x1e>(R4, RT1, LPLB), mpu4, init_m4, "wnta2010", 0x0000, 0x010000, CRC(5b08faf8) SHA1(f4657041562044e17febfe77ad1f849545dcdaec), "hack","Winner Takes All (Barcrest) (MPU4) (WNT 0.1, hack)" )
// "(C)1996 B.W.B." and "WNC 1.3"
-GAME_CUSTOM( 199?, m4wta__7, m4wta, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "wta510l", 0x0000, 0x010000, CRC(9ce140ae) SHA1(01d53a5da0161ac4ecc861309f645d6eb47b4af5), "hack","Winner Takes All (Barcrest) (MPU4) (WNC 1.3 5, hack, set 1)" )
-GAME_CUSTOM( 199?, m4wta__ad, m4wta, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "wta5.10", 0x0000, 0x010000, CRC(c1ae8e9a) SHA1(66c0b200202386a10b96b7141517a52921266950), "hack","Winner Takes All (Barcrest) (MPU4) (WNC 1.3 5, hack, set 2)" )
+GAME_CUSTOM( 199?, m4wta__7, m4wta, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "wta510l", 0x0000, 0x010000, CRC(9ce140ae) SHA1(01d53a5da0161ac4ecc861309f645d6eb47b4af5), "hack","Winner Takes All (Barcrest) (MPU4) (WNC 1.3 5, hack, set 1)" )
+GAME_CUSTOM( 199?, m4wta__ad, m4wta, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "wta5.10", 0x0000, 0x010000, CRC(c1ae8e9a) SHA1(66c0b200202386a10b96b7141517a52921266950), "hack","Winner Takes All (Barcrest) (MPU4) (WNC 1.3 5, hack, set 2)" )
// "(C)1996 B.W.B." and "WN8 2.2"
-GAME_CUSTOM( 199?, m4wta__8, m4wta, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_lextender, "wta58tl", 0x0000, 0x010000, CRC(7275e865) SHA1(d5550646a062609cfc052fab81c533ca69171875), "hack","Winner Takes All (Barcrest) (MPU4) (WN8 2.2 5, hack, set 1)" )
-GAME_CUSTOM( 199?, m4wta__ag, m4wta, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_lextender, "wta5.8t", 0x0000, 0x010000, CRC(548122ab) SHA1(c611084e8a08d5556e458daf9cc721c0e5ba1948), "hack","Winner Takes All (Barcrest) (MPU4) (WN8 2.2 5, hack, set 2)" )
-GAME_CUSTOM( 199?, m4wta__ae, m4wta, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_lextender, "wta5.4", 0x0000, 0x010000, CRC(00c64637) SHA1(54214edb107b28852a1bd3e095787bf9241e4fe3), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 K5, hack?)" ) // bad char alarm
+GAME_CUSTOM( 199?, m4wta__8, m4wta, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPLB), mpu4, init_m4, "wta58tl", 0x0000, 0x010000, CRC(7275e865) SHA1(d5550646a062609cfc052fab81c533ca69171875), "hack","Winner Takes All (Barcrest) (MPU4) (WN8 2.2 5, hack, set 1)" )
+GAME_CUSTOM( 199?, m4wta__ag, m4wta, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPLB), mpu4, init_m4, "wta5.8t", 0x0000, 0x010000, CRC(548122ab) SHA1(c611084e8a08d5556e458daf9cc721c0e5ba1948), "hack","Winner Takes All (Barcrest) (MPU4) (WN8 2.2 5, hack, set 2)" )
+GAME_CUSTOM( 199?, m4wta__ae, m4wta, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPLB), mpu4, init_m4, "wta5.4", 0x0000, 0x010000, CRC(00c64637) SHA1(54214edb107b28852a1bd3e095787bf9241e4fe3), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1 K5, hack?)" ) // bad char alarm
// "197 COCO" and "WN4 1.1" (hack)
-GAME_CUSTOM( 199?, m4wta__d, m4wta, mod4oki_bootleg_fixedret<0x28>, mpu4, init_m4default_lextender, "wta55", 0x0000, 0x010000, CRC(df3e66cd) SHA1(68e769816cb1a71dea8a3ccf4636414c45c01646), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 1)" )
-GAME_CUSTOM( 199?, m4wta__af, m4wta, mod4oki_bootleg_fixedret<0x28>, mpu4, init_m4default_lextender, "wta5.5n", 0x0000, 0x010000, CRC(85eed9b5) SHA1(6a11ff6a031b788524d23018e3af44767176246a), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 2)" )
+GAME_CUSTOM( 199?, m4wta__d, m4wta, mod4oki_bootleg_fixedret<0x28>(R4, RT1, LPLB), mpu4, init_m4, "wta55", 0x0000, 0x010000, CRC(df3e66cd) SHA1(68e769816cb1a71dea8a3ccf4636414c45c01646), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 1)" )
+GAME_CUSTOM( 199?, m4wta__af, m4wta, mod4oki_bootleg_fixedret<0x28>(R4, RT1, LPLB), mpu4, init_m4, "wta5.5n", 0x0000, 0x010000, CRC(85eed9b5) SHA1(6a11ff6a031b788524d23018e3af44767176246a), "hack","Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 2)" )
// "BILLY WHIZZ" and "V1 0.1"
-GAME_CUSTOM( 199?, m4wta__6, m4wta, mod4oki_bootleg_fixedret<0x60>, mpu4, init_m4default_lextender, "wta20p10.bin", 0x0000, 0x010000, CRC(c7f235b8) SHA1(a25f6f755140d70b0392985839b1729640cf5d5d), "hack","Winner Takes All (Barcrest) (MPU4) (V1 0.1, hack)" )
+GAME_CUSTOM( 199?, m4wta__6, m4wta, mod4oki_bootleg_fixedret<0x60>(R4, RT1, LPLB), mpu4, init_m4, "wta20p10.bin", 0x0000, 0x010000, CRC(c7f235b8) SHA1(a25f6f755140d70b0392985839b1729640cf5d5d), "hack","Winner Takes All (Barcrest) (MPU4) (V1 0.1, hack)" )
/*****************************************************************************************************************************************************************************
*
@@ -1697,7 +1672,7 @@ GAME_CUSTOM( 199?, m4wta__6, m4wta, mod4oki_bootleg_fixedret<0x60>, mpu4, init_
ROM_LOAD( name, offset, length, hash ) \
M4PRZWTA_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PWN 0.4"
GAME_CUSTOM( 199?, m4przwta, 0, "pwns.p1", 0x0000, 0x020000, CRC(b3b87954) SHA1(f998ebf8047930f006213040ed5e6a9f90844143), "Barcrest","Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4)" )
@@ -1741,7 +1716,7 @@ GAME_CUSTOM( 199?, m4przwta__k, m4przwta, "pw8y.p1", 0x0000, 0x020000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4GOODTM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "GTR 2.0"
GAME_CUSTOM( 199?, m4goodtm, 0, "gtr20s.p1", 0x0000, 0x020000, CRC(91d2632d) SHA1(b8a7ef106a16e0526626cd69e82d07616d5c07d9), "Barcrest","Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0)" )
@@ -1783,7 +1758,7 @@ GAME_CUSTOM( 199?, m4goodtm__1, m4goodtm, "gtr11s", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4GOODTM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "GTA 0.1"
GAME_CUSTOM( 199?, m4goodtm__l, m4goodtm, "gta01s.p1", 0x0000, 0x020000, CRC(4340d9f6) SHA1(e9ccd419318bc3a3aba35a0104a98d1756b41731), "Barcrest","Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1)" )
@@ -1837,7 +1812,7 @@ GAME_CUSTOM( 199?, m4goodtm__n, m4goodtm, "gtk02k.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4GOODTM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
// no copyright string and "GTR 1.0"
@@ -1866,7 +1841,7 @@ GAME_CUSTOM( 199?, m4goodtm__3, m4goodtm, "gtr15t", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4JPGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// boots to hopper error, Q to run in 'Door Open' mode
@@ -1892,7 +1867,7 @@ GAME_CUSTOM( 199?, m4jpgem__bp, m4jpgem, "rrh01y.p1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4JPGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "CG4 0.7"
GAME_CUSTOM( 199?, m4jpgem, 0, "cg4s.p1", 0x0000, 0x010000, CRC(f25eba0b) SHA1(250189b7fb8aa82a8696c3a0099eb13ec74eeb10), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (CG4 0.7)" )
@@ -1954,7 +1929,7 @@ GAME_CUSTOM( 199?, m4jpgem__aa, m4jpgem, "jagy.p1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4JPGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rhm_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "JG3 0.1"
GAME_CUSTOM( 199?, m4jpgem__ai, m4jpgem, "jg3s.p1", 0x0000, 0x010000, CRC(91945adc) SHA1(d80321fc4c2e67461d69df2164e3e290caa905bc), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JG3 0.1)" )
@@ -1975,7 +1950,7 @@ GAME_CUSTOM( 199?, m4jpgem__aj, m4jpgem, "jg3y.p1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4JPGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "JGT 0.3"
GAME_CUSTOM( 199?, m4jpgem__a1, m4jpgem, "jgts.p1", 0x0000, 0x010000, CRC(0e3810a7) SHA1(cf840bd84eba65d9dec2d6821a48112b6f2f9bca), "Barcrest","Jackpot Gems (Barcrest) (MPU4) (JGT 0.3)" )
@@ -2021,7 +1996,7 @@ GAME_CUSTOM( 199?, m4jpgem__bd, m4jpgem, "jgu02y.p1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4JPGEMC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "CG4 0.1" (startup shows GTC)
GAME_CUSTOM( 199?, m4jpgemc, 0, "gtc01s.p1", 0x0000, 0x010000, CRC(af33337b) SHA1(97d28e224b73baa9d6d7b0c309385f57b6dd5d9b), "Barcrest","Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 / CG4 0.1)" )
@@ -2070,7 +2045,7 @@ GAME_CUSTOM( 199?, m4jpgemc__w, m4jpgemc, "hge01y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4JOLGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "GEM 0.7" // yes, the 'type' bytes are in a different order here, with D coming before the others
GAME_CUSTOM( 199?, m4jolgem, 0, "gem07s.p1", 0x0000, 0x020000, CRC(945ad0d2) SHA1(d636bc41a4f887d24affc0f5b644c5d5351cf0df), "Barcrest","Jolly Gems (Barcrest) (MPU4) (GEM 0.7)" )
@@ -2106,7 +2081,7 @@ GAME_CUSTOM( 199?, m4jolgem__al, m4jolgem, "gms05y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4JOLGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "GEM 0.5"
GAME_CUSTOM( 199?, m4jolgem__a, m4jolgem, "gem05s", 0x0000, 0x020000, CRC(b7ceafc2) SHA1(b66d846da5ff20df912d31695eaef146dbbe759e), "Barcrest","Jolly Gems (Barcrest) (MPU4) (GEM 0.5)" )
@@ -2146,7 +2121,7 @@ GAME_CUSTOM( 199?, m4jolgem__ao, m4jolgem, "jjem0", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4JOLGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1999 BWB" and "JGS 1.0"
GAME_CUSTOM( 199?, m4jolgem__ap, m4jolgem, "jgs_xa_x.1_0", 0x0000, 0x020000, CRC(7ac16252) SHA1(b01b2333e1e99f9404a7e0ac80e5e8ee834ec39d), "BWB","Jolly Gems (Barcrest) (MPU4) (JGS 1.0 CK)" )
@@ -2158,7 +2133,7 @@ GAME_CUSTOM( 199?, m4jolgem__ap, m4jolgem, "jgs_xa_x.1_0", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4JOLGEM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
// no copyright string and "GEM 0.6"
@@ -2188,7 +2163,7 @@ GAME_CUSTOM( 199?, m4jolgem__an, m4jolgem, "jgem15t", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4HITTOP_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "HT2 0.1"
GAME_CUSTOM( 199?, m4hittop__ac, m4hittop, "ht201s.p1", 0x0000, 0x010000, CRC(37b20464) SHA1(e87b0a2023416fa7b63201e19850319723eb6c10), "Barcrest","Hit The Top (Barcrest) (MPU4) (HT2 0.1)" )
@@ -2222,7 +2197,7 @@ GAME_CUSTOM( 199?, m4hittop__ao, m4hittop, "ht501y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4HITTOP_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hittopalt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hittopalt_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "HTT 0.5"
GAME_CUSTOM( 199?, m4hittop__aw, m4hittop, "htts.p1", 0x0000, 0x010000, CRC(6c794eb2) SHA1(347a7c74b1fd7631fbcd398bf5e7c36af088109e), "Barcrest","Hit The Top (Barcrest) (MPU4) (HTT 0.5)" )
@@ -2242,7 +2217,7 @@ GAME_CUSTOM( 199?, m4hittop__ax, m4hittop, "htty.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4HITTOP_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hittopalt2_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hittopalt2_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "HI4 0.3"
GAME_CUSTOM( 199?, m4hittop, 0, "hi4s.p1", 0x0000, 0x010000, CRC(3a04ee7a) SHA1(d23e9da2c22f6983a855bc519597ea9cea84f2dd), "Barcrest","Hit The Top (Barcrest) (MPU4) (HI4 0.3)" )
@@ -2274,7 +2249,7 @@ GAME_CUSTOM( 199?, m4hittop__j, m4hittop, "chuy.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4HITTOP_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// doesn't read from protection
@@ -2313,7 +2288,7 @@ GAME_CUSTOM( 199?, m4hittop__2, m4hittop, "hit04y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4NNWW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// the rom codes, and startup message differ in several of these, I've put the startup display code first (which seems to match the rom label) followed by the code stored in the ROM header
@@ -2374,7 +2349,7 @@ GAME_CUSTOM( 199?, m4nnww__ah, m4nnww, "nn4y.p1", 0x0000, 0x010000, CRC(a
ROM_LOAD( name, offset, length, hash ) \
M4NNWW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// most of the sets below were in marked 'classic' while the sets above weren't, but this version with samples appears to always be called 'Classic'
@@ -2434,7 +2409,7 @@ GAME_CUSTOM( 199?, m4nnww__ay, m4nnww, "ch301s", 0x0000, 0x010000, CRC(
ROM_LOAD( name, offset, length, hash ) \
M4NNWW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::nifty_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)2000 BWB" and "CNN 2.0"
GAME_CUSTOM( 199?, m4nnwwc__aa, m4nnww, "cl__x__x.2_0", 0x0000, 0x010000, CRC(c3de4791) SHA1(220d32b961b6710d508c0c7e6b2d8e4d292746f4), "BWB","Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0)" )
@@ -2465,89 +2440,89 @@ GAME_CUSTOM( 199?, m4nnwwc__ad, m4nnww, "cl__xb_x.2_0", 0x0000, 0x010000,
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "RUN 0.5"
-GAME_CUSTOM( 199?, m4rfym, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "runs.p1", 0x0000, 0x010000, CRC(e20f5a06) SHA1(f0f71f8870db7003fce96f1dfe09804cf17c3ab3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5)" )
-GAME_CUSTOM( 199?, m4rfym__ar, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "rund.p1", 0x0000, 0x010000, CRC(2be2a66d) SHA1(a66d74ccf1783912673cfcb6c1ae7fbb6d70ca0e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 D)" )
-GAME_CUSTOM( 199?, m4rfym__ao, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "runc.p1", 0x0000, 0x010000, CRC(09f53ddf) SHA1(f46be95bfacac751102a5f4d4a0917a5e51a653e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 C)" )
-GAME_CUSTOM( 199?, m4rfym__ap, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "rundy.p1", 0x0000, 0x010000, CRC(a6f69a24) SHA1(8370287dcc890fcb7529d3d4c7a3c2e2e688f6a8), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 YD)" )
-GAME_CUSTOM( 199?, m4rfym__aq, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "runk.p1", 0x0000, 0x010000, CRC(a2828b82) SHA1(0ae371a441df679fd9c699771ae9f58ce960d4a1), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 K)" )
-GAME_CUSTOM( 199?, m4rfym__as, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "runy.p1", 0x0000, 0x010000, CRC(0e311ab4) SHA1(c98540c07e9cc23ec70ecfbcb2f4d66f2c716fc3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 Y)" )
+GAME_CUSTOM( 199?, m4rfym, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "runs.p1", 0x0000, 0x010000, CRC(e20f5a06) SHA1(f0f71f8870db7003fce96f1dfe09804cf17c3ab3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5)" )
+GAME_CUSTOM( 199?, m4rfym__ar, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rund.p1", 0x0000, 0x010000, CRC(2be2a66d) SHA1(a66d74ccf1783912673cfcb6c1ae7fbb6d70ca0e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 D)" )
+GAME_CUSTOM( 199?, m4rfym__ao, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "runc.p1", 0x0000, 0x010000, CRC(09f53ddf) SHA1(f46be95bfacac751102a5f4d4a0917a5e51a653e), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 C)" )
+GAME_CUSTOM( 199?, m4rfym__ap, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rundy.p1", 0x0000, 0x010000, CRC(a6f69a24) SHA1(8370287dcc890fcb7529d3d4c7a3c2e2e688f6a8), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 YD)" )
+GAME_CUSTOM( 199?, m4rfym__aq, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "runk.p1", 0x0000, 0x010000, CRC(a2828b82) SHA1(0ae371a441df679fd9c699771ae9f58ce960d4a1), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 K)" )
+GAME_CUSTOM( 199?, m4rfym__as, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "runy.p1", 0x0000, 0x010000, CRC(0e311ab4) SHA1(c98540c07e9cc23ec70ecfbcb2f4d66f2c716fc3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUN 0.5 Y)" )
// "(C)1993 BARCREST" and "APR 0.1"
-GAME_CUSTOM( 199?, m4rfym__2, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprs.p1", 0x0000, 0x010000, CRC(a114a96a) SHA1(b0a9091cac86750329513a0927dd39b76995b2f2), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1)" )
-GAME_CUSTOM( 199?, m4rfym__u, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprad.p1", 0x0000, 0x010000, CRC(936f59ac) SHA1(325708d965d56a9a7482dbeaa089ca871d5c01b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 AD)" )
-GAME_CUSTOM( 199?, m4rfym__v, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprb.p1", 0x0000, 0x010000, CRC(72ad662a) SHA1(11f1695e05ecf34a58f8df3ffbc72ab2dd7d02c9), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 B)" )
-GAME_CUSTOM( 199?, m4rfym__w, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprbd.p1", 0x0000, 0x010000, CRC(13af990d) SHA1(604d2173e3d6d25252b30b5bf386b53470c35581), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 BD)" )
-GAME_CUSTOM( 199?, m4rfym__x, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprc.p1", 0x0000, 0x010000, CRC(fd3ece9a) SHA1(e11d1d258a415865f7477cdfddcd47e9bdb1c9b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 C)" )
-GAME_CUSTOM( 199?, m4rfym__y, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprd.p1", 0x0000, 0x010000, CRC(8c19b732) SHA1(e7aeea41cf649fe2a28414ddedacdf72f56d32fe), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 D)" )
-GAME_CUSTOM( 199?, m4rfym__z, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprdk.p1", 0x0000, 0x010000, CRC(58a41fcd) SHA1(e8c92dfb5c9662c90d363b5b7a7e0a4b4894d4cb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 KD)" )
-GAME_CUSTOM( 199?, m4rfym__0, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprdy.p1", 0x0000, 0x010000, CRC(9496cfad) SHA1(cb24779db99d283f1df86864886f21ad333cb98b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 YD)" )
-GAME_CUSTOM( 199?, m4rfym__1, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "aprk.p1", 0x0000, 0x010000, CRC(7277ef07) SHA1(dc509d125f8d377d4b2cb011d32be5bdba1daa17), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 K)" )
-GAME_CUSTOM( 199?, m4rfym__3, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "apry.p1", 0x0000, 0x010000, CRC(bf2120bc) SHA1(473374a9510dd53e39b94bfcf1369e13647239e6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 Y)" )
+GAME_CUSTOM( 199?, m4rfym__2, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprs.p1", 0x0000, 0x010000, CRC(a114a96a) SHA1(b0a9091cac86750329513a0927dd39b76995b2f2), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1)" )
+GAME_CUSTOM( 199?, m4rfym__u, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprad.p1", 0x0000, 0x010000, CRC(936f59ac) SHA1(325708d965d56a9a7482dbeaa089ca871d5c01b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 AD)" )
+GAME_CUSTOM( 199?, m4rfym__v, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprb.p1", 0x0000, 0x010000, CRC(72ad662a) SHA1(11f1695e05ecf34a58f8df3ffbc72ab2dd7d02c9), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 B)" )
+GAME_CUSTOM( 199?, m4rfym__w, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprbd.p1", 0x0000, 0x010000, CRC(13af990d) SHA1(604d2173e3d6d25252b30b5bf386b53470c35581), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 BD)" )
+GAME_CUSTOM( 199?, m4rfym__x, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprc.p1", 0x0000, 0x010000, CRC(fd3ece9a) SHA1(e11d1d258a415865f7477cdfddcd47e9bdb1c9b5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 C)" )
+GAME_CUSTOM( 199?, m4rfym__y, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprd.p1", 0x0000, 0x010000, CRC(8c19b732) SHA1(e7aeea41cf649fe2a28414ddedacdf72f56d32fe), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 D)" )
+GAME_CUSTOM( 199?, m4rfym__z, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprdk.p1", 0x0000, 0x010000, CRC(58a41fcd) SHA1(e8c92dfb5c9662c90d363b5b7a7e0a4b4894d4cb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 KD)" )
+GAME_CUSTOM( 199?, m4rfym__0, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprdy.p1", 0x0000, 0x010000, CRC(9496cfad) SHA1(cb24779db99d283f1df86864886f21ad333cb98b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 YD)" )
+GAME_CUSTOM( 199?, m4rfym__1, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "aprk.p1", 0x0000, 0x010000, CRC(7277ef07) SHA1(dc509d125f8d377d4b2cb011d32be5bdba1daa17), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 K)" )
+GAME_CUSTOM( 199?, m4rfym__3, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "apry.p1", 0x0000, 0x010000, CRC(bf2120bc) SHA1(473374a9510dd53e39b94bfcf1369e13647239e6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (APR 0.1 Y)" )
// "(C)1993 BARCREST" and "RU8 0.1"
-GAME_CUSTOM( 199?, m4rfym__am, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "ru8s.p1", 0x0000, 0x010000, CRC(d6ce5891) SHA1(c130e7bf614c67767c9af6f38e3cd41ce63d11ef), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1)" )
-GAME_CUSTOM( 199?, m4rfym__ah, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "ru8c.p1", 0x0000, 0x010000, CRC(93290724) SHA1(37b17b08f77b308289d4392900576dc66a0377eb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 C)" )
-GAME_CUSTOM( 199?, m4rfym__ai, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "ru8d.p1", 0x0000, 0x010000, CRC(3e7d6ebb) SHA1(a836a52aef9fe4a9021835e99109b7fefb4ead76), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 D)" )
-GAME_CUSTOM( 199?, m4rfym__aj, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "ru8dk.p1", 0x0000, 0x010000, CRC(b2983dc1) SHA1(412bf4a643c807371fa465fb5f9a85bc3e46623d), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 KD)" )
-GAME_CUSTOM( 199?, m4rfym__ak, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "ru8dy.p1", 0x0000, 0x010000, CRC(7d06cdcc) SHA1(d68f6ee59eb7689df30412288db4e9ee6c4bf178), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 YD)" )
-GAME_CUSTOM( 199?, m4rfym__al, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "ru8k.p1", 0x0000, 0x010000, CRC(42f6226e) SHA1(c4bac8efd9c17f96dd9d973e9f64c85ceeacb36b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 K)" )
-GAME_CUSTOM( 199?, m4rfym__an, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, init_m4default_lextender, "ru8y.p1", 0x0000, 0x010000, CRC(f1fc1e75) SHA1(f6f1008349505ee0c494fcdde27db2a15147b6cb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 Y)" )
+GAME_CUSTOM( 199?, m4rfym__am, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru8s.p1", 0x0000, 0x010000, CRC(d6ce5891) SHA1(c130e7bf614c67767c9af6f38e3cd41ce63d11ef), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1)" )
+GAME_CUSTOM( 199?, m4rfym__ah, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru8c.p1", 0x0000, 0x010000, CRC(93290724) SHA1(37b17b08f77b308289d4392900576dc66a0377eb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 C)" )
+GAME_CUSTOM( 199?, m4rfym__ai, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru8d.p1", 0x0000, 0x010000, CRC(3e7d6ebb) SHA1(a836a52aef9fe4a9021835e99109b7fefb4ead76), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 D)" )
+GAME_CUSTOM( 199?, m4rfym__aj, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru8dk.p1", 0x0000, 0x010000, CRC(b2983dc1) SHA1(412bf4a643c807371fa465fb5f9a85bc3e46623d), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 KD)" )
+GAME_CUSTOM( 199?, m4rfym__ak, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru8dy.p1", 0x0000, 0x010000, CRC(7d06cdcc) SHA1(d68f6ee59eb7689df30412288db4e9ee6c4bf178), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 YD)" )
+GAME_CUSTOM( 199?, m4rfym__al, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru8k.p1", 0x0000, 0x010000, CRC(42f6226e) SHA1(c4bac8efd9c17f96dd9d973e9f64c85ceeacb36b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 K)" )
+GAME_CUSTOM( 199?, m4rfym__an, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru8y.p1", 0x0000, 0x010000, CRC(f1fc1e75) SHA1(f6f1008349505ee0c494fcdde27db2a15147b6cb), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU8 0.1 Y)" )
// "(C)1993 BARCREST" and "AP1 0.1"
-GAME_CUSTOM( 199?, m4rfym__h, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1s.p1", 0x0000, 0x010000, CRC(7474509c) SHA1(c87e20f10806ec87fd33f97b43b8378d304f7d67), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1)" )
-GAME_CUSTOM( 199?, m4rfym__a, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1ad.p1", 0x0000, 0x010000, CRC(d1adbf80) SHA1(08801f38b8ba5034fd83b53b6cfff864104525b4), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 AD)" )
-GAME_CUSTOM( 199?, m4rfym__b, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1b.p1", 0x0000, 0x010000, CRC(4939f186) SHA1(389d46d603e75d3aaeeca990f4e1143c61f1565f), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 B)" )
-GAME_CUSTOM( 199?, m4rfym__c, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1bd.p1", 0x0000, 0x010000, CRC(08a33b2c) SHA1(ef38e9cd0c9bc8393530e36060c803d1250c46a6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 BD)" )
-GAME_CUSTOM( 199?, m4rfym__d, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1d.p1", 0x0000, 0x010000, CRC(edef44fe) SHA1(4907804c1bebc1f13aa3eb9dad0e9189de8e9601), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 D)" )
-GAME_CUSTOM( 199?, m4rfym__e, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1dk.p1", 0x0000, 0x010000, CRC(873a402c) SHA1(1315a4ad18544ca5d65526ea0f620cac528e4cad), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 KD)" )
-GAME_CUSTOM( 199?, m4rfym__f, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1dy.p1", 0x0000, 0x010000, CRC(e8436c00) SHA1(1c2f171e55c3519d63d6c4dd0d56df4e1daad6af), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 YD)" )
-GAME_CUSTOM( 199?, m4rfym__g, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1k.p1", 0x0000, 0x010000, CRC(9afeb1e7) SHA1(5fc5d73a2c976d227a0598fb1dd802c6336415d1), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 K)" )
-GAME_CUSTOM( 199?, m4rfym__i, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap1y.p1", 0x0000, 0x010000, CRC(152bf7cb) SHA1(8dd8b621f9dac430c293b29ca03814fc21a148b9), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 Y)" )
+GAME_CUSTOM( 199?, m4rfym__h, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1s.p1", 0x0000, 0x010000, CRC(7474509c) SHA1(c87e20f10806ec87fd33f97b43b8378d304f7d67), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1)" )
+GAME_CUSTOM( 199?, m4rfym__a, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1ad.p1", 0x0000, 0x010000, CRC(d1adbf80) SHA1(08801f38b8ba5034fd83b53b6cfff864104525b4), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 AD)" )
+GAME_CUSTOM( 199?, m4rfym__b, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1b.p1", 0x0000, 0x010000, CRC(4939f186) SHA1(389d46d603e75d3aaeeca990f4e1143c61f1565f), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 B)" )
+GAME_CUSTOM( 199?, m4rfym__c, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1bd.p1", 0x0000, 0x010000, CRC(08a33b2c) SHA1(ef38e9cd0c9bc8393530e36060c803d1250c46a6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 BD)" )
+GAME_CUSTOM( 199?, m4rfym__d, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1d.p1", 0x0000, 0x010000, CRC(edef44fe) SHA1(4907804c1bebc1f13aa3eb9dad0e9189de8e9601), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 D)" )
+GAME_CUSTOM( 199?, m4rfym__e, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1dk.p1", 0x0000, 0x010000, CRC(873a402c) SHA1(1315a4ad18544ca5d65526ea0f620cac528e4cad), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 KD)" )
+GAME_CUSTOM( 199?, m4rfym__f, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1dy.p1", 0x0000, 0x010000, CRC(e8436c00) SHA1(1c2f171e55c3519d63d6c4dd0d56df4e1daad6af), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 YD)" )
+GAME_CUSTOM( 199?, m4rfym__g, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1k.p1", 0x0000, 0x010000, CRC(9afeb1e7) SHA1(5fc5d73a2c976d227a0598fb1dd802c6336415d1), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 K)" )
+GAME_CUSTOM( 199?, m4rfym__i, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap1y.p1", 0x0000, 0x010000, CRC(152bf7cb) SHA1(8dd8b621f9dac430c293b29ca03814fc21a148b9), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP1 0.1 Y)" )
// "(C)1993 BARCREST" and "AP5 0.2"
-GAME_CUSTOM( 199?, m4rfym__s, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502s.p1", 0x0000, 0x010000, CRC(8502a09a) SHA1(e635552b7f0c7b2e142d7f4d0f1fd93edac6132d), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2)" )
-GAME_CUSTOM( 199?, m4rfym__j, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502ad.p1", 0x0000, 0x010000, CRC(ab059e57) SHA1(45ba91989b0fd1a44628f696b78eae2a349e3e4a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 AD)" )
-GAME_CUSTOM( 199?, m4rfym__k, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502b.p1", 0x0000, 0x010000, CRC(9ed27a6e) SHA1(2d655305a178e4ebe43f3d429dfec5a2ef6b9873), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 B)" )
-GAME_CUSTOM( 199?, m4rfym__l, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502bd.p1", 0x0000, 0x010000, CRC(48e83fcd) SHA1(3e2de0416722df5004f00baae2d3f6846ff596e5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 BD)" )
-GAME_CUSTOM( 199?, m4rfym__m, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502d.p1", 0x0000, 0x010000, CRC(d0560301) SHA1(c35e97391c588f6567eeb253eb9de59bec9e1724), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 D)" )
-GAME_CUSTOM( 199?, m4rfym__n, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502dk.p1", 0x0000, 0x010000, CRC(82aa8d80) SHA1(e42d10537dcc5aaae59472681b215b0eb0821c25), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 KD)" )
-GAME_CUSTOM( 199?, m4rfym__o, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502dr.p1", 0x0000, 0x010000, CRC(1cfb3102) SHA1(b1d3a533de0ff93e15f7c039e75af0ef6c8eec57), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 RD)" )
-GAME_CUSTOM( 199?, m4rfym__p, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502dy.p1", 0x0000, 0x010000, CRC(819019ec) SHA1(36d2093a7a592850533d4206e0c9dd28cdc17568), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 YD)" )
-GAME_CUSTOM( 199?, m4rfym__q, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502k.p1", 0x0000, 0x010000, CRC(5064a894) SHA1(3e67358fe5ed9bfac05f621d7e72e5be7aae67df), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 K)" )
-GAME_CUSTOM( 199?, m4rfym__r, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502r.p1", 0x0000, 0x010000, CRC(2503c7da) SHA1(2478bab8b19ab68ff01be8fae2e86e47894b3d7c), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 R)" )
-GAME_CUSTOM( 199?, m4rfym__t, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ap502y.p1", 0x0000, 0x010000, CRC(b868ef34) SHA1(a773503afd2f59b71e0b9a7e202d3e7120ec88ff), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 Y)" )
+GAME_CUSTOM( 199?, m4rfym__s, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502s.p1", 0x0000, 0x010000, CRC(8502a09a) SHA1(e635552b7f0c7b2e142d7f4d0f1fd93edac6132d), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2)" )
+GAME_CUSTOM( 199?, m4rfym__j, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502ad.p1", 0x0000, 0x010000, CRC(ab059e57) SHA1(45ba91989b0fd1a44628f696b78eae2a349e3e4a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 AD)" )
+GAME_CUSTOM( 199?, m4rfym__k, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502b.p1", 0x0000, 0x010000, CRC(9ed27a6e) SHA1(2d655305a178e4ebe43f3d429dfec5a2ef6b9873), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 B)" )
+GAME_CUSTOM( 199?, m4rfym__l, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502bd.p1", 0x0000, 0x010000, CRC(48e83fcd) SHA1(3e2de0416722df5004f00baae2d3f6846ff596e5), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 BD)" )
+GAME_CUSTOM( 199?, m4rfym__m, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502d.p1", 0x0000, 0x010000, CRC(d0560301) SHA1(c35e97391c588f6567eeb253eb9de59bec9e1724), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 D)" )
+GAME_CUSTOM( 199?, m4rfym__n, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502dk.p1", 0x0000, 0x010000, CRC(82aa8d80) SHA1(e42d10537dcc5aaae59472681b215b0eb0821c25), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 KD)" )
+GAME_CUSTOM( 199?, m4rfym__o, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502dr.p1", 0x0000, 0x010000, CRC(1cfb3102) SHA1(b1d3a533de0ff93e15f7c039e75af0ef6c8eec57), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 RD)" )
+GAME_CUSTOM( 199?, m4rfym__p, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502dy.p1", 0x0000, 0x010000, CRC(819019ec) SHA1(36d2093a7a592850533d4206e0c9dd28cdc17568), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 YD)" )
+GAME_CUSTOM( 199?, m4rfym__q, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502k.p1", 0x0000, 0x010000, CRC(5064a894) SHA1(3e67358fe5ed9bfac05f621d7e72e5be7aae67df), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 K)" )
+GAME_CUSTOM( 199?, m4rfym__r, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502r.p1", 0x0000, 0x010000, CRC(2503c7da) SHA1(2478bab8b19ab68ff01be8fae2e86e47894b3d7c), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 R)" )
+GAME_CUSTOM( 199?, m4rfym__t, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ap502y.p1", 0x0000, 0x010000, CRC(b868ef34) SHA1(a773503afd2f59b71e0b9a7e202d3e7120ec88ff), "Barcrest","Run For Your Money (Barcrest) (MPU4) (AP5 0.2 Y)" )
// "(C)1993 BARCREST" and "RU5 0.1"
-GAME_CUSTOM( 199?, m4rfym__af, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5s.p1", 0x0000, 0x010000, CRC(41795ea3) SHA1(6bfb6da6c0f7e762d628ce8a9dcdcbc3c0326ca6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1)" )
-GAME_CUSTOM( 199?, m4rfym__8, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5ad.p1", 0x0000, 0x010000, CRC(1c3e1f39) SHA1(a45cdaaa875e52cf5cd5adf986c98f4a22a14785), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 AD)" )
-GAME_CUSTOM( 199?, m4rfym__9, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5b.p1", 0x0000, 0x010000, CRC(41e44d37) SHA1(8eb409b96864fb0f7c3bf5c66a20a63c8cbc68af), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 B)" )
-GAME_CUSTOM( 199?, m4rfym__aa, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5bd.p1", 0x0000, 0x010000, CRC(8d4db415) SHA1(b023a13f89b7e5c2f72fd213179f723621871faf), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 BD)" )
-GAME_CUSTOM( 199?, m4rfym__ab, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5d.p1", 0x0000, 0x010000, CRC(fcb70a63) SHA1(df81c3c26c066c1326b20b9e0dda2863ee9635a6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 D)" )
-GAME_CUSTOM( 199?, m4rfym__ac, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5dk.p1", 0x0000, 0x010000, CRC(b4d83863) SHA1(02aebf94773d0a9454119b4ad663b6d8475fc8d3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 KD)" )
-GAME_CUSTOM( 199?, m4rfym__ad, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5dy.p1", 0x0000, 0x010000, CRC(66375af5) SHA1(0a6d10357c163e5e27e7436f8190070e36e3ef90), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 YD)" )
-GAME_CUSTOM( 199?, m4rfym__ae, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5k.p1", 0x0000, 0x010000, CRC(7871c141) SHA1(e1e9d2972c87d2835b1e5a62502160cb4abb7736), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 K)" )
-GAME_CUSTOM( 199?, m4rfym__ag, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ru5y.p1", 0x0000, 0x010000, CRC(ee217541) SHA1(68474c2e430d95ded2856183b9a02be917d092d6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 Y)" )
+GAME_CUSTOM( 199?, m4rfym__af, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5s.p1", 0x0000, 0x010000, CRC(41795ea3) SHA1(6bfb6da6c0f7e762d628ce8a9dcdcbc3c0326ca6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1)" )
+GAME_CUSTOM( 199?, m4rfym__8, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5ad.p1", 0x0000, 0x010000, CRC(1c3e1f39) SHA1(a45cdaaa875e52cf5cd5adf986c98f4a22a14785), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 AD)" )
+GAME_CUSTOM( 199?, m4rfym__9, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5b.p1", 0x0000, 0x010000, CRC(41e44d37) SHA1(8eb409b96864fb0f7c3bf5c66a20a63c8cbc68af), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 B)" )
+GAME_CUSTOM( 199?, m4rfym__aa, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5bd.p1", 0x0000, 0x010000, CRC(8d4db415) SHA1(b023a13f89b7e5c2f72fd213179f723621871faf), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 BD)" )
+GAME_CUSTOM( 199?, m4rfym__ab, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5d.p1", 0x0000, 0x010000, CRC(fcb70a63) SHA1(df81c3c26c066c1326b20b9e0dda2863ee9635a6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 D)" )
+GAME_CUSTOM( 199?, m4rfym__ac, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5dk.p1", 0x0000, 0x010000, CRC(b4d83863) SHA1(02aebf94773d0a9454119b4ad663b6d8475fc8d3), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 KD)" )
+GAME_CUSTOM( 199?, m4rfym__ad, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5dy.p1", 0x0000, 0x010000, CRC(66375af5) SHA1(0a6d10357c163e5e27e7436f8190070e36e3ef90), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 YD)" )
+GAME_CUSTOM( 199?, m4rfym__ae, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5k.p1", 0x0000, 0x010000, CRC(7871c141) SHA1(e1e9d2972c87d2835b1e5a62502160cb4abb7736), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 K)" )
+GAME_CUSTOM( 199?, m4rfym__ag, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ru5y.p1", 0x0000, 0x010000, CRC(ee217541) SHA1(68474c2e430d95ded2856183b9a02be917d092d6), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RU5 0.1 Y)" )
// "(C)1993 BARCREST" and "RUT 0.1"
-GAME_CUSTOM( 199?, m4rfym__a0, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ruts.p1", 0x0000, 0x010000, CRC(efaf4e03) SHA1(da19d6e28a6727eb9afb69c23fd5685f0dbcc31a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1)" )
-GAME_CUSTOM( 199?, m4rfym__at, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "rutad.p1", 0x0000, 0x010000, CRC(f27090c9) SHA1(28b7bb8046f67a3f8b90069de845b0b791b57078), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 AD)" )
-GAME_CUSTOM( 199?, m4rfym__au, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "rutb.p1", 0x0000, 0x010000, CRC(cb7a74bf) SHA1(24274c7e3b40642d698f5c3a9a10cfeb23faaf1b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 B)" )
-GAME_CUSTOM( 199?, m4rfym__av, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "rutbd.p1", 0x0000, 0x010000, CRC(19aba8f2) SHA1(cb726130837149c25adb5d87718b72259cb63a63), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 BD)" )
-GAME_CUSTOM( 199?, m4rfym__aw, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "rutd.p1", 0x0000, 0x010000, CRC(16a872bd) SHA1(47ad5eb9b473805e2eb86e0d4d9ef4b2e6e3c926), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 D)" )
-GAME_CUSTOM( 199?, m4rfym__ax, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "rutdk.p1", 0x0000, 0x010000, CRC(a8259673) SHA1(443081395ea0c1b0a07e6cd4b17670b3e01bb50f), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 KD)" )
-GAME_CUSTOM( 199?, m4rfym__ay, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "rutdy.p1", 0x0000, 0x010000, CRC(6b799f68) SHA1(87482236f1116983e80a7f190710524d3809cd3a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 YD)" )
-GAME_CUSTOM( 199?, m4rfym__az, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "rutk.p1", 0x0000, 0x010000, CRC(20962e5e) SHA1(0be43050d403750b67c796a007b503e132014f4c), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 K)" )
-GAME_CUSTOM( 199?, m4rfym__a1, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, init_m4default_lextender, "ruty.p1", 0x0000, 0x010000, CRC(abb708c5) SHA1(6fe3b52a0ba484576fc83ed35aefeda01d275aec), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 Y)" )
+GAME_CUSTOM( 199?, m4rfym__a0, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ruts.p1", 0x0000, 0x010000, CRC(efaf4e03) SHA1(da19d6e28a6727eb9afb69c23fd5685f0dbcc31a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1)" )
+GAME_CUSTOM( 199?, m4rfym__at, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rutad.p1", 0x0000, 0x010000, CRC(f27090c9) SHA1(28b7bb8046f67a3f8b90069de845b0b791b57078), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 AD)" )
+GAME_CUSTOM( 199?, m4rfym__au, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rutb.p1", 0x0000, 0x010000, CRC(cb7a74bf) SHA1(24274c7e3b40642d698f5c3a9a10cfeb23faaf1b), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 B)" )
+GAME_CUSTOM( 199?, m4rfym__av, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rutbd.p1", 0x0000, 0x010000, CRC(19aba8f2) SHA1(cb726130837149c25adb5d87718b72259cb63a63), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 BD)" )
+GAME_CUSTOM( 199?, m4rfym__aw, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rutd.p1", 0x0000, 0x010000, CRC(16a872bd) SHA1(47ad5eb9b473805e2eb86e0d4d9ef4b2e6e3c926), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 D)" )
+GAME_CUSTOM( 199?, m4rfym__ax, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rutdk.p1", 0x0000, 0x010000, CRC(a8259673) SHA1(443081395ea0c1b0a07e6cd4b17670b3e01bb50f), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 KD)" )
+GAME_CUSTOM( 199?, m4rfym__ay, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rutdy.p1", 0x0000, 0x010000, CRC(6b799f68) SHA1(87482236f1116983e80a7f190710524d3809cd3a), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 YD)" )
+GAME_CUSTOM( 199?, m4rfym__az, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rutk.p1", 0x0000, 0x010000, CRC(20962e5e) SHA1(0be43050d403750b67c796a007b503e132014f4c), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 K)" )
+GAME_CUSTOM( 199?, m4rfym__a1, m4rfym, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "ruty.p1", 0x0000, 0x010000, CRC(abb708c5) SHA1(6fe3b52a0ba484576fc83ed35aefeda01d275aec), "Barcrest","Run For Your Money (Barcrest) (MPU4) (RUT 0.1 Y)" )
// bootlegs
// "(C)1996 B.W.B." and "RU4 1.1" (but hack?)
-GAME_CUSTOM( 199?, m4rfym__a4, m4rfym, mod4oki_bootleg_fixedret<0x2c>, mpu4, init_m4default_lextender, "rfym5.4", 0x0000, 0x010000, CRC(fe613006) SHA1(898b90893bfcb121575952c22c16570a27948bce), "hack","Run For Your Money (Barcrest) (MPU4) (RU4 1.1 K5, hack, set 1)" )
+GAME_CUSTOM( 199?, m4rfym__a4, m4rfym, mod4oki_bootleg_fixedret<0x2c>(R4, RT1, LPLB), mpu4, init_m4, "rfym5.4", 0x0000, 0x010000, CRC(fe613006) SHA1(898b90893bfcb121575952c22c16570a27948bce), "hack","Run For Your Money (Barcrest) (MPU4) (RU4 1.1 K5, hack, set 1)" )
// "1997 COCO" and "RU4 1.1" (hack)
-GAME_CUSTOM( 199?, m4rfym__7, m4rfym, mod4oki_bootleg_fixedret<0x28>, mpu4, init_m4default_lextender, "rfym55", 0x0000, 0x010000, CRC(b7d638d8) SHA1(6064ceffd94ff149d8bcb117fd823de52030ac64), "hack","Run For Your Money (Barcrest) (MPU4) (RU4 1.1 K5, hack, set 2)" )
+GAME_CUSTOM( 199?, m4rfym__7, m4rfym, mod4oki_bootleg_fixedret<0x28>(R4, RT1, LPLB), mpu4, init_m4, "rfym55", 0x0000, 0x010000, CRC(b7d638d8) SHA1(6064ceffd94ff149d8bcb117fd823de52030ac64), "hack","Run For Your Money (Barcrest) (MPU4) (RU4 1.1 K5, hack, set 2)" )
// different protection
// "(C)1996 B.W.B." and "RU8 1.2" (but hack?)
-GAME_CUSTOM( 199?, m4rfym__a5, m4rfym, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_lextender, "rfym5.8t", 0x0000, 0x010000, CRC(c600718a) SHA1(168fa558f1b5b91fb805d483f3f4351ac80f90ff), "hack","Run For Your Money (Barcrest) (MPU4) (RU8 1.2 K5, hack)" )
+GAME_CUSTOM( 199?, m4rfym__a5, m4rfym, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPLB), mpu4, init_m4, "rfym5.8t", 0x0000, 0x010000, CRC(c600718a) SHA1(168fa558f1b5b91fb805d483f3f4351ac80f90ff), "hack","Run For Your Money (Barcrest) (MPU4) (RU8 1.2 K5, hack)" )
// "(C)1996 B.W.B." and "RUC 1.3" (but hack?)
-GAME_CUSTOM( 199?, m4rfym__6, m4rfym, mod4oki_bootleg_fixedret<0x1c>, mpu4, init_m4default_lextender, "rfym510l", 0x0000, 0x010000, CRC(24af47f3) SHA1(3d1ec9b013f3f7b497cfb62b42fbb2fa914b24b6), "hack","Run For Your Money (Barcrest) (MPU4) (RUC 1.3 K5, hack, set 1)" )
-GAME_CUSTOM( 199?, m4rfym__a3, m4rfym, mod4oki_bootleg_fixedret<0x1c>, mpu4, init_m4default_lextender, "rfym5.10", 0x0000, 0x010000, CRC(c2ce2cc2) SHA1(d5633e01f669ee8772ed77befa90180c6aa0111c), "hack","Run For Your Money (Barcrest) (MPU4) (RUC 1.3 K5, hack, set 2)" )
+GAME_CUSTOM( 199?, m4rfym__6, m4rfym, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, LPLB), mpu4, init_m4, "rfym510l", 0x0000, 0x010000, CRC(24af47f3) SHA1(3d1ec9b013f3f7b497cfb62b42fbb2fa914b24b6), "hack","Run For Your Money (Barcrest) (MPU4) (RUC 1.3 K5, hack, set 1)" )
+GAME_CUSTOM( 199?, m4rfym__a3, m4rfym, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, LPLB), mpu4, init_m4, "rfym5.10", 0x0000, 0x010000, CRC(c2ce2cc2) SHA1(d5633e01f669ee8772ed77befa90180c6aa0111c), "hack","Run For Your Money (Barcrest) (MPU4) (RUC 1.3 K5, hack, set 2)" )
// "BILL AND BEN" and "V1 8 0.1" (hack)
-GAME_CUSTOM( 199?, m4rfym__4, m4rfym, mod4oki_bootleg_fixedret<0x1e>, mpu4, init_m4default_lextender, "rfym20", 0x0000, 0x010000, CRC(5e1d70e2) SHA1(2da1b8033a77d367c4b5c3d83a0e5def4e5e5d78), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 1)" )
-GAME_CUSTOM( 199?, m4rfym__5, m4rfym, mod4oki_bootleg_fixedret<0x60>, mpu4, init_m4default_lextender, "rfym2010", 0x0000, 0x010000, CRC(ec440e7e) SHA1(21f8d4708b5d779dcefcc1e921a5efe17dd6f8c7), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 2)" )
-GAME_CUSTOM( 199?, m4rfym__a2, m4rfym, mod4oki_bootleg_fixedret<0x1e>, mpu4, init_m4default_lextender, "rfym20.10", 0x0000, 0x010000, CRC(947d00d2) SHA1(2c99da689541de247e35ac39eadfe070ac3196b5), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 3)" )
+GAME_CUSTOM( 199?, m4rfym__4, m4rfym, mod4oki_bootleg_fixedret<0x1e>(R4, RT1, LPLB), mpu4, init_m4, "rfym20", 0x0000, 0x010000, CRC(5e1d70e2) SHA1(2da1b8033a77d367c4b5c3d83a0e5def4e5e5d78), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 1)" )
+GAME_CUSTOM( 199?, m4rfym__5, m4rfym, mod4oki_bootleg_fixedret<0x60>(R4, RT1, LPLB), mpu4, init_m4, "rfym2010", 0x0000, 0x010000, CRC(ec440e7e) SHA1(21f8d4708b5d779dcefcc1e921a5efe17dd6f8c7), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 2)" )
+GAME_CUSTOM( 199?, m4rfym__a2, m4rfym, mod4oki_bootleg_fixedret<0x1e>(R4, RT1, LPLB), mpu4, init_m4, "rfym20.10", 0x0000, 0x010000, CRC(947d00d2) SHA1(2c99da689541de247e35ac39eadfe070ac3196b5), "hack","Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 3)" )
/*****************************************************************************************************************************************************************************
@@ -2567,7 +2542,7 @@ GAME_CUSTOM( 199?, m4rfym__a2, m4rfym, mod4oki_bootleg_fixedret<0x1e>, mpu4, i
ROM_LOAD( name, offset, length, hash ) \
M4PRZRFM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PRU 0.2"
GAME_CUSTOM( 199?, m4przrfm, 0, "prus.p1", 0x0000, 0x010000, CRC(d6c22253) SHA1(f9a25dd1c6f16849a6eb1febdc2da16080cc6838), "Barcrest","Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2)" )
@@ -2608,7 +2583,7 @@ GAME_CUSTOM( 199?, m4przrfm__o, m4przrfm, "rm8y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4READY_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// all boot with tri98, hopper alarm, press Q to run open door
@@ -2715,7 +2690,7 @@ GAME_CUSTOM( 199?, m4ready__a1, m4ready, "rgt10dy.p1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4MAG7S_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::mag7s_characteriser_prot>, mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::mag7s_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "MAS 1.2"
GAME_CUSTOM( 199?, m4mag7s, 0, "mas12s.p1", 0x0000, 0x020000, CRC(0a94e574) SHA1(e4516638fb7f783e79cfcdbbef1188965351eae2), "Barcrest","Magnificent 7s (Barcrest) (MPU4) (MAS 1.2)" )
@@ -2756,7 +2731,7 @@ GAME_CUSTOM( 199?, m4mag7s__n, m4mag7s, "ma715y.p1", 0x0000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4MAG7S_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "MA7 1.6"
GAME_CUSTOM( 199?, m4mag7s__z, m4mag7s, "ma716s.p1", 0x0000, 0x020000, CRC(30fd2e9f) SHA1(9ed06ee736a09b36f48fb3b69be03b39861b0ea5), "Barcrest","Magnificent 7s (Barcrest) (MPU4) (MA7 1.6)" )
@@ -2795,7 +2770,7 @@ GAME_CUSTOM( 199?, m4mag7s__au, m4mag7s, "mas13y.p1", 0x0000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4MAG7S_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pfloot_characteriser_prot>, mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pfloot_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1998 B.W.B." and "M7 2.0"
GAME_CUSTOM( 199?, m4mag7s__aw, m4mag7s, "m7_sj_dc.2r1", 0x0000, 0x020000, CRC(0eefd40c) SHA1(2c30bc42d23c7cfb0a382b47f7ed865865341e2f), "BWB","Magnificent 7s (Barcrest) (MPU4) (M7 2.0 CD)" )
@@ -2809,7 +2784,7 @@ GAME_CUSTOM( 199?, m4mag7s__ax, m4mag7s, "m7_sja_c.2r1", 0x0000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4MAG7S_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -2825,7 +2800,7 @@ GAME_CUSTOM( 199?, m4mag7s__2, m4mag7s, "mag715t", 0x0000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4MAG7S_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1, LPLB), mpu4jackpot8per, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// probably bad
@@ -2855,7 +2830,7 @@ GAME_CUSTOM( 199?, m4mag7s__av, m4mag7s, "mas10w.p1", 0x0000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4MAKMNT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "MAM 0.4"
GAME_CUSTOM( 199?, m4makmnt__k, m4makmnt, "mam04s.p1", 0x0000, 0x020000, CRC(08eac690) SHA1(e35793da266bd9dd8a018ba9773f368e36ce501d), "Barcrest","Make A Mint (Barcrest) (MPU4) (MAM 0.4)" )
@@ -2891,7 +2866,7 @@ GAME_CUSTOM( 199?, m4makmnt__am, m4makmnt, "mmg05y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4MAKMNT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "MAM 0.3"
GAME_CUSTOM( 199?, m4makmnt, 0, "mams.p1", 0x0000, 0x020000, CRC(af08e1e6) SHA1(c7e87d351f67592084d758ee53ba4d354bb28866), "Barcrest","Make A Mint (Barcrest) (MPU4) (MAM 0.3)" )
@@ -2930,7 +2905,7 @@ GAME_CUSTOM( 199?, m4makmnt__y, m4makmnt, "mint2010", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4MAKMNT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::mintalt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::mintalt_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1997 B.W.B." and "MA_ 3.1"
GAME_CUSTOM( 199?, m4makmnt__an, m4makmnt, "ma_x6__5.3_1", 0x0000, 0x010000, CRC(2fe3c309) SHA1(5dba65b29ea5492a78866863629d89f9a8588959), "BWB","Make A Mint (Barcrest) (MPU4) (MA_ 3.1)" )
@@ -2949,7 +2924,7 @@ GAME_CUSTOM( 199?, m4makmnt__as, m4makmnt, "ma_x6a_c.3_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4MAKMNT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -2982,83 +2957,83 @@ GAME_CUSTOM( 199?, m4makmnt__n, m4makmnt, "mam15t", 0x0000, 0x020000,
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "EP8 0.1"
-GAME_CUSTOM( 199?, m4vivaes, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8s.p1", 0x0000, 0x010000, CRC(51537f2d) SHA1(a837a525cd7da724f338c47e716be175c37070b0), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1)" )
-GAME_CUSTOM( 199?, m4vivaes__a, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8ad.p1", 0x0000, 0x010000, CRC(1591cc9b) SHA1(b7574b71955d7780f3f127670e458befad951383), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1AD)" )
-GAME_CUSTOM( 199?, m4vivaes__b, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8b.p1", 0x0000, 0x010000, CRC(33b085b3) SHA1(5fc22ee8ae2d597392c82b09a830893bb04e1014), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1B)" )
-GAME_CUSTOM( 199?, m4vivaes__c, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8bd.p1", 0x0000, 0x010000, CRC(d1eedaac) SHA1(9773fbb9b15dbbe313d76b0746698fbc12e26dd2), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1BD)" )
-GAME_CUSTOM( 199?, m4vivaes__d, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8c.p1", 0x0000, 0x010000, CRC(d2a8aaf5) SHA1(7aabe3e0522877700453068c30c74cbe2c058e9a), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1C)" )
-GAME_CUSTOM( 199?, m4vivaes__e, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8d.p1", 0x0000, 0x010000, CRC(06f87010) SHA1(636707d4077bee0ea2f221904fa0e187ea4a1e31), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1D)" )
-GAME_CUSTOM( 199?, m4vivaes__f, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8dk.p1", 0x0000, 0x010000, CRC(e87b56da) SHA1(f3de0ab0badc9bd14505822c63f110b9b2521d55), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1KD)" )
-GAME_CUSTOM( 199?, m4vivaes__g, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8dy.p1", 0x0000, 0x010000, CRC(d20ec7ed) SHA1(dffd4fcaf360b2b9f4b7241fe80bb6ee983b6d57), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1YD)" )
-GAME_CUSTOM( 199?, m4vivaes__h, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8k.p1", 0x0000, 0x010000, CRC(0a2509c5) SHA1(d0fd30953cbc36363a6d4941b4a0805f9663aebb), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1K)" )
-GAME_CUSTOM( 199?, m4vivaes__i, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "ep8y.p1", 0x0000, 0x010000, CRC(4cc454e4) SHA1(a08ec2a4a17600eba86300dcb6b150b1b5a7fc74), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1Y)" )
+GAME_CUSTOM( 199?, m4vivaes, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8s.p1", 0x0000, 0x010000, CRC(51537f2d) SHA1(a837a525cd7da724f338c47e716be175c37070b0), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1)" )
+GAME_CUSTOM( 199?, m4vivaes__a, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8ad.p1", 0x0000, 0x010000, CRC(1591cc9b) SHA1(b7574b71955d7780f3f127670e458befad951383), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1AD)" )
+GAME_CUSTOM( 199?, m4vivaes__b, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8b.p1", 0x0000, 0x010000, CRC(33b085b3) SHA1(5fc22ee8ae2d597392c82b09a830893bb04e1014), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1B)" )
+GAME_CUSTOM( 199?, m4vivaes__c, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8bd.p1", 0x0000, 0x010000, CRC(d1eedaac) SHA1(9773fbb9b15dbbe313d76b0746698fbc12e26dd2), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1BD)" )
+GAME_CUSTOM( 199?, m4vivaes__d, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8c.p1", 0x0000, 0x010000, CRC(d2a8aaf5) SHA1(7aabe3e0522877700453068c30c74cbe2c058e9a), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1C)" )
+GAME_CUSTOM( 199?, m4vivaes__e, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8d.p1", 0x0000, 0x010000, CRC(06f87010) SHA1(636707d4077bee0ea2f221904fa0e187ea4a1e31), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1D)" )
+GAME_CUSTOM( 199?, m4vivaes__f, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8dk.p1", 0x0000, 0x010000, CRC(e87b56da) SHA1(f3de0ab0badc9bd14505822c63f110b9b2521d55), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1KD)" )
+GAME_CUSTOM( 199?, m4vivaes__g, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8dy.p1", 0x0000, 0x010000, CRC(d20ec7ed) SHA1(dffd4fcaf360b2b9f4b7241fe80bb6ee983b6d57), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1YD)" )
+GAME_CUSTOM( 199?, m4vivaes__h, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8k.p1", 0x0000, 0x010000, CRC(0a2509c5) SHA1(d0fd30953cbc36363a6d4941b4a0805f9663aebb), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1K)" )
+GAME_CUSTOM( 199?, m4vivaes__i, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "ep8y.p1", 0x0000, 0x010000, CRC(4cc454e4) SHA1(a08ec2a4a17600eba86300dcb6b150b1b5a7fc74), "Barcrest","Viva Espana (Barcrest) (MPU4) (EP8 0.1Y)" )
// "(C)1993 BARCREST" and "ESP 0.3"
-GAME_CUSTOM( 199?, m4vivaes__k, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "espc.p1", 0x0000, 0x010000, CRC(9534d0d0) SHA1(8e4a1081821d472eb4d9aa01e38b6956a1388d28), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3C)" )
-GAME_CUSTOM( 199?, m4vivaes__l, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "espd.p1", 0x0000, 0x010000, CRC(012fbc14) SHA1(5e4a1cd7989f804ac52c7cbf46d7f9c1d7200336), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3D)" )
-GAME_CUSTOM( 199?, m4vivaes__m, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "espdy.p1", 0x0000, 0x010000, CRC(90efbb8e) SHA1(a7338c5d71719b86f524f35d7edd176f41383f15), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3YD)" )
-GAME_CUSTOM( 199?, m4vivaes__n, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "espk.p1", 0x0000, 0x010000, CRC(775a56d6) SHA1(b0e47b56315948a7162ae00c3f5197fbb7b81ec5), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3K)" )
-GAME_CUSTOM( 199?, m4vivaes__o, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "esps.p1", 0x0000, 0x010000, CRC(0c83b014) SHA1(e7cc513b66534b4fec89170d7b739c99a1ba3831), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3)" )
-GAME_CUSTOM( 199?, m4vivaes__p, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "espy.p1", 0x0000, 0x010000, CRC(020aa8bb) SHA1(497dae13fe9f9eba624db907e9f4a5bef1584a64), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3Y)" )
+GAME_CUSTOM( 199?, m4vivaes__k, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "espc.p1", 0x0000, 0x010000, CRC(9534d0d0) SHA1(8e4a1081821d472eb4d9aa01e38b6956a1388d28), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3C)" )
+GAME_CUSTOM( 199?, m4vivaes__l, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "espd.p1", 0x0000, 0x010000, CRC(012fbc14) SHA1(5e4a1cd7989f804ac52c7cbf46d7f9c1d7200336), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3D)" )
+GAME_CUSTOM( 199?, m4vivaes__m, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "espdy.p1", 0x0000, 0x010000, CRC(90efbb8e) SHA1(a7338c5d71719b86f524f35d7edd176f41383f15), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3YD)" )
+GAME_CUSTOM( 199?, m4vivaes__n, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "espk.p1", 0x0000, 0x010000, CRC(775a56d6) SHA1(b0e47b56315948a7162ae00c3f5197fbb7b81ec5), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3K)" )
+GAME_CUSTOM( 199?, m4vivaes__o, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "esps.p1", 0x0000, 0x010000, CRC(0c83b014) SHA1(e7cc513b66534b4fec89170d7b739c99a1ba3831), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3)" )
+GAME_CUSTOM( 199?, m4vivaes__p, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "espy.p1", 0x0000, 0x010000, CRC(020aa8bb) SHA1(497dae13fe9f9eba624db907e9f4a5bef1584a64), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.3Y)" )
// "(C)1993 BARCREST" and "ESP 0.2"
-GAME_CUSTOM( 199?, m4vivaes__aq, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, init_m4default, "vspa20st", 0x0000, 0x010000, CRC(267388eb) SHA1(2621724ebdd5031fc513692ff90989bf3b6115d1), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.2)" )
+GAME_CUSTOM( 199?, m4vivaes__aq, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, init_m4, "vspa20st", 0x0000, 0x010000, CRC(267388eb) SHA1(2621724ebdd5031fc513692ff90989bf3b6115d1), "Barcrest","Viva Espana (Barcrest) (MPU4) (ESP 0.2)" )
// "(C)1993 BARCREST" and "VE5 0.2"
-GAME_CUSTOM( 199?, m4vivaes__q, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5ad.p1", 0x0000, 0x010000, CRC(c545d5f0) SHA1(6ad168d2c1f2da2fff85fe0e21a3191cba8f5838), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2AD)" )
-GAME_CUSTOM( 199?, m4vivaes__r, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5b.p1", 0x0000, 0x010000, CRC(ed02fa94) SHA1(9980b2f78ea8f40715e77fd8fafe883739ac1165), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2B)" )
-GAME_CUSTOM( 199?, m4vivaes__s, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5bd.p1", 0x0000, 0x010000, CRC(fce73b5c) SHA1(35e635ade9b4a7a992c568e317190d12576f78c9), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2BD)" )
-GAME_CUSTOM( 199?, m4vivaes__t, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5d.p1", 0x0000, 0x010000, CRC(e739556d) SHA1(0816aa256cf8ac253ff37999595e981e90874d39), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2D)" )
-GAME_CUSTOM( 199?, m4vivaes__u, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5dk.p1", 0x0000, 0x010000, CRC(64f174d0) SHA1(f51b28607715931a9d4c1c14fc71b4f8bb8e56fb), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2KD)" )
-GAME_CUSTOM( 199?, m4vivaes__v, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5dy.p1", 0x0000, 0x010000, CRC(fe6339c6) SHA1(82f14d80e96b65eeea08f1029ffaebf2e505091e), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2YD)" )
-GAME_CUSTOM( 199?, m4vivaes__w, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5k.p1", 0x0000, 0x010000, CRC(05428018) SHA1(b6884a1bfd2cf8268258d3d9a8d2c482ba92e5af), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2K)" )
-GAME_CUSTOM( 199?, m4vivaes__x, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5s.p1", 0x0000, 0x010000, CRC(65df6cf1) SHA1(26eadbad30b93df6dfd37f984be2dec77f1d6442), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2)" )
-GAME_CUSTOM( 199?, m4vivaes__y, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "ve5y.p1", 0x0000, 0x010000, CRC(2fe06579) SHA1(9e11b371edd8fab78e9594ed864f8eb487112150), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2Y)" )
+GAME_CUSTOM( 199?, m4vivaes__q, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5ad.p1", 0x0000, 0x010000, CRC(c545d5f0) SHA1(6ad168d2c1f2da2fff85fe0e21a3191cba8f5838), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2AD)" )
+GAME_CUSTOM( 199?, m4vivaes__r, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5b.p1", 0x0000, 0x010000, CRC(ed02fa94) SHA1(9980b2f78ea8f40715e77fd8fafe883739ac1165), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2B)" )
+GAME_CUSTOM( 199?, m4vivaes__s, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5bd.p1", 0x0000, 0x010000, CRC(fce73b5c) SHA1(35e635ade9b4a7a992c568e317190d12576f78c9), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2BD)" )
+GAME_CUSTOM( 199?, m4vivaes__t, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5d.p1", 0x0000, 0x010000, CRC(e739556d) SHA1(0816aa256cf8ac253ff37999595e981e90874d39), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2D)" )
+GAME_CUSTOM( 199?, m4vivaes__u, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5dk.p1", 0x0000, 0x010000, CRC(64f174d0) SHA1(f51b28607715931a9d4c1c14fc71b4f8bb8e56fb), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2KD)" )
+GAME_CUSTOM( 199?, m4vivaes__v, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5dy.p1", 0x0000, 0x010000, CRC(fe6339c6) SHA1(82f14d80e96b65eeea08f1029ffaebf2e505091e), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2YD)" )
+GAME_CUSTOM( 199?, m4vivaes__w, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5k.p1", 0x0000, 0x010000, CRC(05428018) SHA1(b6884a1bfd2cf8268258d3d9a8d2c482ba92e5af), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2K)" )
+GAME_CUSTOM( 199?, m4vivaes__x, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5s.p1", 0x0000, 0x010000, CRC(65df6cf1) SHA1(26eadbad30b93df6dfd37f984be2dec77f1d6442), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2)" )
+GAME_CUSTOM( 199?, m4vivaes__y, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve5y.p1", 0x0000, 0x010000, CRC(2fe06579) SHA1(9e11b371edd8fab78e9594ed864f8eb487112150), "Barcrest","Viva Espana (Barcrest) (MPU4) (VE5 0.2Y)" )
// "(C)1993 BARCREST" and "VET 0.2"
-GAME_CUSTOM( 199?, m4vivaes__2, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vetad.p1", 0x0000, 0x010000, CRC(fb9564dc) SHA1(9782d04eaec7d9c19138abf4f2dd3daa6c745c2a), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2AD)" )
-GAME_CUSTOM( 199?, m4vivaes__3, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vetb.p1", 0x0000, 0x010000, CRC(2a8d7beb) SHA1(e503bdc388c2ab7551cc84dd9e45b85bd2420ef8), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2B)" )
-GAME_CUSTOM( 199?, m4vivaes__4, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vetbd.p1", 0x0000, 0x010000, CRC(ebaffb7d) SHA1(b54a581927fc28ce14ab9efe6fe62e074831a42a), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2BD)" )
-GAME_CUSTOM( 199?, m4vivaes__5, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vetd.p1", 0x0000, 0x010000, CRC(365dff45) SHA1(6ce756f1d6133e05c46e8e7b7ad554f9f512b722), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2D)" )
-GAME_CUSTOM( 199?, m4vivaes__6, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vetdk.p1", 0x0000, 0x010000, CRC(5fb1ba90) SHA1(57a7f225d7bd8ed78c2ebf5d363e06b7694efc5f), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2KD)" )
-GAME_CUSTOM( 199?, m4vivaes__7, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vetdy.p1", 0x0000, 0x010000, CRC(100261cb) SHA1(f834c5b848059673b9e9824854e6600dae6c4499), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2YD)" )
-GAME_CUSTOM( 199?, m4vivaes__8, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vetk.p1", 0x0000, 0x010000, CRC(db48f34b) SHA1(013d84b27c4ea6d7b538011c22a3cd573f1d12cc), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2K)" )
-GAME_CUSTOM( 199?, m4vivaes__9, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vets.p1", 0x0000, 0x010000, CRC(d7e00f9d) SHA1(df2d85ff9eae7adf662b7d8a9c6f874ec8c07183), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2)" )
-GAME_CUSTOM( 199?, m4vivaes__aa, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, init_m4default, "vety.p1", 0x0000, 0x010000, CRC(ba3b19c7) SHA1(6e9ee238ec6a272ef16ebfba0dc49bc076e741de), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2Y)" )
+GAME_CUSTOM( 199?, m4vivaes__2, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vetad.p1", 0x0000, 0x010000, CRC(fb9564dc) SHA1(9782d04eaec7d9c19138abf4f2dd3daa6c745c2a), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2AD)" )
+GAME_CUSTOM( 199?, m4vivaes__3, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vetb.p1", 0x0000, 0x010000, CRC(2a8d7beb) SHA1(e503bdc388c2ab7551cc84dd9e45b85bd2420ef8), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2B)" )
+GAME_CUSTOM( 199?, m4vivaes__4, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vetbd.p1", 0x0000, 0x010000, CRC(ebaffb7d) SHA1(b54a581927fc28ce14ab9efe6fe62e074831a42a), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2BD)" )
+GAME_CUSTOM( 199?, m4vivaes__5, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vetd.p1", 0x0000, 0x010000, CRC(365dff45) SHA1(6ce756f1d6133e05c46e8e7b7ad554f9f512b722), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2D)" )
+GAME_CUSTOM( 199?, m4vivaes__6, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vetdk.p1", 0x0000, 0x010000, CRC(5fb1ba90) SHA1(57a7f225d7bd8ed78c2ebf5d363e06b7694efc5f), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2KD)" )
+GAME_CUSTOM( 199?, m4vivaes__7, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vetdy.p1", 0x0000, 0x010000, CRC(100261cb) SHA1(f834c5b848059673b9e9824854e6600dae6c4499), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2YD)" )
+GAME_CUSTOM( 199?, m4vivaes__8, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vetk.p1", 0x0000, 0x010000, CRC(db48f34b) SHA1(013d84b27c4ea6d7b538011c22a3cd573f1d12cc), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2K)" )
+GAME_CUSTOM( 199?, m4vivaes__9, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vets.p1", 0x0000, 0x010000, CRC(d7e00f9d) SHA1(df2d85ff9eae7adf662b7d8a9c6f874ec8c07183), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2)" )
+GAME_CUSTOM( 199?, m4vivaes__aa, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, init_m4, "vety.p1", 0x0000, 0x010000, CRC(ba3b19c7) SHA1(6e9ee238ec6a272ef16ebfba0dc49bc076e741de), "Barcrest","Viva Espana (Barcrest) (MPU4) (VET 0.2Y)" )
// "(C)1995 B.W.B." and "VE105.0"
-GAME_CUSTOM( 199?, m4vivaes__ad, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::vivaalt_characteriser_prot>, mpu4, init_m4default, "ve_10a__.5_1", 0x0000, 0x010000, CRC(afdc0a2f) SHA1(ab8fec2c48db07c0aba31930893fe7211b306468), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 4)" ) // boots
+GAME_CUSTOM( 199?, m4vivaes__ad, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::vivaalt_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve_10a__.5_1", 0x0000, 0x010000, CRC(afdc0a2f) SHA1(ab8fec2c48db07c0aba31930893fe7211b306468), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 4)" ) // boots
// "(C)1995 B.W.B." and "VE5 4.0"
-GAME_CUSTOM( 199?, m4vivaes__ae, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::vivaalt_characteriser_prot>, mpu4, init_m4default, "vei05___.4_1", 0x0000, 0x010000, CRC(687a511b) SHA1(362e1d5557b6b7d551c9b9c5ef70d7944b44a3ce), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 1)" ) // boots
+GAME_CUSTOM( 199?, m4vivaes__ae, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::vivaalt_characteriser_prot>(R4, RT1), mpu4, init_m4, "vei05___.4_1", 0x0000, 0x010000, CRC(687a511b) SHA1(362e1d5557b6b7d551c9b9c5ef70d7944b44a3ce), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 1)" ) // boots
// "(C)1995 B.W.B." and "VE104.0"
-GAME_CUSTOM( 199?, m4vivaes__af, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::vivaalt_characteriser_prot>, mpu4, init_m4default, "vei10___.4_1", 0x0000, 0x010000, CRC(b9e2471f) SHA1(3fa561466332ed14e233d97bf9170ec08a019bd0), "BWB","Viva Espana (Barcrest) (MPU4) (VE104.0)" ) // boots
+GAME_CUSTOM( 199?, m4vivaes__af, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::vivaalt_characteriser_prot>(R4, RT1), mpu4, init_m4, "vei10___.4_1", 0x0000, 0x010000, CRC(b9e2471f) SHA1(3fa561466332ed14e233d97bf9170ec08a019bd0), "BWB","Viva Espana (Barcrest) (MPU4) (VE104.0)" ) // boots
// "(C)1995 B.W.B." and "VE5 3.0"
-GAME_CUSTOM( 199?, m4vivaes__ac, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "ve_05a__.3_1", 0x0000, 0x010000, CRC(92e0e121) SHA1(f32c8f1c8008794283bd32f9440e0a580f77b5b3), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 3.0)" ) // boots
+GAME_CUSTOM( 199?, m4vivaes__ac, m4vivaes, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "ve_05a__.3_1", 0x0000, 0x010000, CRC(92e0e121) SHA1(f32c8f1c8008794283bd32f9440e0a580f77b5b3), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 3.0)" ) // boots
// unprotected (possible hacks)
// "(C)1995 B.W.B." and "VE5 6.0"
-GAME_CUSTOM( 199?, m4vivaes__ai, m4vivaes, mod4oki, mpu4, init_m4default, "vesp510l", 0x0000, 0x010000, CRC(15c33530) SHA1(888625c383e52825c06cbf1e7022cd8b02bf549c), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 1)" )
-GAME_CUSTOM( 199?, m4vivaes__aj, m4vivaes, mod4oki, mpu4, init_m4default, "vesp55", 0x0000, 0x010000, CRC(9cc395ef) SHA1(d62cb55664246e3fada3d971ee317eef51739018), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 2)" )
-GAME_CUSTOM( 199?, m4vivaes__ag, m4vivaes, mod4oki, mpu4, init_m4default, "vesp5.8c", 0x0000, 0x010000, CRC(266d42cf) SHA1(b1e583652d6184db2a5f03cb7ae3f694627591c8), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 3)" )
-GAME_CUSTOM( 199?, m4vivaes__ah, m4vivaes, mod4oki, mpu4, init_m4default, "vesp5.8t", 0x0000, 0x010000, CRC(bf8c9dfa) SHA1(69f28d3ce04efdb89db688dbc2341d19c27c5ba8), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0)" ) // "(C)1995 B.W.B." and "VE5 5.0"
+GAME_CUSTOM( 199?, m4vivaes__ai, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp510l", 0x0000, 0x010000, CRC(15c33530) SHA1(888625c383e52825c06cbf1e7022cd8b02bf549c), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 1)" )
+GAME_CUSTOM( 199?, m4vivaes__aj, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp55", 0x0000, 0x010000, CRC(9cc395ef) SHA1(d62cb55664246e3fada3d971ee317eef51739018), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 2)" )
+GAME_CUSTOM( 199?, m4vivaes__ag, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp5.8c", 0x0000, 0x010000, CRC(266d42cf) SHA1(b1e583652d6184db2a5f03cb7ae3f694627591c8), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 3)" )
+GAME_CUSTOM( 199?, m4vivaes__ah, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp5.8t", 0x0000, 0x010000, CRC(bf8c9dfa) SHA1(69f28d3ce04efdb89db688dbc2341d19c27c5ba8), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 6.0)" ) // "(C)1995 B.W.B." and "VE5 5.0"
// "(C)1995 B.W.B." and "VE5 5.0"
-GAME_CUSTOM( 199?, m4vivaes__z, m4vivaes, mod4oki, mpu4, init_m4default, "vesp05_11", 0x0000, 0x010000, CRC(32100a2e) SHA1(bb7324267708a0c0850fb77885df9868954d86cd), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 1)" )
-GAME_CUSTOM( 199?, m4vivaes__ao, m4vivaes, mod4oki, mpu4, init_m4default, "vesp_5.4", 0x0000, 0x010000, CRC(3b6762ce) SHA1(9dc53dce453a7b124ea2b65a590aff6c7d05831f), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 2)" )
-GAME_CUSTOM( 199?, m4vivaes__ap, m4vivaes, mod4oki, mpu4, init_m4default, "vesp_5.8", 0x0000, 0x010000, CRC(63abf642) SHA1(6b585147a771e4bd445b525aafc25293845f660b), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 3)" )
+GAME_CUSTOM( 199?, m4vivaes__z, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp05_11", 0x0000, 0x010000, CRC(32100a2e) SHA1(bb7324267708a0c0850fb77885df9868954d86cd), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 1)" )
+GAME_CUSTOM( 199?, m4vivaes__ao, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp_5.4", 0x0000, 0x010000, CRC(3b6762ce) SHA1(9dc53dce453a7b124ea2b65a590aff6c7d05831f), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 2)" )
+GAME_CUSTOM( 199?, m4vivaes__ap, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp_5.8", 0x0000, 0x010000, CRC(63abf642) SHA1(6b585147a771e4bd445b525aafc25293845f660b), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 3)" )
// "(C)1995 B.W.B." and "VE5 4.0"
-GAME_CUSTOM( 199?, m4vivaes__ak, m4vivaes, mod4oki, mpu4, init_m4default, "vesp58c", 0x0000, 0x010000, CRC(d8cc868d) SHA1(0b9fa8b61998badbd870827e32af4937548b583e), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 2)" ) // boots
+GAME_CUSTOM( 199?, m4vivaes__ak, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp58c", 0x0000, 0x010000, CRC(d8cc868d) SHA1(0b9fa8b61998badbd870827e32af4937548b583e), "BWB","Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 2)" ) // boots
// "(C)1995 B.W.B." and "VE105.0"
-GAME_CUSTOM( 199?, m4vivaes__am, m4vivaes, mod4oki, mpu4, init_m4default, "vesp_10.8", 0x0000, 0x010000, CRC(8054766d) SHA1(8e7fd6f8cd74d2760e2923af32813ca93fbf98e6), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 1)" )
-GAME_CUSTOM( 199?, m4vivaes__al, m4vivaes, mod4oki, mpu4, init_m4default, "vesp_10.4", 0x0000, 0x010000, CRC(95e95339) SHA1(59633b7c01da25237342bce7e989259bf723ba6f), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 2)" )
-GAME_CUSTOM( 199?, m4vivaes__0, m4vivaes, mod4oki, mpu4, init_m4default, "vesp10_11", 0x0000, 0x010000, CRC(2a1dfcb2) SHA1(7d4ef072c41779554a2b8046688957585821e356), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 3)" )
+GAME_CUSTOM( 199?, m4vivaes__am, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp_10.8", 0x0000, 0x010000, CRC(8054766d) SHA1(8e7fd6f8cd74d2760e2923af32813ca93fbf98e6), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 1)" )
+GAME_CUSTOM( 199?, m4vivaes__al, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp_10.4", 0x0000, 0x010000, CRC(95e95339) SHA1(59633b7c01da25237342bce7e989259bf723ba6f), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 2)" )
+GAME_CUSTOM( 199?, m4vivaes__0, m4vivaes, mod4oki(R4, RT1), mpu4, init_m4, "vesp10_11", 0x0000, 0x010000, CRC(2a1dfcb2) SHA1(7d4ef072c41779554a2b8046688957585821e356), "BWB","Viva Espana (Barcrest) (MPU4) (VE105.0, set 3)" )
// different protection
// no copyright string and "8V1 0.3"
-GAME_CUSTOM( 199?, m4vivaes__1, m4vivaes, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default, "vesp20_11", 0x0000, 0x010000, CRC(06233420) SHA1(06101dbe871617ae6ff098e070316ec98a15b704), "hack", "Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 1)" )
-GAME_CUSTOM( 199?, m4vivaes__an, m4vivaes, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default, "vesp_20_.8", 0x0000, 0x010000, CRC(35f90f05) SHA1(0013ff32c809603efdad782306140bd7086be965), "hack", "Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 2)" )
+GAME_CUSTOM( 199?, m4vivaes__1, m4vivaes, mod4oki_bootleg_fixedret<0x1f>(R4, RT1), mpu4, init_m4, "vesp20_11", 0x0000, 0x010000, CRC(06233420) SHA1(06101dbe871617ae6ff098e070316ec98a15b704), "hack", "Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 1)" )
+GAME_CUSTOM( 199?, m4vivaes__an, m4vivaes, mod4oki_bootleg_fixedret<0x2f>(R4, RT1), mpu4, init_m4, "vesp_20_.8", 0x0000, 0x010000, CRC(35f90f05) SHA1(0013ff32c809603efdad782306140bd7086be965), "hack", "Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 2)" )
// "(C)1997 CUCKOO" and "VE5 6.0" (hack)
-GAME_CUSTOM( 199?, m4vivaes__j, m4vivaes, mod4oki_bootleg_fixedret<0xb6>, mpu4, init_m4default, "5p5vivaespana6-0.bin", 0x0000, 0x010000, CRC(adf02a7b) SHA1(2c61e175b920a67098503eb4d80b07b828c9f91d), "hack", "Viva Espana (Barcrest) (MPU4) (VE5 6.0, hack)" )
+GAME_CUSTOM( 199?, m4vivaes__j, m4vivaes, mod4oki_bootleg_fixedret<0xb6>(R4, RT1), mpu4, init_m4, "5p5vivaespana6-0.bin", 0x0000, 0x010000, CRC(adf02a7b) SHA1(2c61e175b920a67098503eb4d80b07b828c9f91d), "hack", "Viva Espana (Barcrest) (MPU4) (VE5 6.0, hack)" )
@@ -3079,7 +3054,7 @@ GAME_CUSTOM( 199?, m4vivaes__j, m4vivaes, mod4oki_bootleg_fixedret<0xb6>, mpu
ROM_LOAD( name, offset, length, hash ) \
M4VIVESS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "SE8 0.1"
GAME_CUSTOM( 199?, m4vivess, 0, "se8s.p1", 0x0000, 0x010000, CRC(d5c261de) SHA1(5f70944ffe03109ad16f162370fd3653d131034d), "Barcrest","Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1)" )
@@ -3119,7 +3094,7 @@ GAME_CUSTOM( 199?, m4vivess__p, m4vivess, "sesy.p1", 0x0000, 0x010000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4PRZVE_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PES 0.4"
GAME_CUSTOM( 199?, m4przve, 0, "pess.p1", 0x0000, 0x010000, CRC(d8e79833) SHA1(f68fd1bd057a353832c7de3e2818906ab2b844b7), "Barcrest","Prize Viva Espana (Barcrest) (MPU4) (PES 0.4)" )
@@ -3161,7 +3136,7 @@ GAME_CUSTOM( 199?, m4przve__k, m4przve, "pe8y.p1", 0x0000, 0x010000, CRC(c3
ROM_LOAD( name, offset, length, hash ) \
M4POTBLK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PBS 0.6"
GAME_CUSTOM( 199?, m4potblk__ar, m4potblk, "pbs06s.p1", 0x0000, 0x020000, CRC(d2b42b29) SHA1(a077605b1f9f3082a03882b4f5b360a530a97135), "Barcrest","Pot Black (Barcrest) (MPU4) (PBS 0.6)" )
@@ -3201,7 +3176,7 @@ GAME_CUSTOM( 199?, m4potblk__1, m4potblk, "pbg16y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4POTBLK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PBG 1.4"
GAME_CUSTOM( 199?, m4potblk__c, m4potblk, "pbg14s.p1", 0x0000, 0x020000, CRC(c9316c92) SHA1(d9248069c4702d4ce780ab82bdb783ba5aea034b), "Barcrest","Pot Black (Barcrest) (MPU4) (PBG 1.4)" )
@@ -3241,7 +3216,7 @@ GAME_CUSTOM( 199?, m4potblk__ae, m4potblk, "pbs04y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4POTBLK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -3259,7 +3234,7 @@ GAME_CUSTOM( 199?, m4potblk__b, m4potblk, "pb15t", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4POTBLK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1997 B.W.B." and "PO 1.2"
@@ -3292,7 +3267,7 @@ GAME_CUSTOM( 199?, m4potblk__ax, m4potblk, "po_x6a_t.1_1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4PLACBT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PYB 0.6"
GAME_CUSTOM( 199?, m4placbt__k, m4placbt, "pyb06s.p1", 0x0000, 0x020000, CRC(acd9d628) SHA1(93d8f0ffa3b9ebdd9fef39b2bc49bb85b2fac00f), "Barcrest","Place Your Bets (Barcrest) (MPU4) (PYB 0.6)" )
@@ -3332,7 +3307,7 @@ GAME_CUSTOM( 199?, m4placbt__x, m4placbt, "pyb10h", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4PLACBT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PYB 0.7"
GAME_CUSTOM( 199?, m4placbt, 0, "pyb07s.p1", 0x0000, 0x020000, CRC(ad02705a) SHA1(027bcbbd828e4fd23831af9554d582857e6784e1), "Barcrest","Place Your Bets (Barcrest) (MPU4) (PYB 0.7)" )
@@ -3368,7 +3343,7 @@ GAME_CUSTOM( 199?, m4placbt__ao, m4placbt, "pyh06y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4PLACBT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -3395,7 +3370,7 @@ GAME_CUSTOM( 199?, m4placbt__z, m4placbt, "pyb15t", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4C9_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "CT3 0.2"
GAME_CUSTOM( 199?, m4c9__a, m4c9, "c915.hex", 0x0000, 0x010000, CRC(dabfa3f3) SHA1(f507c78e61cba74e9b776bebaf0cc4fa40b6de95), "Barcrest","Cloud Nine (Barcrest) (MPU4) (CT3 0.2)" )
@@ -3444,7 +3419,7 @@ GAME_CUSTOM( 199?, m4c9__ax, m4c9, "ct502y.p1", 0x0000, 0x010000, CRC(f4c
ROM_LOAD( name, offset, length, hash ) \
M4C9_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "C92 1.1"
GAME_CUSTOM( 199?, m4c9, 0, "c9211.p1", 0x0000, 0x010000, CRC(44e5cc87) SHA1(36fca9493d36ee6988d02da1b4c575278c43748c), "Barcrest","Cloud Nine (Barcrest) (MPU4) (C92 1.1)" )
@@ -3501,85 +3476,85 @@ GAME_CUSTOM( 199?, m4c9__m, m4c9, "c9510y.p1", 0x0000, 0x010000, CRC(3a9
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "F1U 0.1"
-GAME_CUSTOM( 199?, m4tutfrt__u, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01s.p1", 0x0000, 0x010000, CRC(d69668d2) SHA1(86ea656a3a4d4e6701c70b5e730ae8402cd70342), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1)" )
-GAME_CUSTOM( 199?, m4tutfrt__k, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01ad.p1", 0x0000, 0x010000, CRC(7573d8cf) SHA1(fe1553ca8f588554fdd495dc2f048e50e00590bb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 AD)" )
-GAME_CUSTOM( 199?, m4tutfrt__l, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01b.p1", 0x0000, 0x010000, CRC(158d1a3a) SHA1(da80334e9982f778a908a6fe89a593863e7c763e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 B)" )
-GAME_CUSTOM( 199?, m4tutfrt__m, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01bd.p1", 0x0000, 0x010000, CRC(9844e568) SHA1(a580176338cdeed5fb4d1744b537bde1f499293e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 BD)" )
-GAME_CUSTOM( 199?, m4tutfrt__n, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01c.p1", 0x0000, 0x010000, CRC(4709bd66) SHA1(c15f64767315ea0434a57b9e494a9e8090f1e05a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 C)" )
-GAME_CUSTOM( 199?, m4tutfrt__o, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01d.p1", 0x0000, 0x010000, CRC(3a3c6745) SHA1(f270bccb4bdedb5cfaf0130da6e480dc31889682), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 D)" )
-GAME_CUSTOM( 199?, m4tutfrt__p, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01dk.p1", 0x0000, 0x010000, CRC(4fa79f23) SHA1(ce9a0815d96a94d564edf5a775af94ea10070ff5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 KD)" )
-GAME_CUSTOM( 199?, m4tutfrt__q, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01dr.p1", 0x0000, 0x010000, CRC(6fcc4d76) SHA1(27d8fdd5965ba565cb5b6113b7cba5e820650419), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 RD)" )
-GAME_CUSTOM( 199?, m4tutfrt__r, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01dy.p1", 0x0000, 0x010000, CRC(cdd43fc2) SHA1(6f4da20de3040675592b4338a1d72654800c20eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 YD)" )
-GAME_CUSTOM( 199?, m4tutfrt__s, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01k.p1", 0x0000, 0x010000, CRC(7e9c3110) SHA1(56ab6e5362ce8795c65d0cf11742e3ddb6d8b8a3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 K)" )
-GAME_CUSTOM( 199?, m4tutfrt__t, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01r.p1", 0x0000, 0x010000, CRC(0e6b2132) SHA1(8757713677e2eb0400c69d3cdde6506662e0ef0b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 R)" )
-GAME_CUSTOM( 199?, m4tutfrt__v, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f1u01y.p1", 0x0000, 0x010000, CRC(33e7d5fd) SHA1(96f53fbb228e98ce3a848b2c72bdb8876c9de160), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 Y)" )
+GAME_CUSTOM( 199?, m4tutfrt__u, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01s.p1", 0x0000, 0x010000, CRC(d69668d2) SHA1(86ea656a3a4d4e6701c70b5e730ae8402cd70342), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1)" )
+GAME_CUSTOM( 199?, m4tutfrt__k, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01ad.p1", 0x0000, 0x010000, CRC(7573d8cf) SHA1(fe1553ca8f588554fdd495dc2f048e50e00590bb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 AD)" )
+GAME_CUSTOM( 199?, m4tutfrt__l, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01b.p1", 0x0000, 0x010000, CRC(158d1a3a) SHA1(da80334e9982f778a908a6fe89a593863e7c763e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 B)" )
+GAME_CUSTOM( 199?, m4tutfrt__m, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01bd.p1", 0x0000, 0x010000, CRC(9844e568) SHA1(a580176338cdeed5fb4d1744b537bde1f499293e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 BD)" )
+GAME_CUSTOM( 199?, m4tutfrt__n, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01c.p1", 0x0000, 0x010000, CRC(4709bd66) SHA1(c15f64767315ea0434a57b9e494a9e8090f1e05a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 C)" )
+GAME_CUSTOM( 199?, m4tutfrt__o, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01d.p1", 0x0000, 0x010000, CRC(3a3c6745) SHA1(f270bccb4bdedb5cfaf0130da6e480dc31889682), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 D)" )
+GAME_CUSTOM( 199?, m4tutfrt__p, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01dk.p1", 0x0000, 0x010000, CRC(4fa79f23) SHA1(ce9a0815d96a94d564edf5a775af94ea10070ff5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 KD)" )
+GAME_CUSTOM( 199?, m4tutfrt__q, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01dr.p1", 0x0000, 0x010000, CRC(6fcc4d76) SHA1(27d8fdd5965ba565cb5b6113b7cba5e820650419), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 RD)" )
+GAME_CUSTOM( 199?, m4tutfrt__r, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01dy.p1", 0x0000, 0x010000, CRC(cdd43fc2) SHA1(6f4da20de3040675592b4338a1d72654800c20eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 YD)" )
+GAME_CUSTOM( 199?, m4tutfrt__s, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01k.p1", 0x0000, 0x010000, CRC(7e9c3110) SHA1(56ab6e5362ce8795c65d0cf11742e3ddb6d8b8a3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 K)" )
+GAME_CUSTOM( 199?, m4tutfrt__t, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01r.p1", 0x0000, 0x010000, CRC(0e6b2132) SHA1(8757713677e2eb0400c69d3cdde6506662e0ef0b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 R)" )
+GAME_CUSTOM( 199?, m4tutfrt__v, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f1u01y.p1", 0x0000, 0x010000, CRC(33e7d5fd) SHA1(96f53fbb228e98ce3a848b2c72bdb8876c9de160), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 Y)" )
// "(C)1991 BARCREST" and "F2U 0.1" these were marked 'Tutti Fruity Classic' but appear to be revisions of these sets
-GAME_CUSTOM( 199?, m4tutcl, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01s.p1", 0x0000, 0x010000, CRC(25b68f22) SHA1(7f484dbc841e1e87d9f5e322cf497b6b68e4a096), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1)" )
-GAME_CUSTOM( 199?, m4tutcl__j, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01ad.p1", 0x0000, 0x010000, CRC(65537552) SHA1(b0a761dcc6e0a9f01cfb934b570356ca67fdd099), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 AD)" )
-GAME_CUSTOM( 199?, m4tutcl__a, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01b.p1", 0x0000, 0x010000, CRC(2cae37df) SHA1(5aed985476b7b747a99a4046b846ee4a359776af), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B)" )
-GAME_CUSTOM( 199?, m4tutcl__b, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01bd.p1", 0x0000, 0x010000, CRC(0dd91ccf) SHA1(bcdfc39025d02e7a51f69757238dfa44fe9d3655), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 BD)" )
-GAME_CUSTOM( 199?, m4tutcl__c, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01c.p1", 0x0000, 0x010000, CRC(6b6d9bb9) SHA1(140e9cbb8b484116e5fb9a7670d41fb0bcb37ec0), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 C)" )
-GAME_CUSTOM( 199?, m4tutcl__d, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01d.p1", 0x0000, 0x010000, CRC(b477a20d) SHA1(51daf5e61a2ebcb3cb9884421b9e8f32df51ec07), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 D)" )
-GAME_CUSTOM( 199?, m4tutcl__e, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01dk.p1", 0x0000, 0x010000, CRC(ccd14dd3) SHA1(c93ff69e0534e8190c10e0c819ed439d4e61a472), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 KD)" )
-GAME_CUSTOM( 199?, m4tutcl__f, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01dr.p1", 0x0000, 0x010000, CRC(d4918506) SHA1(2081ead45ff744cafcf3c4164c86acf609e54632), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 RD)" )
-GAME_CUSTOM( 199?, m4tutcl__g, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01dy.p1", 0x0000, 0x010000, CRC(24dd0a73) SHA1(a75129e414dd8cbe5f6f44e39b1d3dc3d7dfafb2), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 YD)" )
-GAME_CUSTOM( 199?, m4tutcl__h, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01k.p1", 0x0000, 0x010000, CRC(b9cec403) SHA1(90a1f49202ea9b79e2ab097cf95cf94088c52926), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 K)" )
-GAME_CUSTOM( 199?, m4tutcl__i, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01r.p1", 0x0000, 0x010000, CRC(471e39d7) SHA1(874db6f2d04ed0b2c6756efba5fa1140d2fbfc58), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 R)" )
-GAME_CUSTOM( 199?, m4tutcl__k, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f2u01y.p1", 0x0000, 0x010000, CRC(5a583a6f) SHA1(0421d079de12a7379c13832108e8608c9a01f41d), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 Y)" )
+GAME_CUSTOM( 199?, m4tutcl, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01s.p1", 0x0000, 0x010000, CRC(25b68f22) SHA1(7f484dbc841e1e87d9f5e322cf497b6b68e4a096), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1)" )
+GAME_CUSTOM( 199?, m4tutcl__j, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01ad.p1", 0x0000, 0x010000, CRC(65537552) SHA1(b0a761dcc6e0a9f01cfb934b570356ca67fdd099), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 AD)" )
+GAME_CUSTOM( 199?, m4tutcl__a, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01b.p1", 0x0000, 0x010000, CRC(2cae37df) SHA1(5aed985476b7b747a99a4046b846ee4a359776af), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B)" )
+GAME_CUSTOM( 199?, m4tutcl__b, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01bd.p1", 0x0000, 0x010000, CRC(0dd91ccf) SHA1(bcdfc39025d02e7a51f69757238dfa44fe9d3655), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 BD)" )
+GAME_CUSTOM( 199?, m4tutcl__c, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01c.p1", 0x0000, 0x010000, CRC(6b6d9bb9) SHA1(140e9cbb8b484116e5fb9a7670d41fb0bcb37ec0), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 C)" )
+GAME_CUSTOM( 199?, m4tutcl__d, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01d.p1", 0x0000, 0x010000, CRC(b477a20d) SHA1(51daf5e61a2ebcb3cb9884421b9e8f32df51ec07), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 D)" )
+GAME_CUSTOM( 199?, m4tutcl__e, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01dk.p1", 0x0000, 0x010000, CRC(ccd14dd3) SHA1(c93ff69e0534e8190c10e0c819ed439d4e61a472), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 KD)" )
+GAME_CUSTOM( 199?, m4tutcl__f, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01dr.p1", 0x0000, 0x010000, CRC(d4918506) SHA1(2081ead45ff744cafcf3c4164c86acf609e54632), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 RD)" )
+GAME_CUSTOM( 199?, m4tutcl__g, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01dy.p1", 0x0000, 0x010000, CRC(24dd0a73) SHA1(a75129e414dd8cbe5f6f44e39b1d3dc3d7dfafb2), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 YD)" )
+GAME_CUSTOM( 199?, m4tutcl__h, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01k.p1", 0x0000, 0x010000, CRC(b9cec403) SHA1(90a1f49202ea9b79e2ab097cf95cf94088c52926), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 K)" )
+GAME_CUSTOM( 199?, m4tutcl__i, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01r.p1", 0x0000, 0x010000, CRC(471e39d7) SHA1(874db6f2d04ed0b2c6756efba5fa1140d2fbfc58), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 R)" )
+GAME_CUSTOM( 199?, m4tutcl__k, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f2u01y.p1", 0x0000, 0x010000, CRC(5a583a6f) SHA1(0421d079de12a7379c13832108e8608c9a01f41d), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 Y)" )
// "(C)1991 BARCREST" and "F3U 0.1m4tutfrt
-GAME_CUSTOM( 199?, m4tutfrt__6, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01s.p1", 0x0000, 0x010000, CRC(dce2e5be) SHA1(3c218cdb939d5b7cc650c820737ae3ac653435ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1)" )
-GAME_CUSTOM( 199?, m4tutfrt__w, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01ad.p1", 0x0000, 0x010000, CRC(acb1bfb3) SHA1(8aa22c45d98ecec324fa031b46689496f9a2842c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 AD)" )
-GAME_CUSTOM( 199?, m4tutfrt__x, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01b.p1", 0x0000, 0x010000, CRC(a0d14e25) SHA1(16f2444334608702748a3b0b2556ac1a7760615a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 B)" )
-GAME_CUSTOM( 199?, m4tutfrt__y, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01bd.p1", 0x0000, 0x010000, CRC(9aadd2f9) SHA1(4dbff4f6fd4d02778733eb846a354177f0e204a5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 BD)" )
-GAME_CUSTOM( 199?, m4tutfrt__z, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01c.p1", 0x0000, 0x010000, CRC(a3ad34d5) SHA1(e8c435f80b4fd3f7af16f341e107a85a33f1fe1c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 C)" )
-GAME_CUSTOM( 199?, m4tutfrt__0, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01d.p1", 0x0000, 0x010000, CRC(c6790301) SHA1(fb0b619e75e1227f4d293b613e80d8d653517eec), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 D)" )
-GAME_CUSTOM( 199?, m4tutfrt__1, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01dk.p1", 0x0000, 0x010000, CRC(ee0554fe) SHA1(12cd26d6205fec35590fd23682c578f06466eb01), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 KD)" )
-GAME_CUSTOM( 199?, m4tutfrt__2, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01dr.p1", 0x0000, 0x010000, CRC(32d761eb) SHA1(aa1098629d2a1c98c606a71a7cf0ae97f381aebe), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 RD)" )
-GAME_CUSTOM( 199?, m4tutfrt__3, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01dy.p1", 0x0000, 0x010000, CRC(3ad66969) SHA1(4c79edc52095cfa1fae8215caaaaf434cd38199d), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 YD)" )
-GAME_CUSTOM( 199?, m4tutfrt__4, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01k.p1", 0x0000, 0x010000, CRC(2b6c0f0f) SHA1(64e50adc6656225c9cdaaee64ae59cafcd1623ee), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 K)" )
-GAME_CUSTOM( 199?, m4tutfrt__5, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01r.p1", 0x0000, 0x010000, CRC(93cb1bfb) SHA1(e29439caed4a2f4512e50ff158427b61b5a9c4a9), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 R)" )
-GAME_CUSTOM( 199?, m4tutfrt__7, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "f3u01y.p1", 0x0000, 0x010000, CRC(9aae0ca2) SHA1(83192225d886848ee0320973fb9dbd85cf9045b8), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 Y)" )
+GAME_CUSTOM( 199?, m4tutfrt__6, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01s.p1", 0x0000, 0x010000, CRC(dce2e5be) SHA1(3c218cdb939d5b7cc650c820737ae3ac653435ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1)" )
+GAME_CUSTOM( 199?, m4tutfrt__w, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01ad.p1", 0x0000, 0x010000, CRC(acb1bfb3) SHA1(8aa22c45d98ecec324fa031b46689496f9a2842c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 AD)" )
+GAME_CUSTOM( 199?, m4tutfrt__x, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01b.p1", 0x0000, 0x010000, CRC(a0d14e25) SHA1(16f2444334608702748a3b0b2556ac1a7760615a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 B)" )
+GAME_CUSTOM( 199?, m4tutfrt__y, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01bd.p1", 0x0000, 0x010000, CRC(9aadd2f9) SHA1(4dbff4f6fd4d02778733eb846a354177f0e204a5), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 BD)" )
+GAME_CUSTOM( 199?, m4tutfrt__z, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01c.p1", 0x0000, 0x010000, CRC(a3ad34d5) SHA1(e8c435f80b4fd3f7af16f341e107a85a33f1fe1c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 C)" )
+GAME_CUSTOM( 199?, m4tutfrt__0, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01d.p1", 0x0000, 0x010000, CRC(c6790301) SHA1(fb0b619e75e1227f4d293b613e80d8d653517eec), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 D)" )
+GAME_CUSTOM( 199?, m4tutfrt__1, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01dk.p1", 0x0000, 0x010000, CRC(ee0554fe) SHA1(12cd26d6205fec35590fd23682c578f06466eb01), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 KD)" )
+GAME_CUSTOM( 199?, m4tutfrt__2, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01dr.p1", 0x0000, 0x010000, CRC(32d761eb) SHA1(aa1098629d2a1c98c606a71a7cf0ae97f381aebe), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 RD)" )
+GAME_CUSTOM( 199?, m4tutfrt__3, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01dy.p1", 0x0000, 0x010000, CRC(3ad66969) SHA1(4c79edc52095cfa1fae8215caaaaf434cd38199d), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 YD)" )
+GAME_CUSTOM( 199?, m4tutfrt__4, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01k.p1", 0x0000, 0x010000, CRC(2b6c0f0f) SHA1(64e50adc6656225c9cdaaee64ae59cafcd1623ee), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 K)" )
+GAME_CUSTOM( 199?, m4tutfrt__5, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01r.p1", 0x0000, 0x010000, CRC(93cb1bfb) SHA1(e29439caed4a2f4512e50ff158427b61b5a9c4a9), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 R)" )
+GAME_CUSTOM( 199?, m4tutfrt__7, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "f3u01y.p1", 0x0000, 0x010000, CRC(9aae0ca2) SHA1(83192225d886848ee0320973fb9dbd85cf9045b8), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 Y)" )
// expects chr sequence starting 00 30 10 44 70 10 44 30 54 14 40 74 10 40 (cosmiccasino) (same as some 10 X 10 and Cosmic Casio sets?)
// "(C)1991 BARCREST" and "TF4 0.4" (TFT 0.4 on startup)
-GAME_CUSTOM( 199?, m4tutfrt, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04s.p1", 0x0000, 0x010000, CRC(c20c3589) SHA1(55d1bc5d5f4ae14acafb36bd640faaf4ffccc6eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__ai, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04ad.p1", 0x0000, 0x010000, CRC(2994aa14) SHA1(af0e618f24cdedd14e3a347701313360d9fc73d1), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 AD / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__aj, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04b.p1", 0x0000, 0x010000, CRC(e95eab06) SHA1(70e85e38493ac1fd30a79582bab45af5227d835a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 B / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__ak, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04bd.p1", 0x0000, 0x010000, CRC(060d3572) SHA1(e78b6248d3aef6cd08f4b30e0b00bd4cf254e630), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 BD / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__al, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04c.p1", 0x0000, 0x010000, CRC(3499fe77) SHA1(3f82ca6d856bddf82581790c46abf725963335a0), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 C / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__am, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04d.p1", 0x0000, 0x010000, CRC(10626059) SHA1(c7b2fd2b65946fe82950ff506a56bd08b7c2ef71), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 D / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__an, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04dk.p1", 0x0000, 0x010000, CRC(40700fe2) SHA1(1f121adae094c2d11a66b5e8ae4b026e85fc7f73), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 KD / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__ao, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04dr.p1", 0x0000, 0x010000, CRC(feeb4417) SHA1(e2f2c55c48067ad67188ff5a75caa08d8726cb77), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 RD / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__ap, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04dy.p1", 0x0000, 0x010000, CRC(63806cf9) SHA1(850c707c65b8dba6b6914389d573a8b7b7b12cdb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 YD / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__aq, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04k.p1", 0x0000, 0x010000, CRC(ffbf53e1) SHA1(a003bb5d94b43d6ae9b45c599cccb0006bd8a89a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 K / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__ar, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04r.p1", 0x0000, 0x010000, CRC(cbf79555) SHA1(0aacb3f28984637919294a18f40858e8f46a18b3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 R / TF4 0.4)" )
-GAME_CUSTOM( 199?, m4tutfrt__as, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tft04y.p1", 0x0000, 0x010000, CRC(569cbdbb) SHA1(8a978dfba876e5a2e12226f5fe55c29b5f079fad), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 Y / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04s.p1", 0x0000, 0x010000, CRC(c20c3589) SHA1(55d1bc5d5f4ae14acafb36bd640faaf4ffccc6eb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__ai, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04ad.p1", 0x0000, 0x010000, CRC(2994aa14) SHA1(af0e618f24cdedd14e3a347701313360d9fc73d1), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 AD / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__aj, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04b.p1", 0x0000, 0x010000, CRC(e95eab06) SHA1(70e85e38493ac1fd30a79582bab45af5227d835a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 B / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__ak, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04bd.p1", 0x0000, 0x010000, CRC(060d3572) SHA1(e78b6248d3aef6cd08f4b30e0b00bd4cf254e630), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 BD / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__al, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04c.p1", 0x0000, 0x010000, CRC(3499fe77) SHA1(3f82ca6d856bddf82581790c46abf725963335a0), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 C / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__am, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04d.p1", 0x0000, 0x010000, CRC(10626059) SHA1(c7b2fd2b65946fe82950ff506a56bd08b7c2ef71), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 D / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__an, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04dk.p1", 0x0000, 0x010000, CRC(40700fe2) SHA1(1f121adae094c2d11a66b5e8ae4b026e85fc7f73), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 KD / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__ao, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04dr.p1", 0x0000, 0x010000, CRC(feeb4417) SHA1(e2f2c55c48067ad67188ff5a75caa08d8726cb77), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 RD / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__ap, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04dy.p1", 0x0000, 0x010000, CRC(63806cf9) SHA1(850c707c65b8dba6b6914389d573a8b7b7b12cdb), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 YD / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__aq, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04k.p1", 0x0000, 0x010000, CRC(ffbf53e1) SHA1(a003bb5d94b43d6ae9b45c599cccb0006bd8a89a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 K / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__ar, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04r.p1", 0x0000, 0x010000, CRC(cbf79555) SHA1(0aacb3f28984637919294a18f40858e8f46a18b3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 R / TF4 0.4)" )
+GAME_CUSTOM( 199?, m4tutfrt__as, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tft04y.p1", 0x0000, 0x010000, CRC(569cbdbb) SHA1(8a978dfba876e5a2e12226f5fe55c29b5f079fad), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 Y / TF4 0.4)" )
// "(C)1991 BARCREST" and "CTU 0.1"
-GAME_CUSTOM( 199?, m4tutfrt__i, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctus.p1", 0x0000, 0x010000, CRC(1b282170) SHA1(e3082aed6e96587de56c5593d32d0129c47fe667), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1)" )
-GAME_CUSTOM( 199?, m4tutfrt__a, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctuad.p1", 0x0000, 0x010000, CRC(0ec1661b) SHA1(162ddc30c341fd8eda8ce57a60edf06b4e39a24f), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 AD)" )
-GAME_CUSTOM( 199?, m4tutfrt__b, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctub.p1", 0x0000, 0x010000, CRC(f4289621) SHA1(a4078552146c88c05845cbdcd551e4564840fea4), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 B)" )
-GAME_CUSTOM( 199?, m4tutfrt__c, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctubd.p1", 0x0000, 0x010000, CRC(38dd0b51) SHA1(04df9511f366cc575a1a06d3a5d60ec0245f64a7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 BD)" )
-GAME_CUSTOM( 199?, m4tutfrt__d, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctud.p1", 0x0000, 0x010000, CRC(6033fae5) SHA1(f5bdd1821344d4546eea8caa52d76e3bd509810e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 D)" )
-GAME_CUSTOM( 199?, m4tutfrt__e, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctudk.p1", 0x0000, 0x010000, CRC(36dd1e41) SHA1(ad5ad7cae12634149d38e286e6873b81bda52871), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 KD)" )
-GAME_CUSTOM( 199?, m4tutfrt__f, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctudy.p1", 0x0000, 0x010000, CRC(58c02db6) SHA1(faf85caeaa0678b5771d801cf3d9645d7767767c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 YD)" )
-GAME_CUSTOM( 199?, m4tutfrt__g, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctuk.p1", 0x0000, 0x010000, CRC(4c247447) SHA1(f5aebb4a75632c9a74dca1f3e9559399c89ac679), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 K)" )
-GAME_CUSTOM( 199?, m4tutfrt__h, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctur.p1", 0x0000, 0x010000, CRC(705a2b52) SHA1(40b0738146d073f93877a15f63830ff3e07814c1), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 R)" )
-GAME_CUSTOM( 199?, m4tutfrt__j, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "ctuy.p1", 0x0000, 0x010000, CRC(ed3103bc) SHA1(eefb72728e026fad3dd031665510ee0aba23e14b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 Y)" )
+GAME_CUSTOM( 199?, m4tutfrt__i, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctus.p1", 0x0000, 0x010000, CRC(1b282170) SHA1(e3082aed6e96587de56c5593d32d0129c47fe667), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1)" )
+GAME_CUSTOM( 199?, m4tutfrt__a, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctuad.p1", 0x0000, 0x010000, CRC(0ec1661b) SHA1(162ddc30c341fd8eda8ce57a60edf06b4e39a24f), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 AD)" )
+GAME_CUSTOM( 199?, m4tutfrt__b, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctub.p1", 0x0000, 0x010000, CRC(f4289621) SHA1(a4078552146c88c05845cbdcd551e4564840fea4), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 B)" )
+GAME_CUSTOM( 199?, m4tutfrt__c, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctubd.p1", 0x0000, 0x010000, CRC(38dd0b51) SHA1(04df9511f366cc575a1a06d3a5d60ec0245f64a7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 BD)" )
+GAME_CUSTOM( 199?, m4tutfrt__d, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctud.p1", 0x0000, 0x010000, CRC(6033fae5) SHA1(f5bdd1821344d4546eea8caa52d76e3bd509810e), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 D)" )
+GAME_CUSTOM( 199?, m4tutfrt__e, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctudk.p1", 0x0000, 0x010000, CRC(36dd1e41) SHA1(ad5ad7cae12634149d38e286e6873b81bda52871), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 KD)" )
+GAME_CUSTOM( 199?, m4tutfrt__f, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctudy.p1", 0x0000, 0x010000, CRC(58c02db6) SHA1(faf85caeaa0678b5771d801cf3d9645d7767767c), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 YD)" )
+GAME_CUSTOM( 199?, m4tutfrt__g, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctuk.p1", 0x0000, 0x010000, CRC(4c247447) SHA1(f5aebb4a75632c9a74dca1f3e9559399c89ac679), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 K)" )
+GAME_CUSTOM( 199?, m4tutfrt__h, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctur.p1", 0x0000, 0x010000, CRC(705a2b52) SHA1(40b0738146d073f93877a15f63830ff3e07814c1), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 R)" )
+GAME_CUSTOM( 199?, m4tutfrt__j, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "ctuy.p1", 0x0000, 0x010000, CRC(ed3103bc) SHA1(eefb72728e026fad3dd031665510ee0aba23e14b), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 Y)" )
// "(C)1991 BARCREST" and "TF4 0.2"
-GAME_CUSTOM( 199?, m4tutfrt__af, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4s.p1", 0x0000, 0x010000, CRC(2d298c58) SHA1(568c2babdb002da871df7a36d16e4f7810cac265), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2)" )
-GAME_CUSTOM( 199?, m4tutfrt__8, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4ad.p1", 0x0000, 0x010000, CRC(6ddc90a9) SHA1(76dd22c5e65fc46360123e200016d11a8946d2f3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 AD)" )
-GAME_CUSTOM( 199?, m4tutfrt__9, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4b.p1", 0x0000, 0x010000, CRC(c3a70eac) SHA1(ea5a39e33af96e84ce0ea184850d5f580dbf19ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 B)" )
-GAME_CUSTOM( 199?, m4tutfrt__aa, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4bd.p1", 0x0000, 0x010000, CRC(54ae2498) SHA1(54a63a0de794eb2ce321f79b09a56485d9e77715), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 BD)" )
-GAME_CUSTOM( 199?, m4tutfrt__ab, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4d.p1", 0x0000, 0x010000, CRC(d8ff9045) SHA1(ae7307212614c6f1b4e3d72d3a1ae68ca1d0b470), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 D)" )
-GAME_CUSTOM( 199?, m4tutfrt__ac, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4dk.p1", 0x0000, 0x010000, CRC(a2e3b67f) SHA1(dea9958caba08b5cdec6eec9e4c17038ecb0ca55), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 KD)" )
-GAME_CUSTOM( 199?, m4tutfrt__ad, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4dy.p1", 0x0000, 0x010000, CRC(ff4f26c4) SHA1(21ef226bf92deeab15c9368d707bf75b7104e7c3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 YD)" )
-GAME_CUSTOM( 199?, m4tutfrt__ae, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4k.p1", 0x0000, 0x010000, CRC(1a4eb247) SHA1(f6b4c85dd8b155b672bd96ea7ee6630df773c6ca), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 K)" )
-GAME_CUSTOM( 199?, m4tutfrt__ag, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, init_m4default, "tf4y.p1", 0x0000, 0x010000, CRC(06cd8b06) SHA1(92205e9edd42f80de67d5d6652de8ea80bc60af7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 Y)" )
+GAME_CUSTOM( 199?, m4tutfrt__af, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4s.p1", 0x0000, 0x010000, CRC(2d298c58) SHA1(568c2babdb002da871df7a36d16e4f7810cac265), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2)" )
+GAME_CUSTOM( 199?, m4tutfrt__8, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4ad.p1", 0x0000, 0x010000, CRC(6ddc90a9) SHA1(76dd22c5e65fc46360123e200016d11a8946d2f3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 AD)" )
+GAME_CUSTOM( 199?, m4tutfrt__9, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4b.p1", 0x0000, 0x010000, CRC(c3a70eac) SHA1(ea5a39e33af96e84ce0ea184850d5f580dbf19ce), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 B)" )
+GAME_CUSTOM( 199?, m4tutfrt__aa, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4bd.p1", 0x0000, 0x010000, CRC(54ae2498) SHA1(54a63a0de794eb2ce321f79b09a56485d9e77715), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 BD)" )
+GAME_CUSTOM( 199?, m4tutfrt__ab, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4d.p1", 0x0000, 0x010000, CRC(d8ff9045) SHA1(ae7307212614c6f1b4e3d72d3a1ae68ca1d0b470), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 D)" )
+GAME_CUSTOM( 199?, m4tutfrt__ac, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4dk.p1", 0x0000, 0x010000, CRC(a2e3b67f) SHA1(dea9958caba08b5cdec6eec9e4c17038ecb0ca55), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 KD)" )
+GAME_CUSTOM( 199?, m4tutfrt__ad, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4dy.p1", 0x0000, 0x010000, CRC(ff4f26c4) SHA1(21ef226bf92deeab15c9368d707bf75b7104e7c3), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 YD)" )
+GAME_CUSTOM( 199?, m4tutfrt__ae, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4k.p1", 0x0000, 0x010000, CRC(1a4eb247) SHA1(f6b4c85dd8b155b672bd96ea7ee6630df773c6ca), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 K)" )
+GAME_CUSTOM( 199?, m4tutfrt__ag, m4tutfrt, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1), mpu4, init_m4, "tf4y.p1", 0x0000, 0x010000, CRC(06cd8b06) SHA1(92205e9edd42f80de67d5d6652de8ea80bc60af7), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 Y)" )
// different protection
// "I.G.T SUCKS" and "F2U 0.1"
-GAME_CUSTOM( 199?, m4tutfrt__at, m4tutfrt, mod4oki_bootleg_fixedret<0x58>, mpu4, init_m4default, "tut25.bin", 0x0000, 0x010000, CRC(c98fb5bb) SHA1(1a3bc343a38b5978a919b454e9a2e806dce7a78a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B, hack, set 1)" )
+GAME_CUSTOM( 199?, m4tutfrt__at, m4tutfrt, mod4oki_bootleg_fixedret<0x58>(R4, RT1), mpu4, init_m4, "tut25.bin", 0x0000, 0x010000, CRC(c98fb5bb) SHA1(1a3bc343a38b5978a919b454e9a2e806dce7a78a), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B, hack, set 1)" )
// unprotected, doesn't read from chr
-GAME_CUSTOM( 199?, m4tutfrt__au, m4tutfrt, mod4oki, mpu4, init_m4default, "tut25patched.bin", 0x0000, 0x010000, CRC(b4443cf5) SHA1(e79ec52730146f1591140555b814cbd20b5dfe78), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B, hack, set 2)" )
+GAME_CUSTOM( 199?, m4tutfrt__au, m4tutfrt, mod4oki(R4, RT1), mpu4, init_m4, "tut25patched.bin", 0x0000, 0x010000, CRC(b4443cf5) SHA1(e79ec52730146f1591140555b814cbd20b5dfe78), "Barcrest","Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B, hack, set 2)" )
@@ -3604,7 +3579,7 @@ GAME_CUSTOM( 199?, m4tutfrt__au, m4tutfrt, mod4oki, mpu4, init_m4default, "tu
ROM_LOAD( name, offset, length, hash ) \
M4CASHAT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// boot to 'wrong sound, need v1' with tri98.chr, and can be started
// "(C)1993 BARCREST" and "CSA 1.2" // yes D comes first many times in these as the flag is earlier
@@ -3643,7 +3618,7 @@ GAME_CUSTOM( 199?, m4cashat__z, m4cashat, "caa23y.p1", 0x0000, 0x020
ROM_LOAD( name, offset, length, hash ) \
M4CASHAT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::milclb_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CSA 1.1"
@@ -3682,7 +3657,7 @@ GAME_CUSTOM( 199?, m4cashat__m, m4cashat, "caa22y.p1", 0x0000, 0x020
ROM_LOAD( name, offset, length, hash ) \
M4CASHAT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -3699,7 +3674,7 @@ GAME_CUSTOM( 199?, m4cashat__2, m4cashat, "catt15t", 0x0000, 0x020
ROM_LOAD( name, offset, length, hash ) \
M4CASHAT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x68>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x68>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and "CAA 2.3"
GAME_CUSTOM( 199?, m4cashat__0, m4cashat, "casattack8.bin", 0x0000, 0x020000, CRC(e29ea247) SHA1(ad00ea3bfd2eab51b20fd786cb1ce84de0d98173), "hack","Cash Attack (Barcrest) (MPU4) (CAA 2.3, hack, set 1)" )
@@ -3733,128 +3708,128 @@ GAME_CUSTOM( 199?, m4cashat__0, m4cashat, "casattack8.bin", 0x0000, 0x020
//
// "(C)1991 BARCREST" and "CR4 0.2" (HHN 0.2 on startup)
-GAME_CUSTOM( 199?, m4rhr__i, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rhr15.hex", 0x0000, 0x010000, CRC(895ebbda) SHA1(f2117e743a30f3c9fc6af7fd7843bc333699db9d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.2 KD / CR4 0.2)" )
+GAME_CUSTOM( 199?, m4rhr__i, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhr15.hex", 0x0000, 0x010000, CRC(895ebbda) SHA1(f2117e743a30f3c9fc6af7fd7843bc333699db9d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.2 KD / CR4 0.2)" )
// "(C)1991 BARCREST" and "CRU 0.3" (CLD 0.3 on startup)
-GAME_CUSTOM( 199?, m4rhrc, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03s.p1", 0x0000, 0x010000, CRC(03f8a6bf) SHA1(29ee59fd60d89fca0f236be8b4c12c885db032e7), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__j, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03ad.p1", 0x0000, 0x010000, CRC(821fde63) SHA1(61f77eeb01331e735cc8c736526d09371e6bdf56), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 AD / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__a, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03b.p1", 0x0000, 0x010000, CRC(c67a2e82) SHA1(b76110c73d5bd0290fdd31d8300914f63a56c25e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 B / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__b, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03bd.p1", 0x0000, 0x010000, CRC(0995fd93) SHA1(c3cc84f78adc54f4698280bf7d0831bb54c3fc3f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 BD / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__c, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03c.p1", 0x0000, 0x010000, CRC(6e7b319f) SHA1(3da4feb72cb9d4ee24a8e0568f8d9c80a71caf9b), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 C / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__d, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03d.p1", 0x0000, 0x010000, CRC(dc46afb0) SHA1(c461ac2ef3fcffac96536b1b1c26abe052edf35c), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 D / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__e, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03dk.p1", 0x0000, 0x010000, CRC(f0b6b60f) SHA1(9addae6af20986c92c3ce71ce9756a6f3db5ebff), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 KD / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__f, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03dr.p1", 0x0000, 0x010000, CRC(703ab87b) SHA1(089597927f94bdacc4226900a944cbec85fe2286), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 RD / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__g, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03dy.p1", 0x0000, 0x010000, CRC(ed519095) SHA1(ac174166bf2cc6ab81f9782f1be4a9fbe226f34d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 YD / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__h, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03k.p1", 0x0000, 0x010000, CRC(3bad05a9) SHA1(1b00ac52f6c87b5c79088b6fc3e6d00f57876ebc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 K / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__i, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03r.p1", 0x0000, 0x010000, CRC(2de70bdc) SHA1(d8d0170ca71fde4c79d0b465d09d4bb31acf40cf), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 R / CRU 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__k, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cld03y.p1", 0x0000, 0x010000, CRC(b08c2332) SHA1(1cdf7fc0e95a50766df2d1cd51cb803b922c30c8), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 Y / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03s.p1", 0x0000, 0x010000, CRC(03f8a6bf) SHA1(29ee59fd60d89fca0f236be8b4c12c885db032e7), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__j, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03ad.p1", 0x0000, 0x010000, CRC(821fde63) SHA1(61f77eeb01331e735cc8c736526d09371e6bdf56), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 AD / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__a, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03b.p1", 0x0000, 0x010000, CRC(c67a2e82) SHA1(b76110c73d5bd0290fdd31d8300914f63a56c25e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 B / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__b, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03bd.p1", 0x0000, 0x010000, CRC(0995fd93) SHA1(c3cc84f78adc54f4698280bf7d0831bb54c3fc3f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 BD / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__c, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03c.p1", 0x0000, 0x010000, CRC(6e7b319f) SHA1(3da4feb72cb9d4ee24a8e0568f8d9c80a71caf9b), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 C / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__d, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03d.p1", 0x0000, 0x010000, CRC(dc46afb0) SHA1(c461ac2ef3fcffac96536b1b1c26abe052edf35c), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 D / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__e, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03dk.p1", 0x0000, 0x010000, CRC(f0b6b60f) SHA1(9addae6af20986c92c3ce71ce9756a6f3db5ebff), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 KD / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__f, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03dr.p1", 0x0000, 0x010000, CRC(703ab87b) SHA1(089597927f94bdacc4226900a944cbec85fe2286), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 RD / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__g, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03dy.p1", 0x0000, 0x010000, CRC(ed519095) SHA1(ac174166bf2cc6ab81f9782f1be4a9fbe226f34d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 YD / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__h, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03k.p1", 0x0000, 0x010000, CRC(3bad05a9) SHA1(1b00ac52f6c87b5c79088b6fc3e6d00f57876ebc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 K / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__i, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03r.p1", 0x0000, 0x010000, CRC(2de70bdc) SHA1(d8d0170ca71fde4c79d0b465d09d4bb31acf40cf), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 R / CRU 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__k, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cld03y.p1", 0x0000, 0x010000, CRC(b08c2332) SHA1(1cdf7fc0e95a50766df2d1cd51cb803b922c30c8), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 Y / CRU 0.3)" )
// "(C)1991 BARCREST" and "CR4 0.3" (HHN 0.3 on startup)
-GAME_CUSTOM( 199?, m4rhrc__v, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03s.p1", 0x0000, 0x010000, CRC(b531ae78) SHA1(87d043541c23b88b8ec4067c67be77812095faaa), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__l, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03ad.p1", 0x0000, 0x010000, CRC(e7da568e) SHA1(00f9eecd06131bc5770a6ab650b3548f5b7a8c15), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 AD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__m, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03b.p1", 0x0000, 0x010000, CRC(406e47cd) SHA1(193aed33ac62eb04d89cf63beb33e8e4e28e286e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 B / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__n, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03bd.p1", 0x0000, 0x010000, CRC(66aed369) SHA1(6c3151790292a277a1d44a1fceae985e52014749), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 BD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__o, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03c.p1", 0x0000, 0x010000, CRC(452e623c) SHA1(9350d7e30d8fc2b0f37528a7d0ce6797bab6f504), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 C / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__p, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03d.p1", 0x0000, 0x010000, CRC(e9ce4ee5) SHA1(45fe3832cc37e8ecbc5101b8b7b94f6243504e3f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 D / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__q, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03dk.p1", 0x0000, 0x010000, CRC(2d750f34) SHA1(1672d5a8b4a338cac87281e1329f111f468dc611), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 KD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__r, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03dr.p1", 0x0000, 0x010000, CRC(88a3895b) SHA1(3e2dcf6728712620724774c16a5d84dbec9c5ab3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 RD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__s, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03dy.p1", 0x0000, 0x010000, CRC(15c8a1b5) SHA1(5a2f28f290fa087b5010f778d4ad8d6c63a3d13e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 YD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__t, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03k.p1", 0x0000, 0x010000, CRC(95450230) SHA1(3c1c239e84a89ef6acd44ac9c81d33021ac6b0e3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 K / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__u, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03r.p1", 0x0000, 0x010000, CRC(d96d6825) SHA1(89c3f5494d97326369f10c982842310592456874), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 R / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__w, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "hhn03y.p1", 0x0000, 0x010000, CRC(440640cb) SHA1(de6b6edcdc99aaa0122ecd24a9a7437e6b44aad2), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 Y / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__v, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03s.p1", 0x0000, 0x010000, CRC(b531ae78) SHA1(87d043541c23b88b8ec4067c67be77812095faaa), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__l, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03ad.p1", 0x0000, 0x010000, CRC(e7da568e) SHA1(00f9eecd06131bc5770a6ab650b3548f5b7a8c15), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 AD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__m, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03b.p1", 0x0000, 0x010000, CRC(406e47cd) SHA1(193aed33ac62eb04d89cf63beb33e8e4e28e286e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 B / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__n, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03bd.p1", 0x0000, 0x010000, CRC(66aed369) SHA1(6c3151790292a277a1d44a1fceae985e52014749), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 BD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__o, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03c.p1", 0x0000, 0x010000, CRC(452e623c) SHA1(9350d7e30d8fc2b0f37528a7d0ce6797bab6f504), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 C / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__p, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03d.p1", 0x0000, 0x010000, CRC(e9ce4ee5) SHA1(45fe3832cc37e8ecbc5101b8b7b94f6243504e3f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 D / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__q, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03dk.p1", 0x0000, 0x010000, CRC(2d750f34) SHA1(1672d5a8b4a338cac87281e1329f111f468dc611), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 KD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__r, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03dr.p1", 0x0000, 0x010000, CRC(88a3895b) SHA1(3e2dcf6728712620724774c16a5d84dbec9c5ab3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 RD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__s, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03dy.p1", 0x0000, 0x010000, CRC(15c8a1b5) SHA1(5a2f28f290fa087b5010f778d4ad8d6c63a3d13e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 YD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__t, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03k.p1", 0x0000, 0x010000, CRC(95450230) SHA1(3c1c239e84a89ef6acd44ac9c81d33021ac6b0e3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 K / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__u, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03r.p1", 0x0000, 0x010000, CRC(d96d6825) SHA1(89c3f5494d97326369f10c982842310592456874), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 R / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__w, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "hhn03y.p1", 0x0000, 0x010000, CRC(440640cb) SHA1(de6b6edcdc99aaa0122ecd24a9a7437e6b44aad2), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 Y / CR4 0.3)" )
// "(C)1991 BARCREST" and "CR4 0.3" (RRD 0.3 on startup)
-GAME_CUSTOM( 199?, m4rhrc__7, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03s.p1", 0x0000, 0x010000, CRC(e59b79dd) SHA1(32e515bdc861a4d548caedd56a1825c91a318a34), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__x, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03ad.p1", 0x0000, 0x010000, CRC(6f49d7d1) SHA1(2195a3ad4836e8ffd2e7e6a90e94319d5a5a0ce8), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 AD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__y, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03b.p1", 0x0000, 0x010000, CRC(e8447a3d) SHA1(8bf5936782e0fbec25a8ef892b8df04b6543bc74), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 B / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__z, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03bd.p1", 0x0000, 0x010000, CRC(52cf0357) SHA1(ab4668df6d5ad9614410aede7ad4e030283b78ca), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 BD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__0, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03c.p1", 0x0000, 0x010000, CRC(b03e7b76) SHA1(0b2779b584f8fa0e25e2a5248ecb8fb88aa53413), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 AC/ CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__1, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03d.p1", 0x0000, 0x010000, CRC(44740c79) SHA1(ab1efb2090ef62795c17a685c7acb45820eb1a9d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 D / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__2, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03dk.p1", 0x0000, 0x010000, CRC(78f18187) SHA1(33764416c6e5cccd6ae5fdc5c0d679e1ef451785), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 KD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__3, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03dr.p1", 0x0000, 0x010000, CRC(039c2869) SHA1(2eb887b36d86295d0e6aacc74d0a6223d32baa5a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 RD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__4, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03dy.p1", 0x0000, 0x010000, CRC(b60b6e51) SHA1(eb6ed1de44d7c982ac8aa0621d4c1ed8e41db5de), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 YD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__5, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03k.p1", 0x0000, 0x010000, CRC(31adc6d6) SHA1(ea68d0d13978bf6cfa7fb9aa1cf91ddfd6258a3a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 K / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__6, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03r.p1", 0x0000, 0x010000, CRC(11c61483) SHA1(66cd30096bca2f4356acaaa15179c00301c8bc3a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 R / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhrc__8, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "rrd03y.p1", 0x0000, 0x010000, CRC(66fff07a) SHA1(586279533d6d85abf7e97124c9c5342a6a1b0496), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 Y / CR4 0.3)" )
-
-GAME_CUSTOM( 199?, m4rhrc__9, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "cru0_2.bin", 0x0000, 0x010000, CRC(e3c01944) SHA1(33a2b2c05686f53811349b2980e590fdc4b72756), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.2C)" )
+GAME_CUSTOM( 199?, m4rhrc__7, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03s.p1", 0x0000, 0x010000, CRC(e59b79dd) SHA1(32e515bdc861a4d548caedd56a1825c91a318a34), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__x, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03ad.p1", 0x0000, 0x010000, CRC(6f49d7d1) SHA1(2195a3ad4836e8ffd2e7e6a90e94319d5a5a0ce8), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 AD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__y, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03b.p1", 0x0000, 0x010000, CRC(e8447a3d) SHA1(8bf5936782e0fbec25a8ef892b8df04b6543bc74), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 B / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__z, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03bd.p1", 0x0000, 0x010000, CRC(52cf0357) SHA1(ab4668df6d5ad9614410aede7ad4e030283b78ca), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 BD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__0, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03c.p1", 0x0000, 0x010000, CRC(b03e7b76) SHA1(0b2779b584f8fa0e25e2a5248ecb8fb88aa53413), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 AC/ CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__1, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03d.p1", 0x0000, 0x010000, CRC(44740c79) SHA1(ab1efb2090ef62795c17a685c7acb45820eb1a9d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 D / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__2, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03dk.p1", 0x0000, 0x010000, CRC(78f18187) SHA1(33764416c6e5cccd6ae5fdc5c0d679e1ef451785), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 KD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__3, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03dr.p1", 0x0000, 0x010000, CRC(039c2869) SHA1(2eb887b36d86295d0e6aacc74d0a6223d32baa5a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 RD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__4, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03dy.p1", 0x0000, 0x010000, CRC(b60b6e51) SHA1(eb6ed1de44d7c982ac8aa0621d4c1ed8e41db5de), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 YD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__5, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03k.p1", 0x0000, 0x010000, CRC(31adc6d6) SHA1(ea68d0d13978bf6cfa7fb9aa1cf91ddfd6258a3a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 K / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__6, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03r.p1", 0x0000, 0x010000, CRC(11c61483) SHA1(66cd30096bca2f4356acaaa15179c00301c8bc3a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 R / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhrc__8, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "rrd03y.p1", 0x0000, 0x010000, CRC(66fff07a) SHA1(586279533d6d85abf7e97124c9c5342a6a1b0496), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 Y / CR4 0.3)" )
+
+GAME_CUSTOM( 199?, m4rhrc__9, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "cru0_2.bin", 0x0000, 0x010000, CRC(e3c01944) SHA1(33a2b2c05686f53811349b2980e590fdc4b72756), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CLD 0.2C)" )
// "(C)1991 BARCREST" and "CR4 0.9"
-GAME_CUSTOM( 199?, m4rhr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4s.p1", 0x0000, 0x010000, CRC(836c3e49) SHA1(34dde2fd4fe82ab4a9e16dcf7915705f7b8a007f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9)" )
-GAME_CUSTOM( 199?, m4rhr__a, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4ad.p1", 0x0000, 0x010000, CRC(b99b3d14) SHA1(2ff68b33881e9b3c2db48c335ccbad783013084a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 AD)" )
-GAME_CUSTOM( 199?, m4rhr__b, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4b.p1", 0x0000, 0x010000, CRC(ae2691b8) SHA1(360c5c3d94bf85cf5ead114dd570ea6c61082aa9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 B)" )
-GAME_CUSTOM( 199?, m4rhr__c, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4bd.p1", 0x0000, 0x010000, CRC(9ba444bf) SHA1(adebf23827a5ac5e3a6d56e3352e0d3f3dc809c0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 BD)" )
-GAME_CUSTOM( 199?, m4rhr__d, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4d.p1", 0x0000, 0x010000, CRC(ad9fe2a6) SHA1(e490c5c949559cc222d8491989196b10373ff043), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 D)" )
-GAME_CUSTOM( 199?, m4rhr__e, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4dk.p1", 0x0000, 0x010000, CRC(200486b4) SHA1(3916e131801c44985668ccd57dc3e812268f9417), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 KD)" )
-GAME_CUSTOM( 199?, m4rhr__f, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4dy.p1", 0x0000, 0x010000, CRC(5b5ebe79) SHA1(6c72271258e6b951f2d6c815cfef5032e23cf7bc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 YD)" )
-GAME_CUSTOM( 199?, m4rhr__g, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4k.p1", 0x0000, 0x010000, CRC(2cc956e8) SHA1(37fad3d3b9460763ba4d8f569ee71778f9907853), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 K)" )
-GAME_CUSTOM( 199?, m4rhr__h, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr4y.p1", 0x0000, 0x010000, CRC(5a3588e8) SHA1(b25156f38fb67dc1f1e36a50af0a9b93882572d0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 Y)" )
+GAME_CUSTOM( 199?, m4rhr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4s.p1", 0x0000, 0x010000, CRC(836c3e49) SHA1(34dde2fd4fe82ab4a9e16dcf7915705f7b8a007f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9)" )
+GAME_CUSTOM( 199?, m4rhr__a, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4ad.p1", 0x0000, 0x010000, CRC(b99b3d14) SHA1(2ff68b33881e9b3c2db48c335ccbad783013084a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 AD)" )
+GAME_CUSTOM( 199?, m4rhr__b, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4b.p1", 0x0000, 0x010000, CRC(ae2691b8) SHA1(360c5c3d94bf85cf5ead114dd570ea6c61082aa9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 B)" )
+GAME_CUSTOM( 199?, m4rhr__c, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4bd.p1", 0x0000, 0x010000, CRC(9ba444bf) SHA1(adebf23827a5ac5e3a6d56e3352e0d3f3dc809c0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 BD)" )
+GAME_CUSTOM( 199?, m4rhr__d, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4d.p1", 0x0000, 0x010000, CRC(ad9fe2a6) SHA1(e490c5c949559cc222d8491989196b10373ff043), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 D)" )
+GAME_CUSTOM( 199?, m4rhr__e, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4dk.p1", 0x0000, 0x010000, CRC(200486b4) SHA1(3916e131801c44985668ccd57dc3e812268f9417), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 KD)" )
+GAME_CUSTOM( 199?, m4rhr__f, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4dy.p1", 0x0000, 0x010000, CRC(5b5ebe79) SHA1(6c72271258e6b951f2d6c815cfef5032e23cf7bc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 YD)" )
+GAME_CUSTOM( 199?, m4rhr__g, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4k.p1", 0x0000, 0x010000, CRC(2cc956e8) SHA1(37fad3d3b9460763ba4d8f569ee71778f9907853), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 K)" )
+GAME_CUSTOM( 199?, m4rhr__h, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr4y.p1", 0x0000, 0x010000, CRC(5a3588e8) SHA1(b25156f38fb67dc1f1e36a50af0a9b93882572d0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 Y)" )
// "(C)1991 BARCREST" and "CR4 0.3" (CRT 0.3 on startup)
-GAME_CUSTOM( 199?, m4rhr__t, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03s.p1", 0x0000, 0x010000, CRC(2b4c24d2) SHA1(94b19b0e8090dbbde2c67d5949f19d4050972fb1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__j, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03ad.p1", 0x0000, 0x010000, CRC(5b779273) SHA1(b9a278cc6b4af622af35f7d4fdacdca54c94a47f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 AD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__k, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03b.p1", 0x0000, 0x010000, CRC(da5b3fa3) SHA1(66c570a193665ae0df4542112547fa6f5f9b7b79), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 B / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__l, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03bd.p1", 0x0000, 0x010000, CRC(6d6bff39) SHA1(08f4235bb2cadcc49c13991fe3e2c806c0be801d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 BD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__m, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03c.p1", 0x0000, 0x010000, CRC(a5b38945) SHA1(31351667d471c107ade58e97fe5657632d91be80), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 C / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__n, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03d.p1", 0x0000, 0x010000, CRC(7f39cf9d) SHA1(6f8a1660a253cf7f49ba589b3847ca3dc5a9b4ee), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 D / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__o, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03dk.p1", 0x0000, 0x010000, CRC(32933785) SHA1(0ae9b8823ed8c914da0a64913afdf3c348142804), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 KD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__p, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03dr.p1", 0x0000, 0x010000, CRC(2381792a) SHA1(514b9e580d156ec3cfeb460d0895143368e9a360), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 RD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__q, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03dy.p1", 0x0000, 0x010000, CRC(3439dc85) SHA1(092dcd36e2ea43ecf62cfc1bf1498ea7777213dc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 YD / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__r, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03k.p1", 0x0000, 0x010000, CRC(0b841ae9) SHA1(5a78381122a3b718e3f212f30f76dc61e2e3ac5e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 K / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__s, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03r.p1", 0x0000, 0x010000, CRC(2a8bd767) SHA1(a9547ef37da9494bd4ffe5fbb68eca67fe63c3ba), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 R / CR4 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__u, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crt03y.p1", 0x0000, 0x010000, CRC(40c3a105) SHA1(7ad988f71a3523ad2b19fa7d6cdf74d4328fb3e1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 Y / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__t, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03s.p1", 0x0000, 0x010000, CRC(2b4c24d2) SHA1(94b19b0e8090dbbde2c67d5949f19d4050972fb1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__j, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03ad.p1", 0x0000, 0x010000, CRC(5b779273) SHA1(b9a278cc6b4af622af35f7d4fdacdca54c94a47f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 AD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__k, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03b.p1", 0x0000, 0x010000, CRC(da5b3fa3) SHA1(66c570a193665ae0df4542112547fa6f5f9b7b79), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 B / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__l, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03bd.p1", 0x0000, 0x010000, CRC(6d6bff39) SHA1(08f4235bb2cadcc49c13991fe3e2c806c0be801d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 BD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__m, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03c.p1", 0x0000, 0x010000, CRC(a5b38945) SHA1(31351667d471c107ade58e97fe5657632d91be80), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 C / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__n, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03d.p1", 0x0000, 0x010000, CRC(7f39cf9d) SHA1(6f8a1660a253cf7f49ba589b3847ca3dc5a9b4ee), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 D / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__o, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03dk.p1", 0x0000, 0x010000, CRC(32933785) SHA1(0ae9b8823ed8c914da0a64913afdf3c348142804), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 KD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__p, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03dr.p1", 0x0000, 0x010000, CRC(2381792a) SHA1(514b9e580d156ec3cfeb460d0895143368e9a360), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 RD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__q, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03dy.p1", 0x0000, 0x010000, CRC(3439dc85) SHA1(092dcd36e2ea43ecf62cfc1bf1498ea7777213dc), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 YD / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__r, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03k.p1", 0x0000, 0x010000, CRC(0b841ae9) SHA1(5a78381122a3b718e3f212f30f76dc61e2e3ac5e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 K / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__s, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03r.p1", 0x0000, 0x010000, CRC(2a8bd767) SHA1(a9547ef37da9494bd4ffe5fbb68eca67fe63c3ba), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 R / CR4 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__u, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crt03y.p1", 0x0000, 0x010000, CRC(40c3a105) SHA1(7ad988f71a3523ad2b19fa7d6cdf74d4328fb3e1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 Y / CR4 0.3)" )
// "(C)1991 BARCREST" and "CRU 0.1"
-GAME_CUSTOM( 199?, m4rhr__2, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crus.p1", 0x0000, 0x010000, CRC(bf2ff034) SHA1(7ee7ef30da4283dbb2b1b040fdd3313cb2e1b7e5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1)" )
-GAME_CUSTOM( 199?, m4rhr__v, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cruad.p1", 0x0000, 0x010000, CRC(3a680f14) SHA1(cd3c2bf77b148ee4f4ce76b2c1bc142491117890), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 AD)" )
-GAME_CUSTOM( 199?, m4rhr__w, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crub.p1", 0x0000, 0x010000, CRC(4cee9020) SHA1(b919ba28294c39b49e4fcfa54a75e852f9c873ed), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 B)" )
-GAME_CUSTOM( 199?, m4rhr__x, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crubd.p1", 0x0000, 0x010000, CRC(7184b193) SHA1(392cb5887ec988e3aa1cba2491885103da1e503a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 BD)" )
-GAME_CUSTOM( 199?, m4rhr__y, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crud.p1", 0x0000, 0x010000, CRC(2528047f) SHA1(0b07470ff756b003c03fd4a7ff3c1d5f79e8307f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 D)" )
-GAME_CUSTOM( 199?, m4rhr__z, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crudk.p1", 0x0000, 0x010000, CRC(73465d95) SHA1(3eddaee64a681727743b23fd0bec0285ed59a5ef), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 DK)" )
-GAME_CUSTOM( 199?, m4rhr__0, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "crudy.p1", 0x0000, 0x010000, CRC(e08696f9) SHA1(37c97bb22ae0d09657d7d589f76adfbe6fb642e0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 DY)" )
-GAME_CUSTOM( 199?, m4rhr__1, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cruk.p1", 0x0000, 0x010000, CRC(168627f0) SHA1(c6c21f8442ff88736d3fd25860d815beb5a6b845), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 K)" )
-GAME_CUSTOM( 199?, m4rhr__3, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cruy.p1", 0x0000, 0x010000, CRC(edf1346b) SHA1(c250178991885a922f676424e70c637e11089efb), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 Y)" )
+GAME_CUSTOM( 199?, m4rhr__2, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crus.p1", 0x0000, 0x010000, CRC(bf2ff034) SHA1(7ee7ef30da4283dbb2b1b040fdd3313cb2e1b7e5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1)" )
+GAME_CUSTOM( 199?, m4rhr__v, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cruad.p1", 0x0000, 0x010000, CRC(3a680f14) SHA1(cd3c2bf77b148ee4f4ce76b2c1bc142491117890), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 AD)" )
+GAME_CUSTOM( 199?, m4rhr__w, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crub.p1", 0x0000, 0x010000, CRC(4cee9020) SHA1(b919ba28294c39b49e4fcfa54a75e852f9c873ed), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 B)" )
+GAME_CUSTOM( 199?, m4rhr__x, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crubd.p1", 0x0000, 0x010000, CRC(7184b193) SHA1(392cb5887ec988e3aa1cba2491885103da1e503a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 BD)" )
+GAME_CUSTOM( 199?, m4rhr__y, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crud.p1", 0x0000, 0x010000, CRC(2528047f) SHA1(0b07470ff756b003c03fd4a7ff3c1d5f79e8307f), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 D)" )
+GAME_CUSTOM( 199?, m4rhr__z, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crudk.p1", 0x0000, 0x010000, CRC(73465d95) SHA1(3eddaee64a681727743b23fd0bec0285ed59a5ef), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 DK)" )
+GAME_CUSTOM( 199?, m4rhr__0, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "crudy.p1", 0x0000, 0x010000, CRC(e08696f9) SHA1(37c97bb22ae0d09657d7d589f76adfbe6fb642e0), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 DY)" )
+GAME_CUSTOM( 199?, m4rhr__1, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cruk.p1", 0x0000, 0x010000, CRC(168627f0) SHA1(c6c21f8442ff88736d3fd25860d815beb5a6b845), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 K)" )
+GAME_CUSTOM( 199?, m4rhr__3, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cruy.p1", 0x0000, 0x010000, CRC(edf1346b) SHA1(c250178991885a922f676424e70c637e11089efb), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 Y)" )
// "(C)1991 BARCREST" and "RH8 0.1"
-GAME_CUSTOM( 199?, m4rhr__4, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "redhot8.bin", 0x0000, 0x010000, CRC(1dc62d7b) SHA1(640a5b29314a7dc67db271cce06c23c676d77eee), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 K)" )
-GAME_CUSTOM( 1991, m4rhr__a4, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rh8c.p1", 0x0000, 0x010000, CRC(e36d7ca0) SHA1(73970761c5c7004669b02ba9f3a299f36f2d00e9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C)" )
+GAME_CUSTOM( 199?, m4rhr__4, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "redhot8.bin", 0x0000, 0x010000, CRC(1dc62d7b) SHA1(640a5b29314a7dc67db271cce06c23c676d77eee), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 K)" )
+GAME_CUSTOM( 1991, m4rhr__a4, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rh8c.p1", 0x0000, 0x010000, CRC(e36d7ca0) SHA1(73970761c5c7004669b02ba9f3a299f36f2d00e9), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C)" )
// "(C)1991 BARCREST" and "RHR 0.3"
-GAME_CUSTOM( 199?, m4rhr__af, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhrs.p1", 0x0000, 0x010000, CRC(a0e5d5b6) SHA1(c730e6319bbea6f035fb3e249991983783ef5743), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__aa, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhrb.p1", 0x0000, 0x010000, CRC(876fbe46) SHA1(1c7faf68ddef2ccbb8e3cd2cf5c709a7a4f4daef), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 B)" )
-GAME_CUSTOM( 199?, m4rhr__ab, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhrbd.p1", 0x0000, 0x010000, CRC(f0fa0c7b) SHA1(96bfce8ea54e392a36cb8d82a032438bff992f07), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 BD)" )
-GAME_CUSTOM( 199?, m4rhr__ac, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhrc.p1", 0x0000, 0x010000, CRC(76a0e556) SHA1(1a9bae286ca40d8e72022645d006a219f113e31a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 C)" )
-GAME_CUSTOM( 199?, m4rhr__ad, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhrd.p1", 0x0000, 0x010000, CRC(58a5dd6f) SHA1(3646b8cb3d49e8c530e321daad052f27cdf4bb3d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 D)" )
-GAME_CUSTOM( 199?, m4rhr__ae, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhrk.p1", 0x0000, 0x010000, CRC(2212cebb) SHA1(224e7e243b17f3ca90a6daa529984e9a879ff266), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 K)" )
-GAME_CUSTOM( 199?, m4rhr__5, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhr03.r", 0x0000, 0x010000, CRC(98d81b1e) SHA1(17ab0dced53be9755aada7954aff2dc2a6973190), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 R)" )
+GAME_CUSTOM( 199?, m4rhr__af, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhrs.p1", 0x0000, 0x010000, CRC(a0e5d5b6) SHA1(c730e6319bbea6f035fb3e249991983783ef5743), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__aa, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhrb.p1", 0x0000, 0x010000, CRC(876fbe46) SHA1(1c7faf68ddef2ccbb8e3cd2cf5c709a7a4f4daef), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 B)" )
+GAME_CUSTOM( 199?, m4rhr__ab, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhrbd.p1", 0x0000, 0x010000, CRC(f0fa0c7b) SHA1(96bfce8ea54e392a36cb8d82a032438bff992f07), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 BD)" )
+GAME_CUSTOM( 199?, m4rhr__ac, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhrc.p1", 0x0000, 0x010000, CRC(76a0e556) SHA1(1a9bae286ca40d8e72022645d006a219f113e31a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 C)" )
+GAME_CUSTOM( 199?, m4rhr__ad, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhrd.p1", 0x0000, 0x010000, CRC(58a5dd6f) SHA1(3646b8cb3d49e8c530e321daad052f27cdf4bb3d), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 D)" )
+GAME_CUSTOM( 199?, m4rhr__ae, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhrk.p1", 0x0000, 0x010000, CRC(2212cebb) SHA1(224e7e243b17f3ca90a6daa529984e9a879ff266), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 K)" )
+GAME_CUSTOM( 199?, m4rhr__5, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhr03.r", 0x0000, 0x010000, CRC(98d81b1e) SHA1(17ab0dced53be9755aada7954aff2dc2a6973190), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 R)" )
// "(C)1991 BARCREST" and "RHT 0.3"
-GAME_CUSTOM( 199?, m4rhr__ap, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhts.p1", 0x0000, 0x010000, CRC(fecb7076) SHA1(43086c6bfd878d0ca1ec8d45285d3e941a62ac8e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3)" )
-GAME_CUSTOM( 199?, m4rhr__ag, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtad.p1", 0x0000, 0x010000, CRC(ae3a31a0) SHA1(7e1f05a21cf5b3d2aceba755136c567b5d6ecfcd), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 AD)" )
-GAME_CUSTOM( 199?, m4rhr__ah, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtb.p1", 0x0000, 0x010000, CRC(7ceb13c8) SHA1(f0f22149bd0fb12ef06c4c3ecba605df33f52c51), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 B)" )
-GAME_CUSTOM( 199?, m4rhr__ai, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtbd.p1", 0x0000, 0x010000, CRC(e4b290fc) SHA1(bf16d06429d67936118264f6c4f1ae637753d5db), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 BD)" )
-GAME_CUSTOM( 199?, m4rhr__aj, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtd.p1", 0x0000, 0x010000, CRC(a08d508c) SHA1(10efbfb4fc4820313b410ec73f9c32ed048e2228), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 D)" )
-GAME_CUSTOM( 199?, m4rhr__ak, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtdk.p1", 0x0000, 0x010000, CRC(6495681a) SHA1(afd3451402e19c4c4bb8507447d6771323219e80), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 KD)" )
-GAME_CUSTOM( 199?, m4rhr__al, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtdr.p1", 0x0000, 0x010000, CRC(df9e5c83) SHA1(88586852c0773de4ee1b4c627eabf3de27e5c2a1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 RD)" )
-GAME_CUSTOM( 199?, m4rhr__am, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtdy.p1", 0x0000, 0x010000, CRC(42f5746d) SHA1(964bd8801b44de9ea45c43b290b1cd6284e97578), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 YD)" )
-GAME_CUSTOM( 199?, m4rhr__an, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtk.p1", 0x0000, 0x010000, CRC(c3bfb174) SHA1(2579bf17252988de17a1367546ae187420f95cc5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 K)" )
-GAME_CUSTOM( 199?, m4rhr__ao, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhtr.p1", 0x0000, 0x010000, CRC(f53f4876) SHA1(feda495361d384c662554d445a95191a2c52a56a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 R)" )
-GAME_CUSTOM( 199?, m4rhr__aq, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhty.p1", 0x0000, 0x010000, CRC(68546098) SHA1(57981c06efcb44915d8c2d4b6e1cba377c4a8590), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 Y)" )
+GAME_CUSTOM( 199?, m4rhr__ap, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhts.p1", 0x0000, 0x010000, CRC(fecb7076) SHA1(43086c6bfd878d0ca1ec8d45285d3e941a62ac8e), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3)" )
+GAME_CUSTOM( 199?, m4rhr__ag, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtad.p1", 0x0000, 0x010000, CRC(ae3a31a0) SHA1(7e1f05a21cf5b3d2aceba755136c567b5d6ecfcd), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 AD)" )
+GAME_CUSTOM( 199?, m4rhr__ah, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtb.p1", 0x0000, 0x010000, CRC(7ceb13c8) SHA1(f0f22149bd0fb12ef06c4c3ecba605df33f52c51), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 B)" )
+GAME_CUSTOM( 199?, m4rhr__ai, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtbd.p1", 0x0000, 0x010000, CRC(e4b290fc) SHA1(bf16d06429d67936118264f6c4f1ae637753d5db), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 BD)" )
+GAME_CUSTOM( 199?, m4rhr__aj, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtd.p1", 0x0000, 0x010000, CRC(a08d508c) SHA1(10efbfb4fc4820313b410ec73f9c32ed048e2228), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 D)" )
+GAME_CUSTOM( 199?, m4rhr__ak, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtdk.p1", 0x0000, 0x010000, CRC(6495681a) SHA1(afd3451402e19c4c4bb8507447d6771323219e80), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 KD)" )
+GAME_CUSTOM( 199?, m4rhr__al, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtdr.p1", 0x0000, 0x010000, CRC(df9e5c83) SHA1(88586852c0773de4ee1b4c627eabf3de27e5c2a1), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 RD)" )
+GAME_CUSTOM( 199?, m4rhr__am, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtdy.p1", 0x0000, 0x010000, CRC(42f5746d) SHA1(964bd8801b44de9ea45c43b290b1cd6284e97578), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 YD)" )
+GAME_CUSTOM( 199?, m4rhr__an, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtk.p1", 0x0000, 0x010000, CRC(c3bfb174) SHA1(2579bf17252988de17a1367546ae187420f95cc5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 K)" )
+GAME_CUSTOM( 199?, m4rhr__ao, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhtr.p1", 0x0000, 0x010000, CRC(f53f4876) SHA1(feda495361d384c662554d445a95191a2c52a56a), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 R)" )
+GAME_CUSTOM( 199?, m4rhr__aq, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhty.p1", 0x0000, 0x010000, CRC(68546098) SHA1(57981c06efcb44915d8c2d4b6e1cba377c4a8590), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 Y)" )
// "(C)1991 BARCREST" and "RHU 0.2"
-GAME_CUSTOM( 199?, m4rhr__a0, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhus.p1", 0x0000, 0x010000, CRC(31e776fc) SHA1(e51799e9db5a08cbfb0b6c5466a0a085c3d91db4), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2)" )
-GAME_CUSTOM( 199?, m4rhr__ar, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhuad.p1", 0x0000, 0x010000, CRC(2093126b) SHA1(942994793697cec730c461c87b24a1429e46cc02), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 AD)" )
-GAME_CUSTOM( 199?, m4rhr__as, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhub.p1", 0x0000, 0x010000, CRC(2be41a3a) SHA1(a50c7b5b93a619e541be480646517e278da8e579), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 B)" )
-GAME_CUSTOM( 199?, m4rhr__at, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhubd.p1", 0x0000, 0x010000, CRC(168f7f21) SHA1(9c9e09673bdadd146883a06a8db3c0ee4b304eab), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 BD)" )
-GAME_CUSTOM( 199?, m4rhr__au, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhud.p1", 0x0000, 0x010000, CRC(71932d29) SHA1(e92af5cced251eea2e31c4c1968e77087c64b824), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 D)" )
-GAME_CUSTOM( 199?, m4rhr__av, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhudk.p1", 0x0000, 0x010000, CRC(8de54a5d) SHA1(a275d8c67d38c09f19ffa41e97fbcbea3d297aa4), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 KD)" )
-GAME_CUSTOM( 199?, m4rhr__aw, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhudr.p1", 0x0000, 0x010000, CRC(ba01ac84) SHA1(d03b3b321abd220f619724e99cc396c38418f2d3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 RD)" )
-GAME_CUSTOM( 199?, m4rhr__ax, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhudy.p1", 0x0000, 0x010000, CRC(692bf4eb) SHA1(136f36073f236b48442a20e06aa51a978135f1b3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 YD)" )
-GAME_CUSTOM( 199?, m4rhr__ay, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhuk.p1", 0x0000, 0x010000, CRC(9e4e1e91) SHA1(f671858c41dc0e55189e9a86fff1846938b5c2e5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 K)" )
-GAME_CUSTOM( 199?, m4rhr__az, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhur.p1", 0x0000, 0x010000, CRC(6e9425e5) SHA1(1e2827f3469af15e8d390d9af839c7b474ea95a7), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 R)" )
-GAME_CUSTOM( 199?, m4rhr__a1, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "rhuy.p1", 0x0000, 0x010000, CRC(5d12178a) SHA1(18525828fac1931bb8e11f96b79db143ed533771), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 Y)" )
+GAME_CUSTOM( 199?, m4rhr__a0, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhus.p1", 0x0000, 0x010000, CRC(31e776fc) SHA1(e51799e9db5a08cbfb0b6c5466a0a085c3d91db4), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2)" )
+GAME_CUSTOM( 199?, m4rhr__ar, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhuad.p1", 0x0000, 0x010000, CRC(2093126b) SHA1(942994793697cec730c461c87b24a1429e46cc02), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 AD)" )
+GAME_CUSTOM( 199?, m4rhr__as, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhub.p1", 0x0000, 0x010000, CRC(2be41a3a) SHA1(a50c7b5b93a619e541be480646517e278da8e579), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 B)" )
+GAME_CUSTOM( 199?, m4rhr__at, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhubd.p1", 0x0000, 0x010000, CRC(168f7f21) SHA1(9c9e09673bdadd146883a06a8db3c0ee4b304eab), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 BD)" )
+GAME_CUSTOM( 199?, m4rhr__au, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhud.p1", 0x0000, 0x010000, CRC(71932d29) SHA1(e92af5cced251eea2e31c4c1968e77087c64b824), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 D)" )
+GAME_CUSTOM( 199?, m4rhr__av, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhudk.p1", 0x0000, 0x010000, CRC(8de54a5d) SHA1(a275d8c67d38c09f19ffa41e97fbcbea3d297aa4), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 KD)" )
+GAME_CUSTOM( 199?, m4rhr__aw, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhudr.p1", 0x0000, 0x010000, CRC(ba01ac84) SHA1(d03b3b321abd220f619724e99cc396c38418f2d3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 RD)" )
+GAME_CUSTOM( 199?, m4rhr__ax, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhudy.p1", 0x0000, 0x010000, CRC(692bf4eb) SHA1(136f36073f236b48442a20e06aa51a978135f1b3), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 YD)" )
+GAME_CUSTOM( 199?, m4rhr__ay, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhuk.p1", 0x0000, 0x010000, CRC(9e4e1e91) SHA1(f671858c41dc0e55189e9a86fff1846938b5c2e5), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 K)" )
+GAME_CUSTOM( 199?, m4rhr__az, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhur.p1", 0x0000, 0x010000, CRC(6e9425e5) SHA1(1e2827f3469af15e8d390d9af839c7b474ea95a7), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 R)" )
+GAME_CUSTOM( 199?, m4rhr__a1, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "rhuy.p1", 0x0000, 0x010000, CRC(5d12178a) SHA1(18525828fac1931bb8e11f96b79db143ed533771), "Barcrest","Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 Y)" )
// "(C)2000 BWB" and "RHR 5.0"
-GAME_CUSTOM( 199?, m4rhr__a2, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr__x__x.5_0", 0x0000, 0x010000, CRC(278fe91e) SHA1(dcfed3a7796d1ee365e535115b66c7d6cbe0ab74), "BWB","Red Hot Roll (Barcrest) (MPU4) (RHR 5.0, set 1)" )
-GAME_CUSTOM( 199?, m4rhrc__aa,m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr__x_dx.5_0", 0x0000, 0x010000, CRC(4bcf5c02) SHA1(603935880c87f86e7bc765c176266c1c08a6114f), "BWB","Red Hot Roll (Barcrest) (MPU4) (RHR 5.0, set 2)" )
+GAME_CUSTOM( 199?, m4rhr__a2, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr__x__x.5_0", 0x0000, 0x010000, CRC(278fe91e) SHA1(dcfed3a7796d1ee365e535115b66c7d6cbe0ab74), "BWB","Red Hot Roll (Barcrest) (MPU4) (RHR 5.0, set 1)" )
+GAME_CUSTOM( 199?, m4rhrc__aa,m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr__x_dx.5_0", 0x0000, 0x010000, CRC(4bcf5c02) SHA1(603935880c87f86e7bc765c176266c1c08a6114f), "BWB","Red Hot Roll (Barcrest) (MPU4) (RHR 5.0, set 2)" )
// "(C)1998 BWB" and "RHR 2.0"
-GAME_CUSTOM( 199?, m4rhr__a3, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default, "cr__x_dx.2_0", 0x0000, 0x010000, CRC(73fb120c) SHA1(4c0f39253dee9b528763a9cb609dec31e8529713), "BWB","Red Hot Roll (Barcrest) (MPU4) (RHR 2.0 D)" )
+GAME_CUSTOM( 199?, m4rhr__a3, m4rhr, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, init_m4, "cr__x_dx.2_0", 0x0000, 0x010000, CRC(73fb120c) SHA1(4c0f39253dee9b528763a9cb609dec31e8529713), "BWB","Red Hot Roll (Barcrest) (MPU4) (RHR 2.0 D)" )
// "RONNIE BARKER" and "RH8 0.1"
-GAME_CUSTOM( 199?, m4rhr__6, m4rhr, mod4oki_bootleg_fixedret<0x20>, mpu4, init_m4default, "rhr10", 0x0000, 0x010000, CRC(2a18a033) SHA1(add907c5ab155c28142dcee57825059715afd80d), "hack","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C, hack, set 1)" )
-GAME_CUSTOM( 199?, m4rhr__7, m4rhr, mod4oki_bootleg_fixedret<0xde>, mpu4, init_m4default, "rhr2015", 0x0000, 0x010000, CRC(dbfd3b95) SHA1(4fc7ae32f7d76be3d3d07d627391884bd4d6de09), "hack","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C, hack, set 2)" )
+GAME_CUSTOM( 199?, m4rhr__6, m4rhr, mod4oki_bootleg_fixedret<0x20>(R4, RT1), mpu4, init_m4, "rhr10", 0x0000, 0x010000, CRC(2a18a033) SHA1(add907c5ab155c28142dcee57825059715afd80d), "hack","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C, hack, set 1)" )
+GAME_CUSTOM( 199?, m4rhr__7, m4rhr, mod4oki_bootleg_fixedret<0xde>(R4, RT1), mpu4, init_m4, "rhr2015", 0x0000, 0x010000, CRC(dbfd3b95) SHA1(4fc7ae32f7d76be3d3d07d627391884bd4d6de09), "hack","Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C, hack, set 2)" )
// no copyright and "RHT 0.3"
-GAME_CUSTOM( 199?, m4rhr__8, m4rhr, mod4oki_bootleg_fixedret<0x42>, mpu4, init_m4default, "rhr2515", 0x0000, 0x010000, CRC(e4554c23) SHA1(6d977beb282fd638de3457e467e842ce79b5be7c), "hack","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 C, hack)" )
+GAME_CUSTOM( 199?, m4rhr__8, m4rhr, mod4oki_bootleg_fixedret<0x42>(R4, RT1), mpu4, init_m4, "rhr2515", 0x0000, 0x010000, CRC(e4554c23) SHA1(6d977beb282fd638de3457e467e842ce79b5be7c), "hack","Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 C, hack)" )
@@ -3879,7 +3854,7 @@ GAME_CUSTOM( 199?, m4rhr__8, m4rhr, mod4oki_bootleg_fixedret<0x42>, mpu4, init
ROM_LOAD( name, offset, length, hash ) \
M4UUAW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "UPS 2.2"
GAME_CUSTOM( 199?, m4uuaw__0, m4uuaw, "ups22s.p1", 0x0000, 0x020000, CRC(ac990aa9) SHA1(396c9eded9c18ab2bcb0f4066a890f6e239830f1), "Barcrest","Up Up and Away (Barcrest) (MPU4) (UPS 2.2)" )
@@ -3917,7 +3892,7 @@ GAME_CUSTOM( 199?, m4uuaw__aq, m4uuaw, "uua22y.p1", 0x0000, 0x020000, CRC(8
ROM_LOAD( name, offset, length, hash ) \
M4UUAW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "UPS 2.1"
GAME_CUSTOM( 199?, m4uuaw, 0, "ups21s.p1", 0x0000, 0x020000, CRC(c4a8a542) SHA1(61063d55c6017cf17d704df576cb62da5bd75820), "Barcrest","Up Up and Away (Barcrest) (MPU4) (UPS 2.1)" )
@@ -3955,7 +3930,7 @@ GAME_CUSTOM( 199?, m4uuaw__n, m4uuaw, "uua21h.p1", 0x0000, 0x020000, CRC(1
ROM_LOAD( name, offset, length, hash ) \
M4UUAW_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
//
@@ -3987,48 +3962,48 @@ GAME_CUSTOM( 199?, m4uuaw__b, m4uuaw, "upa15t", 0x0000, 0x020000, CRC(8
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "RFT 0.2"
-GAME_CUSTOM( 199?, m4richfm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rfts.p1", 0x0000, 0x010000, CRC(2a747164) SHA1(a4c8e160f09ebea4fca6dd32ff020d3f1a4f1a1c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2)" )
-GAME_CUSTOM( 199?, m4richfm__r, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rftad.p1", 0x0000, 0x010000, CRC(8553386f) SHA1(ad834d52e51c7f375a370dc6d8586668921a9795), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 AD)" )
-GAME_CUSTOM( 199?, m4richfm__s, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rftb.p1", 0x0000, 0x010000, CRC(0189cc2f) SHA1(62ccc85c50c56aa2e0bcbb42b5c24d402f00d366), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 B)" )
-GAME_CUSTOM( 199?, m4richfm__t, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rftbd.p1", 0x0000, 0x010000, CRC(08351e03) SHA1(d08d38d46793828b147ccde8121fbb9bf422cd60), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 BD)" )
-GAME_CUSTOM( 199?, m4richfm__u, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rftd.p1", 0x0000, 0x010000, CRC(689f02ed) SHA1(1a30aac5454b0c477a698e9c573fe313bc1fe858), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 D)" )
-GAME_CUSTOM( 199?, m4richfm__v, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rftdk.p1", 0x0000, 0x010000, CRC(098b88f5) SHA1(4559b561380055c429a5b4741326f64ad89d8481), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 KD)" )
-GAME_CUSTOM( 199?, m4richfm__w, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rftdy.p1", 0x0000, 0x010000, CRC(26b912f8) SHA1(1719d63b4a25293199b0729235beb5b93c484490), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 YD)" )
-GAME_CUSTOM( 199?, m4richfm__x, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rftk.p1", 0x0000, 0x010000, CRC(6a48bd98) SHA1(2f17194869ca008f7a2eb622bd3725bc91950a17), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 K)" )
-GAME_CUSTOM( 199?, m4richfm__y, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rfty.p1", 0x0000, 0x010000, CRC(723fe46e) SHA1(51bb8aff358d527483eaf1b1e20606d94a937dc6), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 Y)" )
+GAME_CUSTOM( 199?, m4richfm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rfts.p1", 0x0000, 0x010000, CRC(2a747164) SHA1(a4c8e160f09ebea4fca6dd32ff020d3f1a4f1a1c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2)" )
+GAME_CUSTOM( 199?, m4richfm__r, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rftad.p1", 0x0000, 0x010000, CRC(8553386f) SHA1(ad834d52e51c7f375a370dc6d8586668921a9795), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 AD)" )
+GAME_CUSTOM( 199?, m4richfm__s, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rftb.p1", 0x0000, 0x010000, CRC(0189cc2f) SHA1(62ccc85c50c56aa2e0bcbb42b5c24d402f00d366), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 B)" )
+GAME_CUSTOM( 199?, m4richfm__t, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rftbd.p1", 0x0000, 0x010000, CRC(08351e03) SHA1(d08d38d46793828b147ccde8121fbb9bf422cd60), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 BD)" )
+GAME_CUSTOM( 199?, m4richfm__u, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rftd.p1", 0x0000, 0x010000, CRC(689f02ed) SHA1(1a30aac5454b0c477a698e9c573fe313bc1fe858), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 D)" )
+GAME_CUSTOM( 199?, m4richfm__v, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rftdk.p1", 0x0000, 0x010000, CRC(098b88f5) SHA1(4559b561380055c429a5b4741326f64ad89d8481), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 KD)" )
+GAME_CUSTOM( 199?, m4richfm__w, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rftdy.p1", 0x0000, 0x010000, CRC(26b912f8) SHA1(1719d63b4a25293199b0729235beb5b93c484490), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 YD)" )
+GAME_CUSTOM( 199?, m4richfm__x, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rftk.p1", 0x0000, 0x010000, CRC(6a48bd98) SHA1(2f17194869ca008f7a2eb622bd3725bc91950a17), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 K)" )
+GAME_CUSTOM( 199?, m4richfm__y, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rfty.p1", 0x0000, 0x010000, CRC(723fe46e) SHA1(51bb8aff358d527483eaf1b1e20606d94a937dc6), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 Y)" )
// "(C)1993 BARCREST" and "RF5 0.2"
-GAME_CUSTOM( 199?, m4richfm__m, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5s.p1", 0x0000, 0x010000, CRC(8d1ed193) SHA1(a4ca973dac8a8fd550bf7e57a8cdc627c28da4b8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2)" )
-GAME_CUSTOM( 199?, m4richfm__f, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5ad.p1", 0x0000, 0x010000, CRC(cd280292) SHA1(605d89608e106979229a00701a2e5b578df50d60), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 AD)" )
-GAME_CUSTOM( 199?, m4richfm__g, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5b.p1", 0x0000, 0x010000, CRC(e1edf753) SHA1(677f0397ec57422241f4669be610cffd33a9b44a), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 B)" )
-GAME_CUSTOM( 199?, m4richfm__h, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5bd.p1", 0x0000, 0x010000, CRC(2d698365) SHA1(7f91cee0d34550aba9ac0f4ee398df4de6fd6f7e), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 BD)" )
-GAME_CUSTOM( 199?, m4richfm__i, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5d.p1", 0x0000, 0x010000, CRC(034cab0b) SHA1(79eaeb84377dbb8e6bda1dd2ae29a1f79656b9e4), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 D)" )
-GAME_CUSTOM( 199?, m4richfm__j, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5dk.p1", 0x0000, 0x010000, CRC(14fc0f13) SHA1(a2b294da18c3f5bc9c81eb3f3af5ab5ca58c9cad), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 KD)" )
-GAME_CUSTOM( 199?, m4richfm__k, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5dy.p1", 0x0000, 0x010000, CRC(a2664c64) SHA1(2256b6e0d6472faa901348cb5be849ad012f1d16), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 YD)" )
-GAME_CUSTOM( 199?, m4richfm__l, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5k.p1", 0x0000, 0x010000, CRC(d8787b25) SHA1(885ac7ddd3de4cb475539d02aefbf38fed7c1f2c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 K)" )
-GAME_CUSTOM( 199?, m4richfm__n, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, init_m4default_lextender, "rf5y.p1", 0x0000, 0x010000, CRC(ad288548) SHA1(a7222ab5bffe8e5e0844f8e6f13e09afe74b08a8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 Y)" )
+GAME_CUSTOM( 199?, m4richfm__m, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5s.p1", 0x0000, 0x010000, CRC(8d1ed193) SHA1(a4ca973dac8a8fd550bf7e57a8cdc627c28da4b8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2)" )
+GAME_CUSTOM( 199?, m4richfm__f, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5ad.p1", 0x0000, 0x010000, CRC(cd280292) SHA1(605d89608e106979229a00701a2e5b578df50d60), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 AD)" )
+GAME_CUSTOM( 199?, m4richfm__g, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5b.p1", 0x0000, 0x010000, CRC(e1edf753) SHA1(677f0397ec57422241f4669be610cffd33a9b44a), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 B)" )
+GAME_CUSTOM( 199?, m4richfm__h, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5bd.p1", 0x0000, 0x010000, CRC(2d698365) SHA1(7f91cee0d34550aba9ac0f4ee398df4de6fd6f7e), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 BD)" )
+GAME_CUSTOM( 199?, m4richfm__i, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5d.p1", 0x0000, 0x010000, CRC(034cab0b) SHA1(79eaeb84377dbb8e6bda1dd2ae29a1f79656b9e4), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 D)" )
+GAME_CUSTOM( 199?, m4richfm__j, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5dk.p1", 0x0000, 0x010000, CRC(14fc0f13) SHA1(a2b294da18c3f5bc9c81eb3f3af5ab5ca58c9cad), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 KD)" )
+GAME_CUSTOM( 199?, m4richfm__k, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5dy.p1", 0x0000, 0x010000, CRC(a2664c64) SHA1(2256b6e0d6472faa901348cb5be849ad012f1d16), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 YD)" )
+GAME_CUSTOM( 199?, m4richfm__l, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5k.p1", 0x0000, 0x010000, CRC(d8787b25) SHA1(885ac7ddd3de4cb475539d02aefbf38fed7c1f2c), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 K)" )
+GAME_CUSTOM( 199?, m4richfm__n, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf5y.p1", 0x0000, 0x010000, CRC(ad288548) SHA1(a7222ab5bffe8e5e0844f8e6f13e09afe74b08a8), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF5 0.2 Y)" )
// sequence 00 64 64 24 64 64 24 64 6c 9c bc bc (Winner Takes All)
// "(C)1993 BARCREST" and "RAF 0.3"
-GAME_CUSTOM( 199?, m4richfm__c, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "rafs.p1", 0x0000, 0x010000, CRC(f312b2e3) SHA1(8bf2cb7b73cfc320143d05d25e28c15fb4f26045), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3)" )
-GAME_CUSTOM( 199?, m4richfm__a, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "rafc.p1", 0x0000, 0x010000, CRC(d92f602f) SHA1(c93131138deb4018d499b9b45c07d4517c5072b7), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3 C)" )
-GAME_CUSTOM( 199?, m4richfm__b, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "rafd.p1", 0x0000, 0x010000, CRC(b0e9f470) SHA1(cad080a5d7f24968524fe10f6c43b088f35d7364), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3 D)" )
-GAME_CUSTOM( 199?, m4richfm__d, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "rafy.p1", 0x0000, 0x010000, CRC(a8812d45) SHA1(c0b89833f87ed90eb3e9c3299fcea362d501ed90), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3 Y)" )
+GAME_CUSTOM( 199?, m4richfm__c, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rafs.p1", 0x0000, 0x010000, CRC(f312b2e3) SHA1(8bf2cb7b73cfc320143d05d25e28c15fb4f26045), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3)" )
+GAME_CUSTOM( 199?, m4richfm__a, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rafc.p1", 0x0000, 0x010000, CRC(d92f602f) SHA1(c93131138deb4018d499b9b45c07d4517c5072b7), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3 C)" )
+GAME_CUSTOM( 199?, m4richfm__b, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rafd.p1", 0x0000, 0x010000, CRC(b0e9f470) SHA1(cad080a5d7f24968524fe10f6c43b088f35d7364), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3 D)" )
+GAME_CUSTOM( 199?, m4richfm__d, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rafy.p1", 0x0000, 0x010000, CRC(a8812d45) SHA1(c0b89833f87ed90eb3e9c3299fcea362d501ed90), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RAF 0.3 Y)" )
// "(C)1993 BARCREST" and "RF8 0.1"
-GAME_CUSTOM( 199?, m4richfm__o, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "rf8b.p1", 0x0000, 0x010000, CRC(105c24e1) SHA1(cb417976a74441bf2ca888198b57fed81d758c15), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF8 0.1 B)" )
-GAME_CUSTOM( 199?, m4richfm__p, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, init_m4default_lextender, "rf8c.p1", 0x0000, 0x010000, CRC(8924a706) SHA1(abb1a1f6cdeb15884dfa63fc04882f794453d4ec), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF8 0.1 C)" )
+GAME_CUSTOM( 199?, m4richfm__o, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf8b.p1", 0x0000, 0x010000, CRC(105c24e1) SHA1(cb417976a74441bf2ca888198b57fed81d758c15), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF8 0.1 B)" )
+GAME_CUSTOM( 199?, m4richfm__p, m4richfm, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "rf8c.p1", 0x0000, 0x010000, CRC(8924a706) SHA1(abb1a1f6cdeb15884dfa63fc04882f794453d4ec), "Barcrest","Rich & Famous (Barcrest) (MPU4) (RF8 0.1 C)" )
// none of these expect standard protection, they might be hacked
// "(C)1997 B.W.B." and "RFC 1.3"
-GAME_CUSTOM( 199?, m4richfm__0, m4richfm, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default_lextender, "r+f5.10", 0x0000, 0x010000, CRC(45d493d0) SHA1(9a549821a005fa65c2eb8b35c5f15659bd897519), "BWB","Rich & Famous (Barcrest) (MPU4) (RFC 1.3 K5)" )
+GAME_CUSTOM( 199?, m4richfm__0, m4richfm, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, LPLB), mpu4, init_m4, "r+f5.10", 0x0000, 0x010000, CRC(45d493d0) SHA1(9a549821a005fa65c2eb8b35c5f15659bd897519), "BWB","Rich & Famous (Barcrest) (MPU4) (RFC 1.3 K5)" )
// "(C)1997 B.W.B." and "RF4 1.1"
-GAME_CUSTOM( 199?, m4richfm__1, m4richfm, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4default_lextender, "r+f5.4", 0x0000, 0x010000, CRC(0441d833) SHA1(361910fd64bc7291f6200fe354c468d16e7d6c80), "BWB","Rich & Famous (Barcrest) (MPU4) (RF4 1.1 K5)" )
+GAME_CUSTOM( 199?, m4richfm__1, m4richfm, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, LPLB), mpu4, init_m4, "r+f5.4", 0x0000, 0x010000, CRC(0441d833) SHA1(361910fd64bc7291f6200fe354c468d16e7d6c80), "BWB","Rich & Famous (Barcrest) (MPU4) (RF4 1.1 K5)" )
// "1997 COCO" and "RF4 1.1"
-GAME_CUSTOM( 199?, m4richfm__3, m4richfm, mod4oki_bootleg_fixedret<0x2a>, mpu4, init_m4default_lextender, "r+f55", 0x0000, 0x010000, CRC(6095a72b) SHA1(af25f7c2fb5241064ea995d35fe4fd2f242e3750), "hack","Rich & Famous (Barcrest) (MPU4) (RF4 1.1 K5, hack)" )
+GAME_CUSTOM( 199?, m4richfm__3, m4richfm, mod4oki_bootleg_fixedret<0x2a>(R4, RT1, LPLB), mpu4, init_m4, "r+f55", 0x0000, 0x010000, CRC(6095a72b) SHA1(af25f7c2fb5241064ea995d35fe4fd2f242e3750), "hack","Rich & Famous (Barcrest) (MPU4) (RF4 1.1 K5, hack)" )
// "(C)1997 B.W.B." and "RF8 1.2"
-GAME_CUSTOM( 199?, m4richfm__2, m4richfm, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4default_lextender, "r+f5.8t", 0x0000, 0x010000, CRC(525e2520) SHA1(84b2ff86d6a54ebb3bcf0138930b2619a8733161), "BWB","Rich & Famous (Barcrest) (MPU4) (RF8 1.2 K5)" )
+GAME_CUSTOM( 199?, m4richfm__2, m4richfm, mod4oki_bootleg_fixedret<0x2e>(R4, RT1, LPLB), mpu4, init_m4, "r+f5.8t", 0x0000, 0x010000, CRC(525e2520) SHA1(84b2ff86d6a54ebb3bcf0138930b2619a8733161), "BWB","Rich & Famous (Barcrest) (MPU4) (RF8 1.2 K5)" )
// "(C)1993 BARCREST" and "RFT 0.2" but hack
-GAME_CUSTOM( 199?, m4richfm__q, m4richfm, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "rft20.10", 0x0000, 0x010000, CRC(41e6ef75) SHA1(d836fdea5a89b845687d2ff929365bd81737c760), "hack","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 P, hack, set 1)" )
-GAME_CUSTOM( 199?, m4richfm__z, m4richfm, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "rich2010", 0x0000, 0x010000, CRC(baecbdbc) SHA1(5fffecf3c91e832d3cfc13dbf5e6b74fc3d6a146), "hack","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 P, hack, set 2)" )
+GAME_CUSTOM( 199?, m4richfm__q, m4richfm, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "rft20.10", 0x0000, 0x010000, CRC(41e6ef75) SHA1(d836fdea5a89b845687d2ff929365bd81737c760), "hack","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 P, hack, set 1)" )
+GAME_CUSTOM( 199?, m4richfm__z, m4richfm, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "rich2010", 0x0000, 0x010000, CRC(baecbdbc) SHA1(5fffecf3c91e832d3cfc13dbf5e6b74fc3d6a146), "hack","Rich & Famous (Barcrest) (MPU4) (RFT 0.2 P, hack, set 2)" )
// bad dump (most of the rom is missing) but doesn't seem a 100% match for a set we have a complete dump of
-GAME_CUSTOM( 199?, m4richfm__e, m4richfm, mod4oki, mpu4, init_m4default_lextender, "rchfam8", 0x0000, 0x004000, BAD_DUMP CRC(55f16698) SHA1(9853b17bbb81371192a564376be7b3074908dbca), "Barcrest","Rich & Famous (Barcrest) (MPU4) (bad)" )
+GAME_CUSTOM( 199?, m4richfm__e, m4richfm, mod4oki(R4, RT1, LPLB), mpu4, init_m4, "rchfam8", 0x0000, 0x004000, BAD_DUMP CRC(55f16698) SHA1(9853b17bbb81371192a564376be7b3074908dbca), "Barcrest","Rich & Famous (Barcrest) (MPU4) (bad)" )
/*****************************************************************************************************************************************************************************
@@ -4048,7 +4023,7 @@ GAME_CUSTOM( 199?, m4richfm__e, m4richfm, mod4oki, mpu4, init_m4default_lexte
ROM_LOAD( name, offset, length, hash ) \
M4PRZRF_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PR8 0.1"
GAME_CUSTOM( 199?, m4przrf, 0, "pr8s.p1", 0x0000, 0x020000, CRC(bbbdd4f4) SHA1(72c2a8b3404384b524f49fc2d6507e2d8dab85cb), "Barcrest","Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1)" )
@@ -4088,40 +4063,40 @@ GAME_CUSTOM( 199?, m4przrf__j, m4przrf, "pr8y.p1", 0x0000, 0x020000, CRC(87
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "VIZ 0.6"
-GAME_CUSTOM( 199?, m4viz, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizs.p1", 0x0000, 0x010000, CRC(86b487dc) SHA1(62215752e1da1ca923e6b9e410c8445577be34dd), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6)" )
-GAME_CUSTOM( 199?, m4viz__d, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizb.p1", 0x0000, 0x010000, CRC(afdc6306) SHA1(4d35703267b3742dd7008c00ec525689c56bf227), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 B)" )
-GAME_CUSTOM( 199?, m4viz__e, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizc.p1", 0x0000, 0x010000, CRC(876c30fc) SHA1(f126496e87d7e84ca39d2921bf9f2be0fa2c7586), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 C)" )
-GAME_CUSTOM( 199?, m4viz__f, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizd.p1", 0x0000, 0x010000, CRC(46bee8cd) SHA1(4094651fd8954ca2f5cfc2bba4fc51d865c86098), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 D)" )
-GAME_CUSTOM( 199?, m4viz__g, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizdk.p1", 0x0000, 0x010000, CRC(24476360) SHA1(b5141a40f8c1ed3b3fbaf43ae539ae2f1aedbcca), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 DK)" )
-GAME_CUSTOM( 199?, m4viz__h, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizdy.p1", 0x0000, 0x010000, CRC(88807a1f) SHA1(dc1539a5e69b5f0b3f68ccf7360ff4f240f6b7c7), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 DY)" )
-GAME_CUSTOM( 199?, m4viz__i, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizk.p1", 0x0000, 0x010000, CRC(6647f592) SHA1(2ce7222bd9e173480ddc901f84859ca3ad7aded1), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 K)" )
-GAME_CUSTOM( 199?, m4viz__k, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizy.p1", 0x0000, 0x010000, CRC(0e12112d) SHA1(4a34832dd95246e80e616affe3eab3c8794ca769), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 Y)" )
+GAME_CUSTOM( 199?, m4viz, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizs.p1", 0x0000, 0x010000, CRC(86b487dc) SHA1(62215752e1da1ca923e6b9e410c8445577be34dd), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6)" )
+GAME_CUSTOM( 199?, m4viz__d, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizb.p1", 0x0000, 0x010000, CRC(afdc6306) SHA1(4d35703267b3742dd7008c00ec525689c56bf227), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 B)" )
+GAME_CUSTOM( 199?, m4viz__e, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizc.p1", 0x0000, 0x010000, CRC(876c30fc) SHA1(f126496e87d7e84ca39d2921bf9f2be0fa2c7586), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 C)" )
+GAME_CUSTOM( 199?, m4viz__f, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizd.p1", 0x0000, 0x010000, CRC(46bee8cd) SHA1(4094651fd8954ca2f5cfc2bba4fc51d865c86098), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 D)" )
+GAME_CUSTOM( 199?, m4viz__g, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizdk.p1", 0x0000, 0x010000, CRC(24476360) SHA1(b5141a40f8c1ed3b3fbaf43ae539ae2f1aedbcca), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 DK)" )
+GAME_CUSTOM( 199?, m4viz__h, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizdy.p1", 0x0000, 0x010000, CRC(88807a1f) SHA1(dc1539a5e69b5f0b3f68ccf7360ff4f240f6b7c7), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 DY)" )
+GAME_CUSTOM( 199?, m4viz__i, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizk.p1", 0x0000, 0x010000, CRC(6647f592) SHA1(2ce7222bd9e173480ddc901f84859ca3ad7aded1), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 K)" )
+GAME_CUSTOM( 199?, m4viz__k, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizy.p1", 0x0000, 0x010000, CRC(0e12112d) SHA1(4a34832dd95246e80e616affe3eab3c8794ca769), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.6 Y)" )
// "(C)1991 BARCREST" and "VIZ 0.3"
-GAME_CUSTOM( 199?, m4viz__l, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "vizzzvkn", 0x0000, 0x010000, CRC(cf5c41f5) SHA1(c9b7de0e73141833e5f8d23f0cb641b1c6094178), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.3 Y)" )
+GAME_CUSTOM( 199?, m4viz__l, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "vizzzvkn", 0x0000, 0x010000, CRC(cf5c41f5) SHA1(c9b7de0e73141833e5f8d23f0cb641b1c6094178), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.3 Y)" )
// "(C)1991 BARCREST" and "VIZ 0.2"
-GAME_CUSTOM( 199?, m4viz__b, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>, mpu4, init_m4default, "viz20pv2", 0x0000, 0x010000, CRC(7e56ff95) SHA1(83679b64881adbe547b43255374de061859e17ef), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.2 T)" )
+GAME_CUSTOM( 199?, m4viz__b, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viz_characteriser_prot>(R4, RT1), mpu4, init_m4, "viz20pv2", 0x0000, 0x010000, CRC(7e56ff95) SHA1(83679b64881adbe547b43255374de061859e17ef), "Barcrest","Viz (Barcrest) (MPU4) (VIZ 0.2 T)" )
// "(C)1994 B.W.B." and "VZ__1.0"
-GAME_CUSTOM( 199?, m4viz__m, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_05a__.1_1", 0x0000, 0x010000, CRC(56e0ea7a) SHA1(cbe979cdfceb2c1c7be5adaf8163b96bebbc4bb6), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 K, set 1)" )
-GAME_CUSTOM( 199?, m4viz__n, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_05s__.1_1", 0x0000, 0x010000, CRC(c6896e33) SHA1(7db1a5e08f1a307aac0818424fab274cd8141474), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0, set 1)" )
-GAME_CUSTOM( 199?, m4viz__o, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_05sb_.1_1", 0x0000, 0x010000, CRC(12fecbdf) SHA1(c0137aac536ec17c3b2ffa405f8400308f759590), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 DY, set 1)" )
-GAME_CUSTOM( 199?, m4viz__p, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_05sd_.1_1", 0x0000, 0x010000, CRC(9241fd92) SHA1(f3e58273089ee9b828e431a043802d4ec3948a64), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 D, set 1)" )
-GAME_CUSTOM( 199?, m4viz__u, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vii05___.1_1", 0x0000, 0x010000, CRC(22a10f78) SHA1(83411b77e5de441b0f5fa02f2b1dbc40755f41cb), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 C, set 1)" )
-
-GAME_CUSTOM( 199?, m4viz__q, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_10a__.1_1", 0x0000, 0x010000, CRC(e7c4e4d9) SHA1(9ac3bd60e6000e36cd2229284c48e009ea22cfdb), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 K, set 2)" )
-GAME_CUSTOM( 199?, m4viz__r, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_10s__.1_1", 0x0000, 0x010000, CRC(039a4620) SHA1(097335ba8846c8c8b28bf85f836ba76d22bc763d), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0, set 2)" )
-GAME_CUSTOM( 199?, m4viz__s, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_10sb_.1_1", 0x0000, 0x010000, CRC(4b7e6686) SHA1(97985f1ecd3a8e77f07a91c5171810e6aff13f4c), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 DY, set 2)" )
-GAME_CUSTOM( 199?, m4viz__t, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vi_10sd_.1_1", 0x0000, 0x010000, CRC(84da6fca) SHA1(8a42855b161619a56435da52dd24e8e60fb56bd8), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 D, set 2)" )
-GAME_CUSTOM( 199?, m4viz__v, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4, init_m4default, "vii10___.1_1", 0x0000, 0x010000, CRC(92e11e00) SHA1(2ebae74a39434269333ea0067163e9607926646d), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 C, set 2)" )
+GAME_CUSTOM( 199?, m4viz__m, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_05a__.1_1", 0x0000, 0x010000, CRC(56e0ea7a) SHA1(cbe979cdfceb2c1c7be5adaf8163b96bebbc4bb6), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 K, set 1)" )
+GAME_CUSTOM( 199?, m4viz__n, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_05s__.1_1", 0x0000, 0x010000, CRC(c6896e33) SHA1(7db1a5e08f1a307aac0818424fab274cd8141474), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0, set 1)" )
+GAME_CUSTOM( 199?, m4viz__o, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_05sb_.1_1", 0x0000, 0x010000, CRC(12fecbdf) SHA1(c0137aac536ec17c3b2ffa405f8400308f759590), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 DY, set 1)" )
+GAME_CUSTOM( 199?, m4viz__p, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_05sd_.1_1", 0x0000, 0x010000, CRC(9241fd92) SHA1(f3e58273089ee9b828e431a043802d4ec3948a64), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 D, set 1)" )
+GAME_CUSTOM( 199?, m4viz__u, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vii05___.1_1", 0x0000, 0x010000, CRC(22a10f78) SHA1(83411b77e5de441b0f5fa02f2b1dbc40755f41cb), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 C, set 1)" )
+
+GAME_CUSTOM( 199?, m4viz__q, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_10a__.1_1", 0x0000, 0x010000, CRC(e7c4e4d9) SHA1(9ac3bd60e6000e36cd2229284c48e009ea22cfdb), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 K, set 2)" )
+GAME_CUSTOM( 199?, m4viz__r, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_10s__.1_1", 0x0000, 0x010000, CRC(039a4620) SHA1(097335ba8846c8c8b28bf85f836ba76d22bc763d), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0, set 2)" )
+GAME_CUSTOM( 199?, m4viz__s, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_10sb_.1_1", 0x0000, 0x010000, CRC(4b7e6686) SHA1(97985f1ecd3a8e77f07a91c5171810e6aff13f4c), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 DY, set 2)" )
+GAME_CUSTOM( 199?, m4viz__t, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vi_10sd_.1_1", 0x0000, 0x010000, CRC(84da6fca) SHA1(8a42855b161619a56435da52dd24e8e60fb56bd8), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 D, set 2)" )
+GAME_CUSTOM( 199?, m4viz__v, m4viz, mod4oki_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R4, RT1), mpu4, init_m4, "vii10___.1_1", 0x0000, 0x010000, CRC(92e11e00) SHA1(2ebae74a39434269333ea0067163e9607926646d), "BWB","Viz (Barcrest) (MPU4) (VZ__1.0 C, set 2)" )
// different protection
//
// no copyright string and "8V1 0.6"
-GAME_CUSTOM( 199?, m4viz__j, m4viz, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4default, "viz208c", 0x0000, 0x010000, CRC(00a65029) SHA1(8dfb68d1a9f4cd00f239ed87a1d330ccb655c35b), "hack","Viz (Barcrest) (MPU4) (8V1 0.6 C, hack, set 1)" )
-GAME_CUSTOM( 199?, m4viz__a, m4viz, mod4oki_bootleg_fixedret<0x1e>, mpu4, init_m4default, "viz20_101", 0x0000, 0x010000, CRC(0847b812) SHA1(6de9e9dad272932a22ebe457ac50da1126d931ea), "hack","Viz (Barcrest) (MPU4) (8V1 0.6 C, hack, set 2)" )
-GAME_CUSTOM( 199?, m4viz__w, m4viz, mod4oki_bootleg_fixedret<0x2e>, mpu4, init_m4default, "viz_20_.8", 0x0000, 0x010000, CRC(b4fbc43b) SHA1(4cce5e3a0c32a402b81dfd16e66d12e98704c4d2), "hack","Viz (Barcrest) (MPU4) (8V1 0.6, hack)" )
+GAME_CUSTOM( 199?, m4viz__j, m4viz, mod4oki_bootleg_fixedret<0x2e>(R4, RT1), mpu4, init_m4, "viz208c", 0x0000, 0x010000, CRC(00a65029) SHA1(8dfb68d1a9f4cd00f239ed87a1d330ccb655c35b), "hack","Viz (Barcrest) (MPU4) (8V1 0.6 C, hack, set 1)" )
+GAME_CUSTOM( 199?, m4viz__a, m4viz, mod4oki_bootleg_fixedret<0x1e>(R4, RT1), mpu4, init_m4, "viz20_101", 0x0000, 0x010000, CRC(0847b812) SHA1(6de9e9dad272932a22ebe457ac50da1126d931ea), "hack","Viz (Barcrest) (MPU4) (8V1 0.6 C, hack, set 2)" )
+GAME_CUSTOM( 199?, m4viz__w, m4viz, mod4oki_bootleg_fixedret<0x2e>(R4, RT1), mpu4, init_m4, "viz_20_.8", 0x0000, 0x010000, CRC(b4fbc43b) SHA1(4cce5e3a0c32a402b81dfd16e66d12e98704c4d2), "hack","Viz (Barcrest) (MPU4) (8V1 0.6, hack)" )
// "RICK LUVS BRIAN" and "8V1 1.0"
-GAME_CUSTOM( 199?, m4viz__c, m4viz, mod4oki_bootleg_fixedret<0x0c>, mpu4, init_m4default, "viz58c", 0x0000, 0x010000, CRC(95b8918b) SHA1(4ad4ff9098e98c2076e7058493c181da705acb52), "hack","Viz (Barcrest) (MPU4) (8V1 1.0 C, hack, set 3)" )
+GAME_CUSTOM( 199?, m4viz__c, m4viz, mod4oki_bootleg_fixedret<0x0c>(R4, RT1), mpu4, init_m4, "viz58c", 0x0000, 0x010000, CRC(95b8918b) SHA1(4ad4ff9098e98c2076e7058493c181da705acb52), "hack","Viz (Barcrest) (MPU4) (8V1 1.0 C, hack, set 3)" )
/*****************************************************************************************************************************************************************************
@@ -4145,7 +4120,7 @@ GAME_CUSTOM( 199?, m4viz__c, m4viz, mod4oki_bootleg_fixedret<0x0c>, mpu4, init
ROM_LOAD( name, offset, length, hash ) \
M4TAKEPK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4jackpot10_20p, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot10_20p, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// boots with 8GBP Token set for Jackpot
@@ -4181,7 +4156,7 @@ GAME_CUSTOM( 199?, m4takepk__s, m4takepk, "tphy.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4TAKEPK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
//
@@ -4198,7 +4173,7 @@ GAME_CUSTOM( 199?, m4takepk__t, m4takepk, "typ15f", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4TAKEPK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x60>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x60>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// below sets are all smaller (BWB sets / hacks of them?)
// "(C)1997 B.W.B." and "TAC 2.3"
@@ -4211,7 +4186,7 @@ GAME_CUSTOM( 199?, m4takepk__1, m4takepk, "typ5p10p.bin", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TAKEPK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x1c>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// no copyright string and "TAC 2.3"
@@ -4225,7 +4200,7 @@ GAME_CUSTOM( 199?, m4takepk__w, m4takepk, "typ510s", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TAKEPK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0xa8>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0xa8>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// no copyright string and "TA4 2.1"
GAME_CUSTOM( 199?, m4takepk__x, m4takepk, "typ55", 0x0000, 0x010000, CRC(6837344f) SHA1(4d5c6ea005d0916f27a7f445b37ce9252549c61f), "hack","Take Your Pick (Barcrest) (MPU4) (TA4 2.1, hack, set 1)" )
@@ -4238,7 +4213,7 @@ GAME_CUSTOM( 199?, m4takepk__y, m4takepk, "typ55s", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TAKEPK_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// MUX SELECTS ALARM
// no copyright string and "TA8 2.2"
@@ -4264,7 +4239,7 @@ GAME_CUSTOM( 199?, m4takepk__0, m4takepk, "typ58t", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4OVERMN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::otm_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::otm_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "OTT 0.2"
GAME_CUSTOM( 199?, m4overmn, 0, "otts.p1", 0x0000, 0x010000, CRC(6daf58a4) SHA1(e505a18b67dec54446e6d94a5d1c3bba13099619), "Barcrest","Over The Moon (Barcrest) (MPU4) (OTT 0.2)" )
@@ -4298,7 +4273,7 @@ GAME_CUSTOM( 199?, m4overmn__8, m4overmn, "otuy.p1", 0x0000, 0x010000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4OVERMN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "OT8 0.1"
GAME_CUSTOM( 199?, m4overmn__f, m4overmn, "ot8s.p1", 0x0000, 0x010000, CRC(db1bacdb) SHA1(fc2257eedec532094f3c229bcf215a0fde430d2b), "Barcrest","Over The Moon (Barcrest) (MPU4) (OT8 0.1)" )
@@ -4346,42 +4321,42 @@ GAME_CUSTOM( 199?, m4overmn__n, m4overmn, "otny.p1", 0x0000, 0x010000, CRC
// "(C)1993 BARCREST" and "LUX 0.6"
-GAME_CUSTOM( 199?, m4luxor, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, mpu4, init_m4default_lextender, "luxs.p1", 0x0000, 0x010000, CRC(78d6f05a) SHA1(53de98b9248c67c83f255d33d5963bebb757d0af), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6)" )
-GAME_CUSTOM( 199?, m4luxor__f, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, mpu4, init_m4default_lextender, "luxc.p1", 0x0000, 0x010000, CRC(47d1c4dc) SHA1(0856fac4a7ec14dc1df24446e1355ed05bb5f1c1), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 C)" )
-GAME_CUSTOM( 199?, m4luxor__g, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, mpu4, init_m4default_lextender, "luxd.p1", 0x0000, 0x010000, CRC(8f949379) SHA1(4f0a94d06b8e7036acaae5c0c42c91481837d3a1), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 D)" )
-GAME_CUSTOM( 199?, m4luxor__h, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, mpu4, init_m4default_lextender, "luxk.p1", 0x0000, 0x010000, CRC(bd5eaf2d) SHA1(f9a3f3139d6b7ff4fcec805e0ca6e8ab1c3c10dd), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 K)" )
-GAME_CUSTOM( 199?, m4luxor__i, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, mpu4, init_m4default_lextender, "luxor_std.bin", 0x0000, 0x010000, CRC(2c565bf7) SHA1(61612abbda037b63e2cda7746be8cf64b4563d43), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 Y)" )
+GAME_CUSTOM( 199?, m4luxor, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "luxs.p1", 0x0000, 0x010000, CRC(78d6f05a) SHA1(53de98b9248c67c83f255d33d5963bebb757d0af), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6)" )
+GAME_CUSTOM( 199?, m4luxor__f, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "luxc.p1", 0x0000, 0x010000, CRC(47d1c4dc) SHA1(0856fac4a7ec14dc1df24446e1355ed05bb5f1c1), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 C)" )
+GAME_CUSTOM( 199?, m4luxor__g, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "luxd.p1", 0x0000, 0x010000, CRC(8f949379) SHA1(4f0a94d06b8e7036acaae5c0c42c91481837d3a1), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 D)" )
+GAME_CUSTOM( 199?, m4luxor__h, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "luxk.p1", 0x0000, 0x010000, CRC(bd5eaf2d) SHA1(f9a3f3139d6b7ff4fcec805e0ca6e8ab1c3c10dd), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 K)" )
+GAME_CUSTOM( 199?, m4luxor__i, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "luxor_std.bin", 0x0000, 0x010000, CRC(2c565bf7) SHA1(61612abbda037b63e2cda7746be8cf64b4563d43), "Barcrest","Luxor (Barcrest) (MPU4) (LUX 0.6 Y)" )
// "(C)1995 B.W.B." and "LX5 1.0"
-GAME_CUSTOM( 199?, m4luxor__q, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_05a__.1o1", 0x0000, 0x010000, CRC(7b81f1b9) SHA1(412a8961571f279d70c05ef26c565b4b2a588060), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 K)" )
-GAME_CUSTOM( 199?, m4luxor__r, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_05s__.1o1", 0x0000, 0x010000, CRC(2bf86940) SHA1(cf96a7a12db84fc028766da55ca06d2350f9d08f), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0)" )
-GAME_CUSTOM( 199?, m4luxor__s, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_05sb_.1o1", 0x0000, 0x010000, CRC(e210c1b6) SHA1(023b1e0b36c4d146af5e958be72575590588b3fd), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 YD)" )
-GAME_CUSTOM( 199?, m4luxor__t, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_05sd_.1o1", 0x0000, 0x010000, CRC(8727963a) SHA1(4585c0e3fb14f54684ff199be9010ed7b5cb97c3), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 D)" )
-GAME_CUSTOM( 199?, m4luxor__y, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lxi05a__.1o1", 0x0000, 0x010000, CRC(7a5fe065) SHA1(c44b41d01175c10051ae4cd1453be3411842825e), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 CK)" )
+GAME_CUSTOM( 199?, m4luxor__q, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_05a__.1o1", 0x0000, 0x010000, CRC(7b81f1b9) SHA1(412a8961571f279d70c05ef26c565b4b2a588060), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 K)" )
+GAME_CUSTOM( 199?, m4luxor__r, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_05s__.1o1", 0x0000, 0x010000, CRC(2bf86940) SHA1(cf96a7a12db84fc028766da55ca06d2350f9d08f), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0)" )
+GAME_CUSTOM( 199?, m4luxor__s, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_05sb_.1o1", 0x0000, 0x010000, CRC(e210c1b6) SHA1(023b1e0b36c4d146af5e958be72575590588b3fd), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 YD)" )
+GAME_CUSTOM( 199?, m4luxor__t, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_05sd_.1o1", 0x0000, 0x010000, CRC(8727963a) SHA1(4585c0e3fb14f54684ff199be9010ed7b5cb97c3), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 D)" )
+GAME_CUSTOM( 199?, m4luxor__y, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lxi05a__.1o1", 0x0000, 0x010000, CRC(7a5fe065) SHA1(c44b41d01175c10051ae4cd1453be3411842825e), "BWB","Luxor (Barcrest) (MPU4) (LX5 1.0 CK)" )
// "(C)1994 B.W.B." and "LX101.0"
-GAME_CUSTOM( 199?, m4luxor__u, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_10a__.1o1", 0x0000, 0x010000, CRC(ce8e6c05) SHA1(b48bc01d1a069881e9b9db1a4959c7b57e80f28a), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 K)" )
-GAME_CUSTOM( 199?, m4luxor__v, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_10s__.1o1", 0x0000, 0x010000, CRC(9f0f5b6b) SHA1(9f67500d62921dd680bd864856206306adc3f2f6), "BWB","Luxor (Barcrest) (MPU4) (LX101.0)" )
-GAME_CUSTOM( 199?, m4luxor__w, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_10sb_.1o1", 0x0000, 0x010000, CRC(bd020920) SHA1(a6b5c11c82344afc1cdd350b9f31d1257be72615), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 YD)" )
-GAME_CUSTOM( 199?, m4luxor__x, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lx_10sd_.1o1", 0x0000, 0x010000, CRC(cc59d370) SHA1(a428d93c005b629e86810c85ea91630a354e170b), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 D)" )
-GAME_CUSTOM( 199?, m4luxor__z, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_lextender, "lxi10a__.1o1", 0x0000, 0x010000, CRC(17989464) SHA1(67aa9cc01d89ed4caeb33885f53dcaee762ccb6d), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 CK)" )
+GAME_CUSTOM( 199?, m4luxor__u, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_10a__.1o1", 0x0000, 0x010000, CRC(ce8e6c05) SHA1(b48bc01d1a069881e9b9db1a4959c7b57e80f28a), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 K)" )
+GAME_CUSTOM( 199?, m4luxor__v, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_10s__.1o1", 0x0000, 0x010000, CRC(9f0f5b6b) SHA1(9f67500d62921dd680bd864856206306adc3f2f6), "BWB","Luxor (Barcrest) (MPU4) (LX101.0)" )
+GAME_CUSTOM( 199?, m4luxor__w, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_10sb_.1o1", 0x0000, 0x010000, CRC(bd020920) SHA1(a6b5c11c82344afc1cdd350b9f31d1257be72615), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 YD)" )
+GAME_CUSTOM( 199?, m4luxor__x, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lx_10sd_.1o1", 0x0000, 0x010000, CRC(cc59d370) SHA1(a428d93c005b629e86810c85ea91630a354e170b), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 D)" )
+GAME_CUSTOM( 199?, m4luxor__z, m4luxor, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPLB), mpu4, init_m4, "lxi10a__.1o1", 0x0000, 0x010000, CRC(17989464) SHA1(67aa9cc01d89ed4caeb33885f53dcaee762ccb6d), "BWB","Luxor (Barcrest) (MPU4) (LX101.0 CK)" )
// different protection
// no copyright string and "V1 0.6" hacked to say 'From EGYPT' rather than the manufacturer
-GAME_CUSTOM( 199?, m4luxor__j, m4luxor, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "luxor.rom", 0x0000, 0x010000, CRC(55277510) SHA1(9a866c36a398df52c54b554cd8085078c1f1954b), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 1)" )
-GAME_CUSTOM( 199?, m4luxor__c, m4luxor, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_lextender, "lux208c", 0x0000, 0x010000, CRC(f57bae67) SHA1(3a2523a2121948480381f49e26e870b10d541304), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 2)" )
-GAME_CUSTOM( 199?, m4luxor__o, m4luxor, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_lextender, "lux_20.4", 0x0000, 0x010000, CRC(50b3e5cc) SHA1(ff08095c01d8eeff320b5a04fe9f7e1888690cf8), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 3)" )
-GAME_CUSTOM( 199?, m4luxor__p, m4luxor, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_lextender, "lux_20_8", 0x0000, 0x010000, CRC(6c9a7152) SHA1(e38e8452e0d3f5b0e8ac51da272ab9f2e57e1d89), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 4)" )
+GAME_CUSTOM( 199?, m4luxor__j, m4luxor, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "luxor.rom", 0x0000, 0x010000, CRC(55277510) SHA1(9a866c36a398df52c54b554cd8085078c1f1954b), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 1)" )
+GAME_CUSTOM( 199?, m4luxor__c, m4luxor, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPLB), mpu4, init_m4, "lux208c", 0x0000, 0x010000, CRC(f57bae67) SHA1(3a2523a2121948480381f49e26e870b10d541304), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 2)" )
+GAME_CUSTOM( 199?, m4luxor__o, m4luxor, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPLB), mpu4, init_m4, "lux_20.4", 0x0000, 0x010000, CRC(50b3e5cc) SHA1(ff08095c01d8eeff320b5a04fe9f7e1888690cf8), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 3)" )
+GAME_CUSTOM( 199?, m4luxor__p, m4luxor, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPLB), mpu4, init_m4, "lux_20_8", 0x0000, 0x010000, CRC(6c9a7152) SHA1(e38e8452e0d3f5b0e8ac51da272ab9f2e57e1d89), "hack","Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 4)" )
// "ROBIN HOOD" and "LX5 1.0"
-GAME_CUSTOM( 199?, m4luxor__a, m4luxor, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default_lextender, "lux05_101", 0x0000, 0x010000, CRC(8f4dc4f4) SHA1(c9743a1b79b377313504296a060dff3f413a7a9d), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 1)" )
-GAME_CUSTOM( 199?, m4luxor__d, m4luxor, mod4oki_bootleg_fixedret<0x2b>, mpu4, init_m4default_lextender, "lux55", 0x0000, 0x010000, CRC(997419ab) SHA1(c616a5d6cb347963e7e5c5b88912c248bae184ca), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 2)" )
-GAME_CUSTOM( 199?, m4luxor__e, m4luxor, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_lextender, "lux58c", 0x0000, 0x010000, CRC(da408721) SHA1(971413620d1f304a026d3adc68f6ac5c1d104e20), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 3)" )
-GAME_CUSTOM( 199?, m4luxor__k, m4luxor, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_lextender, "lux_05_4", 0x0000, 0x010000, CRC(335503ec) SHA1(dd03096aa98e4cac9fade6e77f9f8a8ad9a64287), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 4)" )
-GAME_CUSTOM( 199?, m4luxor__l, m4luxor, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_lextender, "lux_05_8", 0x0000, 0x010000, CRC(43a15814) SHA1(694c8c6ee695bb746391f5269f540c995fc18002), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 5)" )
+GAME_CUSTOM( 199?, m4luxor__a, m4luxor, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, LPLB), mpu4, init_m4, "lux05_101", 0x0000, 0x010000, CRC(8f4dc4f4) SHA1(c9743a1b79b377313504296a060dff3f413a7a9d), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 1)" )
+GAME_CUSTOM( 199?, m4luxor__d, m4luxor, mod4oki_bootleg_fixedret<0x2b>(R4, RT1, LPLB), mpu4, init_m4, "lux55", 0x0000, 0x010000, CRC(997419ab) SHA1(c616a5d6cb347963e7e5c5b88912c248bae184ca), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 2)" )
+GAME_CUSTOM( 199?, m4luxor__e, m4luxor, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPLB), mpu4, init_m4, "lux58c", 0x0000, 0x010000, CRC(da408721) SHA1(971413620d1f304a026d3adc68f6ac5c1d104e20), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 3)" )
+GAME_CUSTOM( 199?, m4luxor__k, m4luxor, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPLB), mpu4, init_m4, "lux_05_4", 0x0000, 0x010000, CRC(335503ec) SHA1(dd03096aa98e4cac9fade6e77f9f8a8ad9a64287), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 4)" )
+GAME_CUSTOM( 199?, m4luxor__l, m4luxor, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPLB), mpu4, init_m4, "lux_05_8", 0x0000, 0x010000, CRC(43a15814) SHA1(694c8c6ee695bb746391f5269f540c995fc18002), "hack","Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 5)" )
// these are unusual in that they do both the initial check and secondary check at 0x812, rather than the secondary check as the usual characteriser address
// both checks must pass to avoid scrambled lamps
-GAME_CUSTOM( 199?, m4luxor__b, m4luxor, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_lextender, "lux10_101", 0x0000, 0x010000, CRC(8965c7be) SHA1(ca05803bc7d7a96e25dc0b025c2683b4679789fb), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 1)" )
-GAME_CUSTOM( 199?, m4luxor__m, m4luxor, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_lextender, "lux_10_4", 0x0000, 0x010000, CRC(122461d9) SHA1(a347c834b27a00abc1864a1e00316a491d04d84b), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 2)" )
-GAME_CUSTOM( 199?, m4luxor__n, m4luxor, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_lextender, "lux_10_8", 0x0000, 0x010000, CRC(544208e7) SHA1(85e2ff663b7500ee6bb0a900ee5ef48f7bf1934a), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 3)" )
+GAME_CUSTOM( 199?, m4luxor__b, m4luxor, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPLB), mpu4, init_m4, "lux10_101", 0x0000, 0x010000, CRC(8965c7be) SHA1(ca05803bc7d7a96e25dc0b025c2683b4679789fb), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 1)" )
+GAME_CUSTOM( 199?, m4luxor__m, m4luxor, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPLB), mpu4, init_m4, "lux_10_4", 0x0000, 0x010000, CRC(122461d9) SHA1(a347c834b27a00abc1864a1e00316a491d04d84b), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 2)" )
+GAME_CUSTOM( 199?, m4luxor__n, m4luxor, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPLB), mpu4, init_m4, "lux_10_8", 0x0000, 0x010000, CRC(544208e7) SHA1(85e2ff663b7500ee6bb0a900ee5ef48f7bf1934a), "Bwb / hack?","Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 3)" )
/*****************************************************************************************************************************************************************************
@@ -4403,7 +4378,7 @@ GAME_CUSTOM( 199?, m4luxor__n, m4luxor, mod4oki_bootleg_fixedret<0x2d>, mpu4, i
ROM_LOAD( name, offset, length, hash ) \
M4PRZLUX_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "PLX 0.2"
GAME_CUSTOM( 199?, m4przlux, 0, "plxs.p1", 0x0000, 0x010000, CRC(0aea0339) SHA1(28da52924fe2bf00799ef466143103e08399f5f5), "Barcrest","Prize Luxor (Barcrest) (MPU4) (PLX 0.2)" )
@@ -4434,7 +4409,7 @@ GAME_CUSTOM( 199?, m4przlux__f, m4przlux, "plxy.p1", 0x0000, 0x010000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4HIJINX_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// boots
// "(C)1993 BARCREST" and "JNX 1.0"
@@ -4466,7 +4441,7 @@ GAME_CUSTOM( 199?, m4hijinx__1, m4hijinx, "jns03y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4HIJINX_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "JNS 0.2"
GAME_CUSTOM( 199?, m4hijinx__n, m4hijinx, "jns02s.p1", 0x0000, 0x020000, CRC(42df2639) SHA1(8ed6addfc85cfeab4c5f03c24a692a9c392a8bc2), "Barcrest","Hi Jinx (Barcrest) (MPU4) (JNS 0.2)" )
@@ -4496,7 +4471,7 @@ GAME_CUSTOM( 199?, m4hijinx__5, m4hijinx, "jnx05h.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4HIJINX_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -4528,7 +4503,7 @@ GAME_CUSTOM( 199?, m4hijinx__b, m4hijinx, "hij15t", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4CASHLN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CLS 0.4"
GAME_CUSTOM( 199?, m4cashln, 0, "cls04s.p1", 0x0000, 0x020000, CRC(c8b7f355) SHA1(437324bf499ba49ecbb3854f5f787da5f575f7f5), "Barcrest","Cash Lines (Barcrest) (MPU4) (CLS 0.4)" )
@@ -4567,7 +4542,7 @@ GAME_CUSTOM( 199?, m4cashln__2, m4cashln, "cli12y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4CASHLN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CLS 0.3"
GAME_CUSTOM( 199?, m4cashln__af, m4cashln, "cls03s.p1", 0x0000, 0x020000, CRC(cb9a86b2) SHA1(2b4aee61c0070d295ba81ffa5739ceb8e05dc0e8), "Barcrest","Cash Lines (Barcrest) (MPU4) (CLS 0.3)" )
@@ -4636,7 +4611,7 @@ GAME_CUSTOM( 199?, m4cashln__a6, m4cashln, "ncc10y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4CASHLN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// these have different protection
@@ -4665,7 +4640,7 @@ GAME_CUSTOM( 199?, m4cashln__b, m4cashln, "cl15t", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4LUCKLV_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "LLV 0.2"
GAME_CUSTOM( 199?, m4lucklv, 0, "llvs.p1", 0x0000, 0x010000, CRC(30727bc9) SHA1(c32112d0181f629540b31ce9959834111dbf7e0e), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (LLV 0.2)" )
@@ -4692,7 +4667,7 @@ GAME_CUSTOM( 199?, m4lucklv__s, m4lucklv, "ll8y.p1", 0x0000, 0x010000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4LUCKLV_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "LL3 0.1"
GAME_CUSTOM( 199?, m4lucklv__h, m4lucklv, "ll3s.p1", 0x0000, 0x010000, CRC(fdda2e78) SHA1(f68b274b6af7b44347b8f684f6e8a9342d222590), "Barcrest","Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1)" )
@@ -4748,7 +4723,7 @@ GAME_CUSTOM( 199?, m4lucklv__ae, m4lucklv, "lluy.p1", 0x0000, 0x010000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4LVLCL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cashencounters_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cashencounters_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1998 BWB" and "LLU 0.1" // the LLU code is also used by some of the Barcrest sets, these are not the same version!
GAME_CUSTOM( 199?, m4lvlcl, 0, "ll__x__x.1_1", 0x0000, 0x010000, CRC(1ef1c5b4) SHA1(455c147f158f8a36a9add9b984abc22af78258cf), "BWB","Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 0.1)" )
@@ -4780,7 +4755,7 @@ GAME_CUSTOM( 199?, m4lvlcl__f, m4lvlcl, "ll__xgdx.3_1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4LUCKST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "LSS 0.7"
GAME_CUSTOM( 199?, m4luckst__2, m4luckst, "lss07s.p1", 0x0000, 0x020000, CRC(f4546d1a) SHA1(fed65704693e11087825b1dfda4df28ee6d2d3be), "Barcrest","Lucky Strike (Barcrest) (MPU4) (LSS 0.7)" )
@@ -4819,7 +4794,7 @@ GAME_CUSTOM( 199?, m4luckst__at, m4luckst, "lst10y.p1", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4LUCKST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "LSS 0.6" // doesn't show the extension codes on startup
GAME_CUSTOM( 199?, m4luckst, 0, "lss06s.p1", 0x0000, 0x020000, CRC(b6a69478) SHA1(6b05b7f9af94a83adfdff328d4132f72a1dfb19f), "Barcrest","Lucky Strike (Barcrest) (MPU4) (LSS 0.6)" )
@@ -4858,7 +4833,7 @@ GAME_CUSTOM( 199?, m4luckst__ag, m4luckst, "lst09y.p1", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4LUCKST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::luckystrikealt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::luckystrikealt_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1998 BWB" and "LSS 1.0"
GAME_CUSTOM( 199?, m4luckst__aw, m4luckst, "ls__xa_x.1_1", 0x0000, 0x020000, CRC(a9642503) SHA1(2765c4d8943678446c516918035d7a888a812aae), "BWB","Lucky Strike (Barcrest) (MPU4) (LSS 1.0 K)" )
@@ -4871,7 +4846,7 @@ GAME_CUSTOM( 199?, m4luckst__aw, m4luckst, "ls__xa_x.1_1", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4LUCKST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x29>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x29>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1998 BWB" and "LSS 1.0" but non-standard protection check, so hack
GAME_CUSTOM( 199?, m4luckst__av, m4luckst, "ls55", 0x0000, 0x020000, CRC(823e805b) SHA1(17f09fd53188950a8d98ac04cd94785947b52b01), "hack","Lucky Strike (Barcrest) (MPU4) (LSS 1.0 K, hack)" )
@@ -4883,7 +4858,7 @@ GAME_CUSTOM( 199?, m4luckst__av, m4luckst, "ls55", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4LUCKST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x1c>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x1c>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and "LSS 0.6"
GAME_CUSTOM( 199?, m4luckst__au, m4luckst, "lstrikegame10-8t.bin", 0x0000, 0x020000, CRC(709c2dbf) SHA1(bba8d7af9502911ffa1c086b993484ab78ad38ac), "hack","Lucky Strike (Barcrest) (MPU4) (LSS 0.6 C, hack, set 1)" )
@@ -4895,7 +4870,7 @@ GAME_CUSTOM( 199?, m4luckst__au, m4luckst, "lstrikegame10-8t.bin", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4LUCKST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and "LST 0.9"
GAME_CUSTOM( 199?, m4luckst__a, m4luckst, "ls15g", 0x0000, 0x020000, CRC(b942ac91) SHA1(e77b2acd07cac9b747731f9e0637112fc6bf94c7), "hack","Lucky Strike (Barcrest) (MPU4) (LST 0.9, hack)" )
@@ -4907,7 +4882,7 @@ GAME_CUSTOM( 199?, m4luckst__a, m4luckst, "ls15g", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4LUCKST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x72>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x72>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and "LSS 0.6"
GAME_CUSTOM( 199?, m4luckst__b, m4luckst, "ls15t", 0x0000, 0x020000, CRC(20447a20) SHA1(ca2ba566317ca87afcc2501e551c1326b9712526), "hack","Lucky Strike (Barcrest) (MPU4) (LSS 0.6 C, hack, set 2)" )
@@ -4923,39 +4898,32 @@ GAME_CUSTOM( 199?, m4luckst__b, m4luckst, "ls15t", 0x0000, 0
// gives Wrong Sound Need V1
// ALM17, use Q to open door to run anyway
-void mpu4mod4oki_machines_state::init_m4tenten()
-{
- init_m4default();
-// init_m4default();
- //Derived from 10_x_10_(Barcrest)_[C01_v1-0_1024_10jp].gam
- use_m4_hopper_duart_a();
- use_m4_standard_reels();
- //PCKEY =9
- //STKEY =3
- //JPKEY =7
- //JPSET =3
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=true
- //DIP2_6=false
- //DIP2_7=false
- //Sound barcrest1
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000 LVD= 0
- //Front door code 39 Cash door code 38
-}
+//Derived from 10_x_10_(Barcrest)_[C01_v1-0_1024_10jp].gam
+//PCKEY =9
+//STKEY =3
+//JPKEY =7
+//JPSET =3
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=true
+//DIP2_6=false
+//DIP2_7=false
+//Sound barcrest1
+//Standard
+//Volume 0 Stereo= 1
+//Sample rate 16000 LVD= 0
+//Front door code 39 Cash door code 38
#define M4TENTEN_EXTRA_ROMS \
ROM_REGION( 0x080000, "msm6376", 0 ) \
@@ -4968,7 +4936,7 @@ void mpu4mod4oki_machines_state::init_m4tenten()
ROM_LOAD( name, offset, length, hash ) \
M4TENTEN_EXTRA_ROMS \
ROM_END \
- GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4tenten, ROT0, company, title, GAME_FLAGS, layout_m4tenten )
+ GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, HDA), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS, layout_m4tenten )
// "(C)1991 BARCREST" and "T2T 0.1"
GAME_CUSTOM( 199?, m4tenten__af, m4tenten, "t2t01s.p1", 0x0000, 0x010000, CRC(75b421e3) SHA1(d5de7485180baf9d8458a895edbfd65310fed2cc), "Barcrest","10 X 10 (Barcrest) (MPU4) (T2T 0.1)" )
@@ -5014,7 +4982,7 @@ GAME_CUSTOM( 199?, m4tenten__a2, m4tenten, "tst01y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TENTEN_EXTRA_ROMS \
ROM_END \
- GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4tenten, ROT0, company, title, GAME_FLAGS, layout_m4tenten )
+ GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1, HDA), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS, layout_m4tenten )
// "(C)1991 BARCREST" and "T20 0.2"
GAME_CUSTOM( 199?, m4tenten, 0, "t2002s.p1", 0x0000, 0x010000, CRC(6cd9fa10) SHA1(8efe36e3fc5b709fa4363194634686d62b5d6609), "Barcrest","10 X 10 (Barcrest) (MPU4) (T20 0.2)" )
@@ -5062,38 +5030,32 @@ GAME_CUSTOM( 199?, m4tenten__5, m4tenten, "t2504y.p1", 0x0000, 0x010000,
*****************************************************************************************************************************************************************************/
-void mpu4mod4oki_machines_state::init_m4andyfh()
-{
- //Derived from Andy's_Full_House_(Barcrest)_[C01_800_10jp].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_standard_reels();
- //PCKEY =b
- //STKEY =2
- //JPKEY =7
- //JPSET =3
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=true
- //DIP2_1=true
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=true
- //DIP2_6=false
- //DIP2_7=false
- //Sound barcrest1
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000
- //Front door code 0 Cash door code 0
-}
+//Derived from Andy's_Full_House_(Barcrest)_[C01_800_10jp].gam
+//PCKEY =b
+//STKEY =2
+//JPKEY =7
+//JPSET =3
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=true
+//DIP2_1=true
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=true
+//DIP2_6=false
+//DIP2_7=false
+//Sound barcrest1
+//Standard
+//Volume 0 Stereo= 1
+//Sample rate 16000
+//Front door code 0 Cash door code 0
#define M4ANDYFH_EXTRA_ROMS \
ROM_REGION( 0x100000, "msm6376", 0 ) \
@@ -5107,7 +5069,7 @@ void mpu4mod4oki_machines_state::init_m4andyfh()
ROM_LOAD( name, offset, length, hash ) \
M4ANDYFH_EXTRA_ROMS \
ROM_END \
- GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4andyfh, ROT0, company, title, GAME_FLAGS, layout_m4andyfh )
+ GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, HT), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS, layout_m4andyfh )
// "(C)1991 BARCREST" and "AFH 0.1"
@@ -5182,7 +5144,7 @@ GAME_CUSTOM( 199?, m4andyfh__a4, m4andyfh, "cauy.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4ANDYFH_EXTRA_ROMS \
ROM_END \
- GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::saynomore_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4andyfh, ROT0, company, title, GAME_FLAGS, layout_m4andyfh )
+ GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::saynomore_characteriser_prot>(R4, RT1, HT), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS, layout_m4andyfh )
// "(C)1991 BARCREST" and "AFU 0.2"
GAME_CUSTOM( 199?, m4andyfh__ac, m4andyfh, "afus.p1", 0x0000, 0x010000, CRC(efbde76c) SHA1(abad98f2affb46e449a50f5a43729160b275294b), "Barcrest","Andy's Full House (Barcrest) (MPU4) (AFU 0.2)" )
@@ -5215,7 +5177,7 @@ GAME_CUSTOM( 199?, m4andyfh__ad, m4andyfh, "afuy.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4BDASH_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "BLD 1.0"
GAME_CUSTOM( 199?, m4bdash__2, m4bdash, "bld10s.p1", 0x0000, 0x020000, CRC(c59c186b) SHA1(83f16e15a215fe1cf3c07fac7268b00c55e0ff5b), "Barcrest","Boulder Dash (Barcrest) (MPU4) (BLD 1.0)" )
@@ -5255,7 +5217,7 @@ GAME_CUSTOM( 199?, m4bdash__au, m4bdash, "bls02y.p1", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4BDASH_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bdash_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bdash_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// many of the sets below won't show the BAD CHR error in the display if it's incorrect
@@ -5299,7 +5261,7 @@ GAME_CUSTOM( 199?, m4bdash__p, m4bdash, "bld07y.p1", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4BDASH_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tictak_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tictak_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1999 BWB" and "BO_ 2.0"
GAME_CUSTOM( 199?, m4bdash__ax, m4bdash, "bo__x__x.2_0", 0x0000, 0x020000, CRC(7e54982f) SHA1(c5187d2f6a5b202af5fd6326d52451d3b3f48f33), "BWB","Boulder Dash (Barcrest) (MPU4) (BO_ 2.0)" )
@@ -5319,7 +5281,7 @@ GAME_CUSTOM( 199?, m4bdash__a4, m4bdash, "bo__xb_x.2_1", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4BDASH_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and "BLD 0.7"
@@ -5334,7 +5296,7 @@ GAME_CUSTOM( 199?, m4bdash__aw, m4bdash, "bold15t", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4BDASH_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x68>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x68>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and "BLD 1.0"
GAME_CUSTOM( 199?, m4bdash__a, m4bdash, "bdvarg.bin", 0x0000, 0x020000, CRC(99d579e7) SHA1(afc47144e0a8d464d8547b1ad14b0a3a1c15c027), "hack","Boulder Dash (Barcrest) (MPU4) (BLD 1.0, hack)" )
@@ -5358,7 +5320,7 @@ GAME_CUSTOM( 199?, m4bdash__a, m4bdash, "bdvarg.bin", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4PRZMON_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_six_alt, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>(R6A, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "FP8 0.1"
GAME_CUSTOM( 199?, m4przmon, 0, "fp8s.p1", 0x0000, 0x010000, CRC(b43eef89) SHA1(15991ad9223ddce77277f5451b5557ff59e2647c), "Barcrest","Prize Money (Barcrest) (MPU4) (FP8 0.1)" )
@@ -5399,7 +5361,7 @@ GAME_CUSTOM( 199?, m4przmon__p, m4przmon, "fpmy.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4PRZMNS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_six_alt, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>(R6A, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "SPM 0.2"
GAME_CUSTOM( 199?, m4przmns, 0, "spms.p1", 0x0000, 0x010000, CRC(7d684358) SHA1(b07b13d6827e5ea4127eb763f4233a3d35ea99e6), "Barcrest","Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2)" )
@@ -5438,7 +5400,7 @@ GAME_CUSTOM( 199?, m4przmns__i, m4przmns, "sm8y.p1", 0x0000, 0x010000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4PRZHR_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::take2_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "PRL 0.3"
GAME_CUSTOM( 199?, m4przhr, 0, "prls.p1", 0x0000, 0x010000, CRC(8cc08272) SHA1(8b25b99291a288f198573272d705c3592c7c60e6), "Barcrest","Prize High Roller (Barcrest) (MPU4) (PRL 0.3)" )
@@ -5457,7 +5419,7 @@ GAME_CUSTOM( 199?, m4przhr__o, m4przhr, "prlk.p1", 0x0000, 0x010000, CRC(f2
ROM_LOAD( name, offset, length, hash ) \
M4PRZHR_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "PR3 0.1"
GAME_CUSTOM( 199?, m4przhr__h, m4przhr, "pr3s.p1", 0x0000, 0x010000, CRC(e4968894) SHA1(92b4b930f3bf370b213a72ad8328f19d5ebbd471), "Barcrest","Prize High Roller (Barcrest) (MPU4) (PR3 0.1)" )
@@ -5492,7 +5454,7 @@ GAME_CUSTOM( 199?, m4przhr__i, m4przhr, "pr3y.p1", 0x0000, 0x010000, CRC(81
ROM_LOAD( name, offset, length, hash ) \
M4GCLUE_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "C20 0.2"
GAME_CUSTOM( 199?, m4gclue, 0, "c2002s.p1", 0x0000, 0x010000, CRC(fe640d18) SHA1(598e5a92bd26457cbd0cbd1f73cddb56054ff826), "Barcrest","Give Us A Clue (Barcrest) (MPU4) (C20 0.2)" )
@@ -5541,7 +5503,7 @@ GAME_CUSTOM( 199?, m4gclue__w, m4gclue, "c2504y.p1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4VEGAST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "UVS 0.3"
GAME_CUSTOM( 199?, m4vegast, 0, "uvss.p1", 0x0000, 0x020000, CRC(8b5b120f) SHA1(90749c4f986a248252661b8e4157871330673ecd), "Barcrest","Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3)" )
@@ -5562,7 +5524,7 @@ GAME_CUSTOM( 199?, m4vegast__i, m4vegast, "uvsy.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4VEGAST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::jewelcrown_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::jewelcrown_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "VSG 0.4"
GAME_CUSTOM( 199?, m4vegast__t, m4vegast, "vsg04s.p1", 0x0000, 0x020000, CRC(aff47295) SHA1(d249f280b721c96b7c36329e2c2bb955fa91aa59), "Barcrest","Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4)" )
@@ -5588,7 +5550,7 @@ GAME_CUSTOM( 199?, m4vegast__x, m4vegast, "vstr2010", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4VEGAST_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and VSG 0.4
@@ -5621,37 +5583,37 @@ GAME_CUSTOM( 199?, m4vegast__1, m4vegast, "vegas15t", 0
GAME( year, setname, parent, machine, inputs, mpu4mod4oki_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "ROD 0.4"
-GAME_CUSTOM( 199?, m4hotrod, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default_sextender, "rodk.p1", 0x0000, 0x010000, CRC(298d85ff) SHA1(3c9374be1f6b5e58a1b9004f74f3a33d0fff4214), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4K)" )
-GAME_CUSTOM( 199?, m4hotrod__h, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default_sextender, "rodc.p1", 0x0000, 0x010000, CRC(2f6b53d3) SHA1(fa4df1e6a2f6158cbc099d7e2d5ec96355079f36), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4C)" ) // 6.00 GBP Jackpot strings
-GAME_CUSTOM( 199?, m4hotrod__i, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default_sextender, "roddy.p1", 0x0000, 0x010000, CRC(53e508ac) SHA1(24df8b949211e7bc5c7b8d704562b36e52cb8d5c), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4YD)" )
-GAME_CUSTOM( 199?, m4hotrod__j, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default_sextender, "rods.p1", 0x0000, 0x010000, CRC(93d73857) SHA1(dcfd1dbf368f68ba3e7aa163eedd89c68aaccec8), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4)" )
+GAME_CUSTOM( 199?, m4hotrod, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rodk.p1", 0x0000, 0x010000, CRC(298d85ff) SHA1(3c9374be1f6b5e58a1b9004f74f3a33d0fff4214), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4K)" )
+GAME_CUSTOM( 199?, m4hotrod__h, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rodc.p1", 0x0000, 0x010000, CRC(2f6b53d3) SHA1(fa4df1e6a2f6158cbc099d7e2d5ec96355079f36), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4C)" ) // 6.00 GBP Jackpot strings
+GAME_CUSTOM( 199?, m4hotrod__i, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "roddy.p1", 0x0000, 0x010000, CRC(53e508ac) SHA1(24df8b949211e7bc5c7b8d704562b36e52cb8d5c), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4YD)" )
+GAME_CUSTOM( 199?, m4hotrod__j, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "rods.p1", 0x0000, 0x010000, CRC(93d73857) SHA1(dcfd1dbf368f68ba3e7aa163eedd89c68aaccec8), "Barcrest","Hot Rod (Barcrest) (MPU4) (ROD 0.4)" )
// "(C)1994 B.W.B." and "HR__1.0"
-GAME_CUSTOM( 199?, m4hotrod__k, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_sextender, "hr_05___.1o1", 0x0000, 0x010000, CRC(abdb0a16) SHA1(5db2721326a22b9d8653773ec8de8a845d147eee), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0, set 1)" )
-GAME_CUSTOM( 199?, m4hotrod__l, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_sextender, "hr_05_d_.1o1", 0x0000, 0x010000, CRC(8a14fa8d) SHA1(8d64a75514d0a58fcdc2d5a81c0b85a49ab8322b), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 1)" )
-GAME_CUSTOM( 199?, m4hotrod__o, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_sextender, "hri05___.101", 0x0000, 0x010000, CRC(43e5e86e) SHA1(8bf00b1af1f86f1a361537a1117d857fa8fa7af4), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 1)" )
-GAME_CUSTOM( 199?, m4hotrod__m, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_sextender, "hr_10___.1o1", 0x0000, 0x010000, CRC(5e09202f) SHA1(06991f5fd451fff77ef7ab0b866543613c3dcc02), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0, set 2)" )
-GAME_CUSTOM( 199?, m4hotrod__n, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_sextender, "hr_10_d_.1o1", 0x0000, 0x010000, CRC(329409c5) SHA1(e9ba0f36048f46a381c8a408b9c1e10acea0bde3), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 2)" )
-GAME_CUSTOM( 199?, m4hotrod__p, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>, mpu4, init_m4default_sextender, "hri10___.1o1", 0x0000, 0x010000, CRC(a855f93c) SHA1(2b63aa7c632f14457c2ae0312cef7b22bbf1df22), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 2)" )
+GAME_CUSTOM( 199?, m4hotrod__k, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "hr_05___.1o1", 0x0000, 0x010000, CRC(abdb0a16) SHA1(5db2721326a22b9d8653773ec8de8a845d147eee), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0, set 1)" )
+GAME_CUSTOM( 199?, m4hotrod__l, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "hr_05_d_.1o1", 0x0000, 0x010000, CRC(8a14fa8d) SHA1(8d64a75514d0a58fcdc2d5a81c0b85a49ab8322b), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 1)" )
+GAME_CUSTOM( 199?, m4hotrod__o, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "hri05___.101", 0x0000, 0x010000, CRC(43e5e86e) SHA1(8bf00b1af1f86f1a361537a1117d857fa8fa7af4), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 1)" )
+GAME_CUSTOM( 199?, m4hotrod__m, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "hr_10___.1o1", 0x0000, 0x010000, CRC(5e09202f) SHA1(06991f5fd451fff77ef7ab0b866543613c3dcc02), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0, set 2)" )
+GAME_CUSTOM( 199?, m4hotrod__n, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "hr_10_d_.1o1", 0x0000, 0x010000, CRC(329409c5) SHA1(e9ba0f36048f46a381c8a408b9c1e10acea0bde3), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 2)" )
+GAME_CUSTOM( 199?, m4hotrod__p, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::hotrodalt_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "hri10___.1o1", 0x0000, 0x010000, CRC(a855f93c) SHA1(2b63aa7c632f14457c2ae0312cef7b22bbf1df22), "BWB","Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 2)" )
// "(C)1995 B.W.B." and "HRC_1.0"
-GAME_CUSTOM( 199?, m4hotrod__a, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::buc_characteriser_prot>, mpu4, init_m4default_sextender, "hot rod 5p 4 p1,27512", 0x0000, 0x010000, CRC(b6212af8) SHA1(9453c4424244895b3ad15d5fba45fe8822e7ff2b), "BWB","Hot Rod (Barcrest) (MPU4) (HRC_1.0C)" )
+GAME_CUSTOM( 199?, m4hotrod__a, m4hotrod, mod4oki_cheatchr_pal<mpu4_characteriser_pal::buc_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "hot rod 5p 4 p1,27512", 0x0000, 0x010000, CRC(b6212af8) SHA1(9453c4424244895b3ad15d5fba45fe8822e7ff2b), "BWB","Hot Rod (Barcrest) (MPU4) (HRC_1.0C)" )
// no copyright string and "HR__1.0", different protection
-GAME_CUSTOM( 199?, m4hotrod__b, m4hotrod, mod4oki_bootleg_fixedret<0x45>, mpu4, init_m4default_sextender, "hr056c", 0x0000, 0x010000, CRC(c062f285) SHA1(917e82cadf242aa815c525ff435cd4b04ea87e39), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 1)" )
-GAME_CUSTOM( 199?, m4hotrod__c, m4hotrod, mod4oki_bootleg_fixedret<0x1d>, mpu4, init_m4default_sextender, "hrod05_11", 0x0000, 0x010000, CRC(61f35723) SHA1(743b71ecde4923c359a1202eaad7e4d74b0d1611), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 2)" )
-GAME_CUSTOM( 199?, m4hotrod__d, m4hotrod, mod4oki_bootleg_fixedret<0x1f>, mpu4, init_m4default_sextender, "hrod10_11", 0x0000, 0x010000, CRC(5b924a86) SHA1(6b86dce6ba3789750de05dca996202c000ecfbae), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 3)" )
-GAME_CUSTOM( 199?, m4hotrod__f, m4hotrod, mod4oki_bootleg_fixedret<0x29>, mpu4, init_m4default_sextender, "hrod55", 0x0000, 0x010000, CRC(dd6d3153) SHA1(27f3324b43c026abf2ae4c584afeb6971a3fe57a), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 4)" )
-GAME_CUSTOM( 199?, m4hotrod__g, m4hotrod, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_sextender, "hrod58c", 0x0000, 0x010000, CRC(079474db) SHA1(257b1086277cd0b8398b80a4b95cf1212c10c4c3), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 5)" )
-GAME_CUSTOM( 199?, m4hotrod__q, m4hotrod, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_sextender, "hrod_05_.4", 0x0000, 0x010000, CRC(c58aa0e8) SHA1(8a2b5a9bd4e93a7a12cae4e92e0faf35e2ebbe4c), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 6)" )
-GAME_CUSTOM( 199?, m4hotrod__r, m4hotrod, mod4oki_bootleg_fixedret<0x2d>, mpu4, init_m4default_sextender, "hrod_05_.8", 0x0000, 0x010000, CRC(b3c9e0c9) SHA1(4a549876121dd7fc5c11d3b03322d1e5f90eaa86), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 7)" )
-GAME_CUSTOM( 199?, m4hotrod__s, m4hotrod, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "hrod_10_.4", 0x0000, 0x010000, CRC(b9e84451) SHA1(7566aef1604992376010758cb079fe9da67ad454), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 8)" )
-GAME_CUSTOM( 199?, m4hotrod__t, m4hotrod, mod4oki_bootleg_fixedret<0x2f>, mpu4, init_m4default_sextender, "hrod_10_.8", 0x0000, 0x010000, CRC(62ac8057) SHA1(d2085ec0f29ff85251ef2c576e828f502420839d), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 9)" )
+GAME_CUSTOM( 199?, m4hotrod__b, m4hotrod, mod4oki_bootleg_fixedret<0x45>(R4, RT1, LPS), mpu4, init_m4, "hr056c", 0x0000, 0x010000, CRC(c062f285) SHA1(917e82cadf242aa815c525ff435cd4b04ea87e39), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 1)" )
+GAME_CUSTOM( 199?, m4hotrod__c, m4hotrod, mod4oki_bootleg_fixedret<0x1d>(R4, RT1, LPS), mpu4, init_m4, "hrod05_11", 0x0000, 0x010000, CRC(61f35723) SHA1(743b71ecde4923c359a1202eaad7e4d74b0d1611), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 2)" )
+GAME_CUSTOM( 199?, m4hotrod__d, m4hotrod, mod4oki_bootleg_fixedret<0x1f>(R4, RT1, LPS), mpu4, init_m4, "hrod10_11", 0x0000, 0x010000, CRC(5b924a86) SHA1(6b86dce6ba3789750de05dca996202c000ecfbae), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 3)" )
+GAME_CUSTOM( 199?, m4hotrod__f, m4hotrod, mod4oki_bootleg_fixedret<0x29>(R4, RT1, LPS), mpu4, init_m4, "hrod55", 0x0000, 0x010000, CRC(dd6d3153) SHA1(27f3324b43c026abf2ae4c584afeb6971a3fe57a), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 4)" )
+GAME_CUSTOM( 199?, m4hotrod__g, m4hotrod, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPS), mpu4, init_m4, "hrod58c", 0x0000, 0x010000, CRC(079474db) SHA1(257b1086277cd0b8398b80a4b95cf1212c10c4c3), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 5)" )
+GAME_CUSTOM( 199?, m4hotrod__q, m4hotrod, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPS), mpu4, init_m4, "hrod_05_.4", 0x0000, 0x010000, CRC(c58aa0e8) SHA1(8a2b5a9bd4e93a7a12cae4e92e0faf35e2ebbe4c), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 6)" )
+GAME_CUSTOM( 199?, m4hotrod__r, m4hotrod, mod4oki_bootleg_fixedret<0x2d>(R4, RT1, LPS), mpu4, init_m4, "hrod_05_.8", 0x0000, 0x010000, CRC(b3c9e0c9) SHA1(4a549876121dd7fc5c11d3b03322d1e5f90eaa86), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 7)" )
+GAME_CUSTOM( 199?, m4hotrod__s, m4hotrod, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "hrod_10_.4", 0x0000, 0x010000, CRC(b9e84451) SHA1(7566aef1604992376010758cb079fe9da67ad454), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 8)" )
+GAME_CUSTOM( 199?, m4hotrod__t, m4hotrod, mod4oki_bootleg_fixedret<0x2f>(R4, RT1, LPS), mpu4, init_m4, "hrod_10_.8", 0x0000, 0x010000, CRC(62ac8057) SHA1(d2085ec0f29ff85251ef2c576e828f502420839d), "hack","Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 9)" )
// these don't want the protection device mapped
-GAME_CUSTOM( 199?, m4hotrod__e, m4hotrod, mod4oki, mpu4, init_m4default_sextender, "hrod20_11", 0x0000, 0x010000, CRC(b81a57b6) SHA1(442c119b9ed70d4da2f9082ec01e410cfee76102), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4C, hack?, set 1)" ) // 10.00 GBP Jackpot strings
-GAME_CUSTOM( 199?, m4hotrod__u, m4hotrod, mod4oki, mpu4, init_m4default_sextender, "hrod_20_.4", 0x0000, 0x010000, CRC(c58bb470) SHA1(7bb831d7b647d17eff896ccce0ab7c8cfa8179b8), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4C, hack?, set 2)" ) // 4.00 GBP Jackpot strings
-GAME_CUSTOM( 199?, m4hotrod__v, m4hotrod, mod4oki, mpu4, init_m4default_sextender, "hrod_20_.8", 0x0000, 0x010000, CRC(a2d20781) SHA1(3f1b33374ae0a61815b38ad0e57856ae16047adc), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4, hack?, set 3)" )
+GAME_CUSTOM( 199?, m4hotrod__e, m4hotrod, mod4oki(R4, RT1, LPS), mpu4, init_m4, "hrod20_11", 0x0000, 0x010000, CRC(b81a57b6) SHA1(442c119b9ed70d4da2f9082ec01e410cfee76102), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4C, hack?, set 1)" ) // 10.00 GBP Jackpot strings
+GAME_CUSTOM( 199?, m4hotrod__u, m4hotrod, mod4oki(R4, RT1, LPS), mpu4, init_m4, "hrod_20_.4", 0x0000, 0x010000, CRC(c58bb470) SHA1(7bb831d7b647d17eff896ccce0ab7c8cfa8179b8), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4C, hack?, set 2)" ) // 4.00 GBP Jackpot strings
+GAME_CUSTOM( 199?, m4hotrod__v, m4hotrod, mod4oki(R4, RT1, LPS), mpu4, init_m4, "hrod_20_.8", 0x0000, 0x010000, CRC(a2d20781) SHA1(3f1b33374ae0a61815b38ad0e57856ae16047adc), "hack", "Hot Rod (Barcrest) (MPU4) (ROD 0.4, hack?, set 3)" )
/*****************************************************************************************************************************************************************************
@@ -5673,7 +5635,7 @@ GAME_CUSTOM( 199?, m4hotrod__v, m4hotrod, mod4oki, mpu4, init_m4default_sext
ROM_LOAD( name, offset, length, hash ) \
M4BUC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "BUG 0.5"
GAME_CUSTOM( 199?, m4buc__0, m4buc, "bug05s.p1", 0x000000, 0x020000, CRC(99ce7ada) SHA1(6cdb17d8dfd759ceb2d7acd5f6b15952106f3178), "Barcrest","Buccaneer (Barcrest) (MPU4) (BUG 0.5)" )
@@ -5711,7 +5673,7 @@ GAME_CUSTOM( 199?, m4buc__ar, m4buc, "bus02y.p1", 0x000000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4BUC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::buc_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::buc_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "BUG 0.4"
GAME_CUSTOM( 199?, m4buc, 0, "bug04s.p1", 0x000000, 0x020000, CRC(0f76cf1d) SHA1(e0081f88e23958564a87346082629c4fdc0cc147), "Barcrest","Buccaneer (Barcrest) (MPU4) (BUG 0.4)" )
@@ -5749,7 +5711,7 @@ GAME_CUSTOM( 199?, m4buc__ae, m4buc, "bus01y.p1", 0x000000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4BUC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bucalt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bucalt_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1999 BWB" and "BR_ 1.0"
GAME_CUSTOM( 199?, m4buc__as, m4buc, "br_sj___.1_1", 0x000000, 0x020000, CRC(02c30d48) SHA1(8e5d09d721bf6e1876d672b6c84f46666cf42b90), "BWB","Buccaneer (Barcrest) (MPU4) (BR_ 1.0)" )
@@ -5769,7 +5731,7 @@ GAME_CUSTOM( 199?, m4buc__n, m4buc, "buccaneer5-15sw.bin", 0x000000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4BUC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
// no copyright string and "BUG 0.4"
@@ -5800,7 +5762,7 @@ GAME_CUSTOM( 199?, m4buc__b, m4buc, "bucc15t", 0x000000, 0x020000
ROM_LOAD( name, offset, length, hash ) \
M4JWLCWN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::jewelcrown_characteriser_prot>, mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::jewelcrown_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CJE 1.0"
GAME_CUSTOM( 199?, m4jwlcwn, 0, "cje10s.p1", 0x0000, 0x020000, CRC(5f3b72b7) SHA1(8faf0de0282a67c88170c13856b8816c38396e19), "Barcrest","Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0)" )
@@ -5840,7 +5802,7 @@ GAME_CUSTOM( 199?, m4jwlcwn__0, m4jwlcwn, "jitc2010", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4JWLCWN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1997 B.W.B." and "JC8 4.4"
GAME_CUSTOM( 199?, m4jwlcwn__1, m4jwlcwn, "jc__x___.4_1", 0x0000, 0x020000, CRC(5bf060ca) SHA1(a13795b145ff230437764f5414ec443e8fe4d783), "BWB","Jewel In the Crown (Barcrest) (MPU4) (JC8 4.4)" )
@@ -5863,7 +5825,7 @@ GAME_CUSTOM( 199?, m4jwlcwn__6, m4jwlcwn, "jc_xx__c.3_1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4JWLCWN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// no copyright string and "CJH 1.0"
GAME_CUSTOM( 199?, m4jwlcwn__y, m4jwlcwn, "jewel15g", 0x0000, 0x020000, CRC(bf3b8b63) SHA1(1ee91745438b9458ffbd43380bf9c6fd784fd054), "hack","Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 C, hack)" )
@@ -5890,7 +5852,7 @@ GAME_CUSTOM( 199?, m4jwlcwn__z, m4jwlcwn, "jewel15t", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4BAGTEL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "EL1 0.1"
GAME_CUSTOM( 199?, m4bagtel__r, m4bagtel, "el101s.p1", 0x0000, 0x010000, CRC(2035faf2) SHA1(1b640fee2f0ace25dfaa702ab2602cdec5ab6018), "Barcrest","Bagatelle (Barcrest) (MPU4) (EL1 0.1)" )
@@ -5939,7 +5901,7 @@ GAME_CUSTOM( 199?, m4bagtel__ag, m4bagtel, "el310y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4BAGTEL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bagtel_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bagtel_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "BGT 0.5"
GAME_CUSTOM( 199?, m4bagtel, 0, "bgt05s.p1", 0x0000, 0x010000, CRC(ddf1c7dc) SHA1(a786e5e04538ce498493795fc4054bb5de57ffd2), "Barcrest","Bagatelle (Barcrest) (MPU4) (BGT 0.5)" )
@@ -5970,7 +5932,7 @@ GAME_CUSTOM( 199?, m4bagtel__b, m4bagtel, "bg201dy.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4BERSER_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "BES 0.6"
GAME_CUSTOM( 199?, m4berser, 0, "bess.p1", 0x0000, 0x010000, CRC(b95bafbe) SHA1(034c80ef5fd0a12fad918c9b01bafb9a99c2e991), "Barcrest","Berserk (Barcrest) (MPU4) (BES 0.6)" )
@@ -6001,7 +5963,7 @@ GAME_CUSTOM( 199?, m4berser__t, m4berser, "be8y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4BERSER_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::berseralt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::berseralt_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "BE3 0.1"
GAME_CUSTOM( 199?, m4berser__h, m4berser, "be3s.p1", 0x0000, 0x010000, CRC(1a66772e) SHA1(e604315cea3db5f3859f1756e84b37b805f1f995), "Barcrest","Berserk (Barcrest) (MPU4) (BE3 0.1)" )
@@ -6021,7 +5983,7 @@ GAME_CUSTOM( 199?, m4berser__i, m4berser, "be3y.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4BERSER_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::berseralt2_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::berseralt2_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1996 B.W.B." and "BE4 1.1"
GAME_CUSTOM( 199?, m4berser__1, m4berser, "be_05a_4.1_1", 0x0000, 0x010000, CRC(e4ec1624) SHA1(e6241edb729796dd248abca6bf67281379c39af2), "BWB","Berserk (Barcrest) (MPU4) (BE4 1.1 KS)" )
@@ -6047,7 +6009,7 @@ GAME_CUSTOM( 199?, m4berser__1, m4berser, "be_05a_4.1_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TTDIA_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "TDA 0.4"
GAME_CUSTOM( 199?, m4ttdia, 0, "tda04s.p1", 0x0000, 0x020000, CRC(1240642e) SHA1(7eaf02d5c00707a0a6d98d247c293cad1ca87108), "Barcrest","Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4)" )
@@ -6073,38 +6035,32 @@ GAME_CUSTOM( 199?, m4ttdia__m, m4ttdia, "tda04y.p1", 0x0000, 0x020000, CR
*
*****************************************************************************************************************************************************************************/
-void mpu4mod4oki_machines_state::init_m4actbnk()
-{
- //Derived from Action_Bank_(Barcrest)_[C04_1024_8jp].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_standard_reels();
- //PCKEY =a
- //STKEY =2
- //JPKEY =6
- //JPSET =1
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=false
- //DIP2_6=false
- //DIP2_7=false
- //Sound barcrest1
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000
- //Front door code 39 Cash door code 38
-}
+//Derived from Action_Bank_(Barcrest)_[C04_1024_8jp].gam
+//PCKEY =a
+//STKEY =2
+//JPKEY =6
+//JPSET =1
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=false
+//DIP2_6=false
+//DIP2_7=false
+//Sound barcrest1
+//Standard
+//Volume 0 Stereo= 1
+//Sample rate 16000
+//Front door code 39 Cash door code 38
#define M4ACTBNK_EXTRA_ROMS \
ROM_REGION( 0x100000, "msm6376", 0 ) \
@@ -6118,7 +6074,7 @@ void mpu4mod4oki_machines_state::init_m4actbnk()
ROM_LOAD( name, offset, length, hash ) \
M4ACTBNK_EXTRA_ROMS \
ROM_END \
- GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>, mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4actbnk, ROT0, company, title, GAME_FLAGS, layout_m4actbnk )
+ GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actionbank_characteriser_prot>(R4, RT1, HT), mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS, layout_m4actbnk )
// these require a jackpot key to be inserted
@@ -6157,7 +6113,7 @@ GAME_CUSTOM( 199?, m4actbnk__i, m4actbnk, "actad.p1", 0x0000, 0x010000, CRC
ROM_LOAD( name, offset, length, hash ) \
M4CRDOME_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, inputs, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), inputs, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "CD2 1.2"
@@ -6186,7 +6142,7 @@ GAME_CUSTOM( 199?, m4crdome__n, m4crdome, mpu4jackpot8tkn20p, "cdome8ac"
ROM_LOAD( name, offset, length, hash ) \
M4CRDOME_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, inputs, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), inputs, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection
@@ -6215,7 +6171,7 @@ GAME_CUSTOM( 199?, m4crdome__l, m4crdome, mpu4jackpot8tkn20p, "cdom15r",
ROM_LOAD( name, offset, length, hash ) \
M4ROCKMN_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rockmn_characteriser_prot>, mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rockmn_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot8tkn, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// boots with 20p / 8 GBP Token setup
@@ -6254,7 +6210,7 @@ GAME_CUSTOM( 199?, m4rockmn__k, m4rockmn, "rok06y.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4MADHSE_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "MH5 0.2"
GAME_CUSTOM( 199?, m4madhse, 0, "mh502s.p1", 0x0000, 0x010000, CRC(063cc07b) SHA1(0b43a5cf6094bd8c99e4395f31ff073389dd56ce), "Barcrest","Mad House (Barcrest) (MPU4) (MH5 0.2)" )
@@ -6310,7 +6266,7 @@ GAME_CUSTOM( 199?, m4madhse__b, m4madhse, "mhty.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4NHTT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "NHT 0.1"
GAME_CUSTOM( 199?, m4nhtt, 0, "nht01s.p1", 0x0000, 0x010000, CRC(a4a44ddf) SHA1(e64953f3cd2559a8ebdacb2b0c12c84fd5c4b836), "Barcrest","New Hit the Top (Barcrest) (MPU4) (NHT 0.1)" )
@@ -6346,7 +6302,7 @@ GAME_CUSTOM( 199?, m4nhtt__j, m4nhtt, "nht01y.p1", 0x0000, 0x010000, CRC(5
ROM_LOAD( name, offset, length, hash ) \
M4PRZFRT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pfloot_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pfloot_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "PFR 0.3"
GAME_CUSTOM( 199?, m4przfrt, 0, "pfr03s.p1", 0x0000, 0x010000, CRC(0ea80adb) SHA1(948a23fe8ccf6f423957a478a57bb875cc7b2cc2), "Barcrest","Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3)" )
@@ -6385,7 +6341,7 @@ GAME_CUSTOM( 199?, m4przfrt__l, m4przfrt, "pfr03o.p1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4PRZWO_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "PWO 0.5"
GAME_CUSTOM( 199?, m4przwo, 0, "pwos.p1", 0x0000, 0x010000, CRC(6a87aa68) SHA1(3dc8c006de3adcada43c3581be0ff921081ecff0), "Barcrest","Prize What's On (Barcrest) (MPU4) (PWO 0.5)" )
@@ -6418,7 +6374,7 @@ GAME_CUSTOM( 199?, m4przwo__f, m4przwo, "pwoy.p1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4RHOG2_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "2RH 0.6"
GAME_CUSTOM( 199?, m4rhog2, 0, "2rh06s.p1", 0x0000, 0x020000, CRC(2ea10eed) SHA1(825bd6a53100b389f7d67ec49e4535c1de0ece74), "Barcrest","Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6)" )
@@ -6456,7 +6412,7 @@ GAME_CUSTOM( 199?, m4rhog2__m, m4rhog2, "2rh06y.p1", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4LUCKSC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_five_rev_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R5R, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1996 BARCREST" and "CLU 1.4"
GAME_CUSTOM( 199?, m4lucksc, 0, "clu14s.p1", 0x0000, 0x020000, CRC(5f66d7cc) SHA1(bd8a832739d7aef4d04b89a94dd2886e89a6e0c2), "Barcrest","Lucky Strike Club (Barcrest) (MPU4) (CLU 1.4)" )
@@ -6482,7 +6438,7 @@ GAME_CUSTOM( 199?, m4lucksc__j, m4lucksc, "ls301f.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4LUCKSC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_five_rev_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R5R, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1998 BWB" and "LSC 1.0"
GAME_CUSTOM( 199?, m4lucksc__l, m4lucksc, "lsc_.1_1", 0x0000, 0x020000, CRC(79ce3db0) SHA1(409e9d3b08284dee3af696fb7c839c0ca35eddee), "BWB","Lucky Strike Club (Barcrest) (MPU4) (LSC 1.0)" )
@@ -6506,7 +6462,7 @@ GAME_CUSTOM( 199?, m4lucksc__l, m4lucksc, "lsc_.1_1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4TOPDOG_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::copycat_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::copycat_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1997 B.W.B." and "TD 7.1" (Td4 in the 7-segs)
GAME_CUSTOM( 199?, m4topdog, 0, "td_20_b4.7_1", 0x0000, 0x010000, CRC(fe864f25) SHA1(b9f97aaf0425b4987b5bfa0b793e9226fdffe58f), "BWB","Top Dog (Barcrest) (MPU4) (TD4 7.1 YD / TD 7.1)" )
@@ -6561,7 +6517,7 @@ GAME_CUSTOM( 199?, m4topdog__z, m4topdog, "td_30btc.1_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4KINGQ_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::kingqn_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::kingqn_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1996 B.W.B." and "EE 2.1" (EE4 in 7-seg)
GAME_CUSTOM( 199?, m4kingq, 0, "ee_05a_4.2_1", 0x0000, 0x010000, CRC(8dd842b6) SHA1(1c1bcaae355ceee4d7b1572b0fa1a8b23a8afdbf), "BWB","Kings & Queens (Barcrest) (MPU4) (EE4 2.1 K/ EE 2.1)" )
@@ -6575,7 +6531,7 @@ GAME_CUSTOM( 199?, m4kingq__a, m4kingq, "ee_05a__.2_1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4KINGQ_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::luckystrike_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1995 B.W.B." and "EE_ 2.0" (EE in 7-seg)
GAME_CUSTOM( 199?, m4kingq__b, m4kingq, "ee_20a__.2_1", 0x0000, 0x010000, CRC(2c61341f) SHA1(76d68ae2a44087414be8be12b3824c62311721dd), "BWB","Kings & Queens (Barcrest) (MPU4) (EE 2.0 K / EE_ 2.0)" )
@@ -6598,7 +6554,7 @@ GAME_CUSTOM( 199?, m4kingq__j, m4kingq, "ee_20s_c.1_1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4KINGQ_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::kqee_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::kqee_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1995 B.W.B." and "EE_ 2.0" (EE' in 7-seg)
GAME_CUSTOM( 199?, m4kingq__l, m4kingq, "ee_25a_c.3_1", 0x0000, 0x010000, CRC(4dc25083) SHA1(b754b4003f73bd74d1670a36a70985ce5e48794d), "BWB","Kings & Queens (Barcrest) (MPU4) (EE' 2.0 K / EE_ 2.0)" )
@@ -6615,7 +6571,7 @@ GAME_CUSTOM( 199?, m4kingq__r, m4kingq, "ee_25sbc.3_1", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4KINGQ_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::kqee2_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::kqee2_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1998 B.W.B." and "EE2 1.0" (EE2 in 7-seg)
GAME_CUSTOM( 199?, m4kingq__t, m4kingq, "knq2pprg.bin", 0x0000, 0x010000, CRC(23b22f79) SHA1(3d8b9cbffb9b427897548981ddacf724215336a4), "BWB","Kings & Queens (Barcrest) (MPU4) (EE2 1.0 / EE2 1.0)" )
@@ -6642,7 +6598,7 @@ GAME_CUSTOM( 199?, m4kingq__t, m4kingq, "knq2pprg.bin", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4KINGQC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1996 B.W.B." and "CN4 6.0"
GAME_CUSTOM( 199?, m4kingqc, 0, "cn_20_b4.6_1", 0x0000, 0x010000, CRC(22d0b20c) SHA1(a7a4f60017cf62247339c9b23420d29845657895), "BWB","Kings & Queens Classic (Barcrest) (MPU4) (CN4 / CN4 6.0 YD)" )
@@ -6703,7 +6659,7 @@ GAME_CUSTOM( 199?, m4kingqc__5, m4kingqc, "cn_30btc.1_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TYPCL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_five_rev_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R5R, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1996 BARCREST" and "CTP 1.2"
GAME_CUSTOM( 199?, m4typcl, 0, "ctp12s.p1", 0x0000, 0x020000, CRC(5f0bbd2a) SHA1(ba1fa09ea7b4713a99b2033bdbbf6b15f973dcca), "Barcrest","Take Your Pick Club (Barcrest) (MPU4) (CTP 1.2)" )
@@ -6756,20 +6712,6 @@ INPUT_PORTS_START( m4andybt )
PORT_DIPSETTING( 0x07, "25p / 250 GBP (duplicate 2)" )
INPUT_PORTS_END
-void mpu4mod4oki_machines_state::init_m4andybt()
-{
- init_m4default_big();
- use_m4_hopper_tubes();
- use_m4_large_extender_b();
- use_m4_five_reel_rev();
-
- m_use_simplecard_leds = true;
- m_simplecard_leds_base = 0;
-
- m_use_pia4_porta_leds = true;
- m_pia4_porta_leds_base = 8;
-}
-
#define M4ANDYBT_EXTRA_ROMS \
ROM_REGION( 0x100000, "msm6376", 0 ) \
@@ -6783,7 +6725,7 @@ void mpu4mod4oki_machines_state::init_m4andybt()
ROM_LOAD( name, offset, length, hash ) \
M4ANDYBT_EXTRA_ROMS \
ROM_END \
- GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, m4andybt, mpu4mod4oki_machines_state, init_m4andybt, ROT0, company, title, GAME_FLAGS, layout_m4andybt )
+ GAMEL( year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R5R, RT1, HT, LPLB, P4L, SCARDL), m4andybt, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS, layout_m4andybt )
// "(C)1991 BARCREST" and "ABT 1.8"
GAME_CUSTOM( 199?, m4andybt, 0, "abt18s.p1", 0x0000, 0x020000, CRC(625263e4) SHA1(23fa0547164cc1f9b7c6cd26e06b0d779bf0329d), "Barcrest","Andy's Big Time Club (Barcrest) (MPU4) (ABT 1.8)" )
@@ -6813,7 +6755,7 @@ GAME_CUSTOM( 199?, m4andybt__c, m4andybt, "abt1.5", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4THESTR_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::thestreak_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::thestreak_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// versioning here makes no sense, why do the higher revision numbers have earlier years?
@@ -6869,7 +6811,7 @@ GAME_CUSTOM( 199?, m4thestr__y, m4thestr, "ts_39b_c.1_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4CPYCAT_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::copycat_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::copycat_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1997 B.W.B." and "CO 1.1"
GAME_CUSTOM( 199?, m4cpycat, 0, "co_20_bc.1_1", 0x0000, 0x010000, CRC(c9d3cdc1) SHA1(28265b0f95a8829efc4e346269a7af17a6abe345), "BWB","Copy Cat (Barcrest) (MPU4) (CO 1.1 YD)" )
@@ -6936,7 +6878,7 @@ GAME_CUSTOM( 199?, m4cpycat__3, m4cpycat, "co_30_kp.4_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4BNKROL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_six_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>(R6, RT2, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1996 BARCREST" and "CBR 0.5"
GAME_CUSTOM( 199?, m4bnkrol, 0, "cbr05s.p1", 0x0000, 0x020000, CRC(a8b53a0d) SHA1(661ab61aa8f427b92fdee02539f19e5dd2243da7), "Barcrest","Bank Roller Club (Barcrest) (MPU4) (CBR 0.5)" )
@@ -6970,7 +6912,7 @@ GAME_CUSTOM( 199?, m4bnkrol__b, m4bnkrol, "br301f.p1", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4RHRCL_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "RH2 1.1"
GAME_CUSTOM( 199?, m4rhrcl, 0, "rh2s.p1", 0x0000, 0x010000, CRC(aa15e8a8) SHA1(243e7562a4cf938527afebbd99581acea1ab4134), "Barcrest","Red Hot Roll Club (Barcrest) (MPU4) (RH2 1.1)" )
@@ -7000,7 +6942,7 @@ GAME_CUSTOM( 199?, m4rhrcl__c, m4rhrcl, "rhrc.hex", 0x0000, 0x010000, CRC(e4
ROM_LOAD( name, offset, length, hash ) \
M4RHOGC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>, mpu4jackpot8tkn20p, mpu4mod4oki_machines_state, init_m4default_five_rev_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m441_characteriser_prot>(R5R, RT1, LPLB), mpu4jackpot8tkn20p, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "RHC 0.5"
GAME_CUSTOM( 199?, m4rhogc, 0, "rhcs.p1", 0x0000, 0x010000, CRC(d1541050) SHA1(ef1ee3b9319e2a357540cf0de902de439267c3e2), "Barcrest","Road Hog Club (Barcrest) (MPU4) (RHC 0.5)" )
@@ -7029,7 +6971,7 @@ GAME_CUSTOM( 199?, m4rhogc__b, m4rhogc, "rhcd.p1", 0x0000, 0x010000, CRC(7a7
ROM_LOAD( name, offset, length, hash ) \
M4GB006_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::du91_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1993 BARCREST" and "006 0.6"
GAME_CUSTOM( 199?, m4gb006, 0, "006s.p1", 0x0000, 0x010000, CRC(6e750ab9) SHA1(2e1f08df7991efe450633e0bcec201e6fa7fdbaa), "Barcrest","Games Bond 006 (Barcrest) (MPU4) (006 0.6)" )
@@ -7059,7 +7001,7 @@ GAME_CUSTOM( 199?, m4gb006__c, m4gb006, "bond20_11", 0x0000, 0x010000, CR
ROM_LOAD( name, offset, length, hash ) \
M4CSHENC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cashencounters_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cashencounters_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1997 BWB" and "CA_ 5.0"
GAME_CUSTOM( 199?, m4cshenc, 0, "ca_sj__c.5_1", 0x0000, 0x020000, CRC(d9131b39) SHA1(4af89a7bc10de1406f401bede41e1bc452dbb159), "BWB","Cash Encounters (Barcrest) (MPU4) (CA_ 5.0 C)" )
@@ -7092,7 +7034,7 @@ GAME_CUSTOM( 199?, m4cshenc__d, m4cshenc, "ca_sjb_c.5_1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4RHS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rhs_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::rhs_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1998 B.W.B." and "RH__4.0"
GAME_CUSTOM( 199?, m4rhs, 0, "rh_sj___.4s1", 0x0000, 0x020000, CRC(be6179cd) SHA1(8aefffdffb25bc4dd7d083c7027be746181c2ff9), "BWB","Rocky Horror Show (Barcrest) (MPU4) (RH__4.0)" )
@@ -7115,7 +7057,7 @@ GAME_CUSTOM( 199?, m4rhs__g, m4rhs, "rh_sja_c.6_1", 0x0000, 0x020000, CRC(b7b7
ROM_LOAD( name, offset, length, hash ) \
M4RHS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// different protection handling
@@ -7145,7 +7087,7 @@ GAME_CUSTOM( 199?, m4rhs__l, m4rhs, "rocky15t", 0x0000, 0x020000, CRC(3fba
ROM_LOAD( name, offset, length, hash ) \
M4OADRAC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::oad_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::oad_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1999 BWB" and "DR_ 2.0"
GAME_CUSTOM( 199?, m4oadrac, 0, "dr__x__x.2_0", 0x0000, 0x020000, CRC(4ca65bd9) SHA1(deb0a7d3596647210061b69a10fc6cdfc066538e), "BWB","Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.0, set 1)" )
@@ -7180,7 +7122,7 @@ GAME_CUSTOM( 199?, m4oadrac__g, m4oadrac, "dr__xb_x.2_1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4TIC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::ttt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::ttt_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1995 B.W.B." and "TT_ 2.0"
GAME_CUSTOM( 199?, m4tic, 0, "tt_20s__.2_1", 0x0000, 0x010000, CRC(53dfefe9) SHA1(0f9fc1d65ebd7e370de6001f594616b79b2aa57e), "BWB","Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0)" )
@@ -7205,7 +7147,7 @@ GAME_CUSTOM( 199?, m4tic__i, m4tic, "tt_20s_c.1_1", 0x0000, 0x010000, CRC(65a3
ROM_LOAD( name, offset, length, hash ) \
M4TIC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m470_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m470_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1995 B.W.B." and "TT_ 3.0"
GAME_CUSTOM( 199?, m4tic__l, m4tic, "tt_25a_c.3_1", 0x0000, 0x010000, CRC(2e44c6db) SHA1(ffc96dafbcfae719c3971882e066971540fafe78), "BWB","Tic Tac Toe (Barcrest) (MPU4) (TT_ 3.0 K)" )
@@ -7236,7 +7178,7 @@ GAME_CUSTOM( 199?, m4tic__r, m4tic, "tt_25sbc.3_1", 0x0000, 0x010000, CRC(11c0
ROM_LOAD( name, offset, length, hash ) \
M4TICCLA_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::topaction_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::topaction_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1996 B.W.B." and "CT4 7.0"
@@ -7294,7 +7236,7 @@ GAME_CUSTOM( 199?, m4ticcla__0, m4ticcla, "ct_30btc.2_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4TICGLC_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::topaction_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::topaction_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1998 B.W.B." and "TG 3.3"
GAME_CUSTOM( 199?, m4ticglc, 0, "tg_25a_c.3_1", 0x0000, 0x010000, CRC(44b2b6b0) SHA1(c2caadd68659bd474df534101e3bc13b15a43694), "BWB","Tic Tac Toe Gold (Barcrest) (MPU4) (TG 3.3 K)" )
@@ -7325,7 +7267,7 @@ GAME_CUSTOM( 199?, m4ticglc__d, m4ticglc, "tg_30bgc.4_1", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4SSCLAS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::oad_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::oad_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)2000 BWB" and "CSS 6.0"
GAME_CUSTOM( 199?, m4ssclas, 0, "cs__x__x.6_0", 0x0000, 0x010000, CRC(3230284d) SHA1(bca3b4c43859ed424956c4119fa6a91a2e7d6eec), "BWB","Super Streak Classic (Barcrest) (MPU4) (CSS 6.0)" )
@@ -7358,7 +7300,7 @@ GAME_CUSTOM( 199?, m4ssclas__a, m4ssclas, "cs__x_dx.2_0", 0x0000, 0x010000,
ROM_LOAD( name, offset, length, hash ) \
M4SQUID_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1999 BWB" and "SQ_ 2.0"
GAME_CUSTOM( 199?, m4squid, 0, "squidsin.bin", 0x0000, 0x020000, CRC(be369b43) SHA1(e5c7b7a858b264db2f8f726396ddeb42004d7cb9), "BWB","Squids In (Barcrest) (MPU4) (SQ_ 2.0 C)" )
@@ -7387,7 +7329,7 @@ GAME_CUSTOM( 199?, m4squid__c, m4squid, "sq__xb_x.2_0", 0x0000, 0x020000, CR
ROM_LOAD( name, offset, length, hash ) \
M4CALAMA_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_five_rev_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R5R, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1996 BARCREST" and "CAC 0.3"
GAME_CUSTOM( 199?, m4calama, 0, "cac03s.p1", 0x0000, 0x020000, CRC(edc97795) SHA1(58fb91809c7f475fbceacfc1c3bda41b86dff54b), "Barcrest","Calamari Club (Barcrest) (MPU4) (CAC 0.3)" )
@@ -7405,7 +7347,7 @@ GAME_CUSTOM( 199?, m4calama__b, m4calama, "ca301f.p1", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4CALAMA_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_five_rev_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R5R, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1996 BARCREST" and "BC3 0.2"
GAME_CUSTOM( 199?, m4calama__g, m4calama, "bc302s.p1", 0x0000, 0x020000, CRC(b349bd2d) SHA1(9b026bece40584c4f53c30f3dacc91942c871a9f), "Barcrest","Calamari Club (Barcrest) (MPU4) (BC3 0.2)" )
@@ -7436,7 +7378,7 @@ GAME_CUSTOM( 199?, m4calama__h, m4calama, "calamari.cl", 0x0000, 0x020000,
ROM_LOAD( name, offset, length, hash ) \
M4COSCAS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>, mpu4jackpot10_20p, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::cosmiccasino_characteriser_prot>(R4, RT1, LPLB), mpu4jackpot10_20p, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1998 B.W.B." and "CC__3.0"
GAME_CUSTOM( 199?, m4coscas, 0, "cc_sj___.3s1", 0x0000, 0x020000, CRC(52c312b0) SHA1(bd5381d58b1acb7adf6857c142eae4a253081fbd), "BWB","Cosmic Casinos (Barcrest) (MPU4) (CC__3.0)" )
@@ -7469,7 +7411,7 @@ GAME_CUSTOM( 199?, m4coscas__b, m4coscas, "cosmiccasinos15.bin", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4COSCAS_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_bootleg_fixedret<0x70>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// need different protection handling
@@ -7500,7 +7442,7 @@ GAME_CUSTOM( 199?, m4coscas__a, m4coscas, "cosm15g", 0x0000, 0
ROM_LOAD( name, offset, length, hash ) \
M4DBLDM_EXTRA_ROMS \
ROM_END \
- GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::doublediamond_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, mod4oki_cheatchr_pal<mpu4_characteriser_pal::doublediamond_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, company, title, GAME_FLAGS )
// "(C)1996 BARCREST" and "CDD 0.5"
GAME_CUSTOM( 199?, m4dbldm, 0, "cdd05s.p1", 0x0000, 0x020000, CRC(fc14771f) SHA1(f418af9fed331560195a694f20ef2fea27ed04b0), "Barcrest","Double Diamond Club (Barcrest) (MPU4) (CDD 0.5)" )
@@ -7556,11 +7498,11 @@ ROM_START( m4supbjcd )
ROM_END
// protecton confirmed as m574, but doesn't read from lamp scramble, require stake set
-GAME(199?, m4supbjc, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_sextender, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 1)",GAME_FLAGS )
-GAME(199?, m4supbjca, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_sextender, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 2)",GAME_FLAGS )
-GAME(199?, m4supbjcb, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_sextender, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 3)",GAME_FLAGS )
-GAME(199?, m4supbjcc, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_sextender, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 4)",GAME_FLAGS )
-GAME(199?, m4supbjcd, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_sextender, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 2.0)",GAME_FLAGS )
+GAME(199?, m4supbjc, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, LPS), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 1)",GAME_FLAGS )
+GAME(199?, m4supbjca, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, LPS), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 2)",GAME_FLAGS )
+GAME(199?, m4supbjcb, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, LPS), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 3)",GAME_FLAGS )
+GAME(199?, m4supbjcc, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, LPS), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 4)",GAME_FLAGS )
+GAME(199?, m4supbjcd, m4supbjc, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, LPS), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Super Blackjack Club (Barcrest) (MPU4) (SBJ 2.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -7617,14 +7559,14 @@ ROM_START( m4crjwlc )
ROM_END
// these don't read from the lamp scramble, is this really a 'club' machine, it only has 3 primary reels + 1 secondary
-GAME(199?, m4crjwl2, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, "Barcrest","Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 1)",GAME_FLAGS )
-GAME(199?, m4crjwl2a, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, "Barcrest","Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 2)",GAME_FLAGS )
-GAME(199?, m4crjwl2b, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, "Barcrest","Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 3)",GAME_FLAGS )
+GAME(199?, m4crjwl2, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 1)",GAME_FLAGS )
+GAME(199?, m4crjwl2a, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 2)",GAME_FLAGS )
+GAME(199?, m4crjwl2b, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 3)",GAME_FLAGS )
// these do read from lamp scramble
-GAME(199?, m4crjwl, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 1)",GAME_FLAGS )
-GAME(199?, m4crjwla, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 2)",GAME_FLAGS )
-GAME(199?, m4crjwlb, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 3)",GAME_FLAGS )
-GAME(199?, m4crjwlc, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_lextender, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJN 0.2)",GAME_FLAGS )
+GAME(199?, m4crjwl, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 1)",GAME_FLAGS )
+GAME(199?, m4crjwla, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 2)",GAME_FLAGS )
+GAME(199?, m4crjwlb, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 3)",GAME_FLAGS )
+GAME(199?, m4crjwlc, m4crjwl2, mod4oki_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Crown Jewels Club (Barcrest) (MPU4) (CJN 0.2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -7658,9 +7600,9 @@ ROM_START( m4lazyb )
ROM_END
// runs
-GAME(199?, m4lazy, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"BWB","Lazy Bones (BWB) (MPU4) (LBD 1.0)",GAME_FLAGS )
-GAME(199?, m4lazya, m4lazy, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"BWB","Lazy Bones (BWB) (MPU4) (LBD 1.2, set 1)",GAME_FLAGS )
-GAME(199?, m4lazyb, m4lazy, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"BWB","Lazy Bones (BWB) (MPU4) (LBD 1.2, set 2)",GAME_FLAGS )
+GAME(199?, m4lazy, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0,"BWB","Lazy Bones (BWB) (MPU4) (LBD 1.0)",GAME_FLAGS )
+GAME(199?, m4lazya, m4lazy, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0,"BWB","Lazy Bones (BWB) (MPU4) (LBD 1.2, set 1)",GAME_FLAGS )
+GAME(199?, m4lazyb, m4lazy, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wta_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0,"BWB","Lazy Bones (BWB) (MPU4) (LBD 1.2, set 2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -7679,7 +7621,7 @@ ROM_START( m4brook )
ROM_END
// has (c)1998 BARCREST Development BV4 in the ROM
-GAME(1998, m4brook, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>,mpu4, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Turbo Play / Brooklyn (Barcrest) (MPU4) (PFT 1.8)",GAME_FLAGS )
+GAME(1998, m4brook, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::pzmoney_characteriser_prot>(R6, RT2),mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Turbo Play / Brooklyn (Barcrest) (MPU4) (PFT 1.8)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -7737,14 +7679,14 @@ ROM_START( m4chaseig )
M4CHASEI_EXTRAS
ROM_END
-GAME(199?, m4chasei, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_five_std_sextender, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 1)",GAME_FLAGS )
-GAME(199?, m4chaseic, m4chasei, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_five_std_sextender, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 2)",GAME_FLAGS )
-GAME(199?, m4chaseid, m4chasei, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_five_std_sextender, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 3)",GAME_FLAGS )
-GAME(199?, m4chaseie, m4chasei, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_five_std_sextender, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 4)",GAME_FLAGS )
+GAME(199?, m4chasei, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R5, RT2, LPS), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 1)",GAME_FLAGS )
+GAME(199?, m4chaseic, m4chasei, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R5, RT2, LPS), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 2)",GAME_FLAGS )
+GAME(199?, m4chaseid, m4chasei, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R5, RT2, LPS), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 3)",GAME_FLAGS )
+GAME(199?, m4chaseie, m4chasei, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R5, RT2, LPS), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 4)",GAME_FLAGS )
// different protection, not original
-GAME(199?, m4chaseia, m4chasei, mod4oki_alt_bootleg_fixedret<0x24>, mpu4, mpu4mod4oki_machines_state, init_m4default_five_std_sextender, ROT0, "hack","Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 1)",GAME_FLAGS )
-GAME(199?, m4chaseib, m4chasei, mod4oki_alt_bootleg_fixedret<0x1d>, mpu4, mpu4mod4oki_machines_state, init_m4default_five_std_sextender, ROT0, "hack","Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 2)",GAME_FLAGS )
-GAME(199?, m4chaseig, m4chasei, mod4oki_alt_bootleg_fixedret<0x1d>, mpu4, mpu4mod4oki_machines_state, init_m4default_five_std_sextender, ROT0, "hack","Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 3)",GAME_FLAGS ) // copyright removed
+GAME(199?, m4chaseia, m4chasei, mod4oki_bootleg_fixedret<0x24>(R5, RT2, LPS), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "hack","Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 1)",GAME_FLAGS )
+GAME(199?, m4chaseib, m4chasei, mod4oki_bootleg_fixedret<0x1d>(R5, RT2, LPS), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "hack","Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 2)",GAME_FLAGS )
+GAME(199?, m4chaseig, m4chasei, mod4oki_bootleg_fixedret<0x1d>(R5, RT2, LPS), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "hack","Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 3)",GAME_FLAGS ) // copyright removed
/*****************************************************************************************************************************************************************************
*
@@ -7778,9 +7720,9 @@ ROM_START( m4fortcbb )
M4FORTCB_EXTRAS
ROM_END
-GAME(199?, m4fortcb, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>,mpu420p, mpu4mod4oki_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 1)",GAME_FLAGS ) // INVALID ALARM
-GAME(199?, m4fortcba, m4fortcb, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>,mpu420p, mpu4mod4oki_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 2)",GAME_FLAGS ) // INVALID ALARM
-GAME(199?, m4fortcbb, m4fortcb, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>,mpu420p, mpu4mod4oki_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 3)",GAME_FLAGS ) // INVALID ALARM
+GAME(199?, m4fortcb, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>(R5R, RT1),mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 1)",GAME_FLAGS ) // INVALID ALARM
+GAME(199?, m4fortcba, m4fortcb, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>(R5R, RT1),mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 2)",GAME_FLAGS ) // INVALID ALARM
+GAME(199?, m4fortcbb, m4fortcb, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fortune_characteriser_prot>(R5R, RT1),mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 3)",GAME_FLAGS ) // INVALID ALARM
/*****************************************************************************************************************************************************************************
*
@@ -7818,10 +7760,10 @@ ROM_START( m4clbvegc )
M4CLBVEG_EXTRAS
ROM_END
-GAME(199?, m4clbveg, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_five_rev_lextender, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 1)",GAME_FLAGS )
-GAME(199?, m4clbvega, m4clbveg, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_five_rev_lextender, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 2)",GAME_FLAGS )
-GAME(199?, m4clbvegb, m4clbveg, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_five_rev_lextender, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 3)",GAME_FLAGS )
-GAME(199?, m4clbvegc, m4clbveg, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu420p, mpu4mod4oki_machines_state, init_m4default_five_rev_lextender, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 4)",GAME_FLAGS )
+GAME(199?, m4clbveg, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R5R, RT2, LPLB), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 1)",GAME_FLAGS )
+GAME(199?, m4clbvega, m4clbveg, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R5R, RT2, LPLB), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 2)",GAME_FLAGS )
+GAME(199?, m4clbvegb, m4clbveg, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R5R, RT2, LPLB), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 3)",GAME_FLAGS )
+GAME(199?, m4clbvegc, m4clbveg, mod4oki_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R5R, RT2, LPLB), mpu420p, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -7853,9 +7795,9 @@ ROM_START( m4clbxb )
M4CLBX_EXTRAS
ROM_END
-GAME(199?, m4clbx, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_six_lextender,ROT0, "Barcrest","Club X (Barcrest) (MPU4) (CLX 1.2, set 1)",GAME_FLAGS )
-GAME(199?, m4clbxa, m4clbx, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_six_lextender,ROT0, "Barcrest","Club X (Barcrest) (MPU4) (CLX 1.2, set 2)",GAME_FLAGS )
-GAME(199?, m4clbxb, m4clbx, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_six_lextender,ROT0, "Barcrest","Club X (Barcrest) (MPU4) (CLX 1.2, set 3)",GAME_FLAGS )
+GAME(199?, m4clbx, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R6, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0, "Barcrest","Club X (Barcrest) (MPU4) (CLX 1.2, set 1)",GAME_FLAGS )
+GAME(199?, m4clbxa, m4clbx, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R6, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0, "Barcrest","Club X (Barcrest) (MPU4) (CLX 1.2, set 2)",GAME_FLAGS )
+GAME(199?, m4clbxb, m4clbx, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R6, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0, "Barcrest","Club X (Barcrest) (MPU4) (CLX 1.2, set 3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -7920,15 +7862,15 @@ ROM_START( m4crzjwlg )
M4CRZJWL_EXTRAS
ROM_END
-GAME(199?, m4crzjwl, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Crown Jewels (Barcrest) (German) (MPU4) (GCN 1.1)",GAME_FLAGS )
-GAME(199?, m4crzjwlc, m4crzjwl, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Crown Jewels (Barcrest) (German) (MPU4) (GCN 0.9)",GAME_FLAGS )
+GAME(199?, m4crzjwl, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Crown Jewels (Barcrest) (German) (MPU4) (GCN 1.1)",GAME_FLAGS )
+GAME(199?, m4crzjwlc, m4crzjwl, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Crown Jewels (Barcrest) (German) (MPU4) (GCN 0.9)",GAME_FLAGS )
// not standard protection
-GAME(199?, m4crzjwle, m4crzjwl, mod4oki_bootleg_fixedret<0x46>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 1.1, set 1)",GAME_FLAGS )
-GAME(199?, m4crzjwld, m4crzjwl, mod4oki_bootleg_fixedret<0x28>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 1.1, set 2)",GAME_FLAGS )
-GAME(199?, m4crzjwla, m4crzjwl, mod4oki_bootleg_fixedret<0x46>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 1)",GAME_FLAGS )
-GAME(199?, m4crzjwlf, m4crzjwl, mod4oki_bootleg_fixedret<0x66>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 2)",GAME_FLAGS )
-GAME(199?, m4crzjwlg, m4crzjwl, mod4oki_bootleg_fixedret<0x76>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 3)",GAME_FLAGS )
-GAME(199?, m4crzjwlb, m4crzjwl, mod4oki_bootleg_fixedret<0x46>, mpu4_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 4)",GAME_FLAGS )
+GAME(199?, m4crzjwle, m4crzjwl, mod4oki_bootleg_fixedret<0x46>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 1.1, set 1)",GAME_FLAGS )
+GAME(199?, m4crzjwld, m4crzjwl, mod4oki_bootleg_fixedret<0x28>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 1.1, set 2)",GAME_FLAGS )
+GAME(199?, m4crzjwla, m4crzjwl, mod4oki_bootleg_fixedret<0x46>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 1)",GAME_FLAGS )
+GAME(199?, m4crzjwlf, m4crzjwl, mod4oki_bootleg_fixedret<0x66>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 2)",GAME_FLAGS )
+GAME(199?, m4crzjwlg, m4crzjwl, mod4oki_bootleg_fixedret<0x76>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 3)",GAME_FLAGS )
+GAME(199?, m4crzjwlb, m4crzjwl, mod4oki_bootleg_fixedret<0x46>(R4, RT1, LPLB), mpu4_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"bootleg","Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 4)",GAME_FLAGS )
ROM_START( m4cjdlx )
ROM_REGION( 0x20000, "maincpu", 0 )
@@ -7937,7 +7879,7 @@ ROM_START( m4cjdlx )
ROM_END
// doesn't require inverted coins, runs, has Deluxe in the title
-GAME(199?, m4cjdlx, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Crown Jewels Deluxe (Barcrest) (German) (MPU4) (CJG 0.4)",GAME_FLAGS )
+GAME(199?, m4cjdlx, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Crown Jewels Deluxe (Barcrest) (German) (MPU4) (CJG 0.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -7966,8 +7908,8 @@ ROM_START( m4sunsetb )
ROM_END
// these are NOT Mod 2 like the m4sunset sets, so could be misidentified
-GAME(199?, m4sunseta, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 1)",GAME_FLAGS )
-GAME(199?, m4sunsetb, m4sunseta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 2)",GAME_FLAGS )
+GAME(199?, m4sunseta, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 1)",GAME_FLAGS )
+GAME(199?, m4sunsetb, m4sunseta, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8017,7 +7959,7 @@ INPUT_PORTS_START( m4magtbo )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
-GAME(199?, m4magtbo, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tricolor_characteriser_prot>, m4magtbo, mpu4mod4oki_machines_state, init_m4default_six, ROT0, "Barcrest","Star Play / Magic Turbo (Barcrest) (MPU4) (XST 0.4)",GAME_FLAGS )
+GAME(199?, m4magtbo, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tricolor_characteriser_prot>(R6, RT1), m4magtbo, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Star Play / Magic Turbo (Barcrest) (MPU4) (XST 0.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8050,9 +7992,9 @@ ROM_START( m4brnzeb )
M4BRNZE_EXTRAS
ROM_END
-GAME(199?, m4brnze, 0, mod4oki, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "bootleg?","Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 1)",GAME_FLAGS )
-GAME(199?, m4brnzea, m4brnze, mod4oki, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "bootleg?","Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 2)",GAME_FLAGS )
-GAME(199?, m4brnzeb, m4brnze, mod4oki, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "bootleg?","Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 3)",GAME_FLAGS )
+GAME(199?, m4brnze, 0, mod4oki(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "bootleg?","Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 1)",GAME_FLAGS )
+GAME(199?, m4brnzea, m4brnze, mod4oki(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "bootleg?","Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 2)",GAME_FLAGS )
+GAME(199?, m4brnzeb, m4brnze, mod4oki(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "bootleg?","Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8068,7 +8010,7 @@ ROM_START( m4prem )
ROM_LOAD( "dpms.bin", 0x0000, 0x080000, CRC(93fd4253) SHA1(69feda7ffc56defd515c9cd1ce204af3d9731a3f) )
ROM_END
-GAME(199?, m4prem, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::premier_characteriser_prot> ,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Premier (Barcrest) (Dutch) (MPU4) (DPM 1.4)",GAME_FLAGS )
+GAME(199?, m4prem, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::premier_characteriser_prot>(R6A, RT1) ,mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Premier (Barcrest) (Dutch) (MPU4) (DPM 1.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8084,7 +8026,7 @@ ROM_START( m4rdht )
ROM_LOAD( "drh_1.snd", 0x0000, 0x080000, CRC(f652cd0c) SHA1(9ce986bc12bcf22a57e065329e82671d19cc96d7) ) // aka gn.snd
ROM_END
-GAME(199?, m4rdht, 0, mod4oki_7reel_cheatchr_pal<mpu4_characteriser_pal::redheat_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_seven, ROT0, "Barcrest","Red Heat (Barcrest) (Dutch) (MPU4) (DRH 1.2)",GAME_FLAGS )
+GAME(199?, m4rdht, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::redheat_characteriser_prot>(R7, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Red Heat (Barcrest) (Dutch) (MPU4) (DRH 1.2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8101,7 +8043,7 @@ ROM_START( m4rwb )
ROM_LOAD( "rwb_2.snd", 0x080000, 0x080000, CRC(54a2b2fd) SHA1(25875ff873bf22df510e7a4c56c336fbabcbdedb) )
ROM_END
-GAME(199?, m4rwb, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::redwhite_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Red White & Blue (Barcrest) (Dutch) (MPU4) (DRW 1.4)",GAME_FLAGS )
+GAME(199?, m4rwb, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::redwhite_characteriser_prot>(R6A, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Red White & Blue (Barcrest) (Dutch) (MPU4) (DRW 1.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8118,7 +8060,7 @@ ROM_START( m4amhiwy )
ROM_LOAD( "sdr6_2.snd", 0x080000, 0x080000, CRC(48d2ace5) SHA1(ada0180cc60266c0a6d981a019d66bbedbced21a) )
ROM_END
-GAME(199?, m4amhiwy, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_five_rev, ROT0, "Barcrest","American Highway (Barcrest) (Dutch) (MPU4) (DAH 2.0)",GAME_FLAGS )
+GAME(199?, m4amhiwy, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m462_characteriser_prot>(R5R, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","American Highway (Barcrest) (Dutch) (MPU4) (DAH 2.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8136,7 +8078,7 @@ ROM_START( m4roadrn )
ROM_LOAD( "dro_2.snd", 0x080000, 0x080000, CRC(1d5c8d4f) SHA1(15c18ae7286807cdc0feb825b958eae808445690) )
ROM_END
-GAME(199?, m4roadrn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Road Runner (Barcrest) (Dutch) (MPU4) (DRO 1.9)",GAME_FLAGS )
+GAME(199?, m4roadrn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R6, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Road Runner (Barcrest) (Dutch) (MPU4) (DRO 1.9)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8152,7 +8094,7 @@ ROM_START( m4salsa )
ROM_LOAD( "dsa_1@97c2.snd", 0x0000, 0x080000, CRC(0281a6dd) SHA1(a35a8cd0da32c51f77856ea3eeff7c58fd032333) )
ROM_END
-GAME(199?, m4salsa, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Salsa (Barcrest) (Dutch) (MPU4) (DSA 1.5)",GAME_FLAGS )
+GAME(199?, m4salsa, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>(R6A, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Salsa (Barcrest) (Dutch) (MPU4) (DSA 1.5)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8170,7 +8112,7 @@ ROM_START( m4ceptr )
ROM_LOAD( "cepsnd.p2", 0x080000, 0x080000, BAD_DUMP CRC(a82f0096) SHA1(45b6b5a2ae06b45add9cdbb9f5e6f834687b4902) )
ROM_END
-GAME(199?, m4ceptr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Ceptor (Barcrest) (Dutch) (MPU4) (DCE 1.0)",GAME_FLAGS )
+GAME(199?, m4ceptr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Ceptor (Barcrest) (Dutch) (MPU4) (DCE 1.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8186,7 +8128,7 @@ ROM_START( m4blkwhd )
ROM_LOAD( "generic_dutch_sound1.bin", 0x0000, 0x080000, CRC(f247ba83) SHA1(9b173503e63a4a861d1380b2ab1fe14af1a189bd) )
ROM_END
-GAME(199?, m4blkwhd, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::blackwhite_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six, ROT0, "Barcrest","Black & White (Barcrest) (Dutch) (MPU4) (DBW 1.1)",GAME_FLAGS ) // Reel Error
+GAME(199?, m4blkwhd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::blackwhite_characteriser_prot>(R6, RT2), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Black & White (Barcrest) (Dutch) (MPU4) (DBW 1.1)",GAME_FLAGS ) // Reel Error
/*****************************************************************************************************************************************************************************
*
@@ -8204,7 +8146,7 @@ ROM_START( m4frtgm )
ROM_LOAD( "generic_dutch_sound1.bin", 0x0000, 0x080000, BAD_DUMP CRC(f247ba83) SHA1(9b173503e63a4a861d1380b2ab1fe14af1a189bd) )
ROM_END
-GAME(199?, m4frtgm, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Fruit Game (Barcrest) (MPU4) (FRU 2.0)",GAME_FLAGS )
+GAME(199?, m4frtgm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Fruit Game (Barcrest) (MPU4) (FRU 2.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8222,7 +8164,7 @@ ROM_START( m4exgam )
ROM_LOAD( "generic_dutch_sound2.bin", 0x0000, 0x080000, CRC(50450909) SHA1(181659b0594ba8d196b7130c5999c91676a363c0) )
ROM_END
-GAME(199?, m4exgam, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Extra Game (Fairplay - Barcrest) (MPU4) (CEG 2.0)",GAME_FLAGS )
+GAME(199?, m4exgam, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Extra Game (Fairplay - Barcrest) (MPU4) (CEG 2.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8240,7 +8182,7 @@ ROM_START( m4ringfr )
ROM_END
// Alarm 17
-GAME(199?, m4ringfr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0, "Barcrest","Ring Of Fire (Barcrest) (German) (MPU4) (ROF 0.3)",GAME_FLAGS )
+GAME(199?, m4ringfr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0, "Barcrest","Ring Of Fire (Barcrest) (German) (MPU4) (ROF 0.3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8257,7 +8199,7 @@ ROM_START( m4bluedm )
ROM_LOAD( "bdsnd.bin", 0x0000, 0x080000, BAD_DUMP CRC(8ac4aae6) SHA1(70dba43b398010a8bd0d82cf91553d3f5e0921f0) ) // also on m4hpyjok, probably wrong here?
ROM_END
-GAME(199?, m4bluedm, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::bluediamond_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Blue Diamond (Barcrest) (Dutch) (MPU4) (DBD 1.0)",GAME_FLAGS )
+GAME(199?, m4bluedm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bluediamond_characteriser_prot>(R6A, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Blue Diamond (Barcrest) (Dutch) (MPU4) (DBD 1.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8273,7 +8215,7 @@ ROM_START( m4hpyjok )
ROM_LOAD( "dhjsnd", 0x0000, 0x080000, CRC(8ac4aae6) SHA1(70dba43b398010a8bd0d82cf91553d3f5e0921f0) )
ROM_END
-GAME(199?, m4hpyjok, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::redheat_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Happy Joker (Barcrest) (Dutch) (MPU4) (DHJ 1.2)",GAME_FLAGS )
+GAME(199?, m4hpyjok, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::redheat_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Happy Joker (Barcrest) (Dutch) (MPU4) (DHJ 1.2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8293,7 +8235,7 @@ ROM_START( m4gnsmk )
ROM_LOAD( "sdgu01.s4", 0x180000, 0x080000, CRC(a6160bef) SHA1(807f7d470728a479a55c782fca3df1eacd0b594c) )
ROM_END
-GAME(199?, m4gnsmk, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Gun Smoke (Barcrest) (Dutch) (MPU4) (DGU 1.6)",GAME_FLAGS )
+GAME(199?, m4gnsmk, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Gun Smoke (Barcrest) (Dutch) (MPU4) (DGU 1.6)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8311,7 +8253,7 @@ ROM_START( m4oldtmr )
ROM_LOAD( "generic_dutch_sound1.bin", 0x0000, 0x080000, CRC(f247ba83) SHA1(9b173503e63a4a861d1380b2ab1fe14af1a189bd) )
ROM_END
-GAME(199?, m4oldtmr, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::m470_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six, ROT0, "Barcrest","Old Timer (Barcrest) (Dutch) (MPU4) (DOT 1.1)",GAME_FLAGS )
+GAME(199?, m4oldtmr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m470_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Old Timer (Barcrest) (Dutch) (MPU4) (DOT 1.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8327,7 +8269,7 @@ ROM_START( m4twintm )
ROM_LOAD( "generic_dutch_sound2.bin", 0x0000, 0x080000, CRC(50450909) SHA1(181659b0594ba8d196b7130c5999c91676a363c0) )
ROM_END
-GAME(199?, m4twintm, 0, mod4oki_7reel_cheatchr_pal<mpu4_characteriser_pal::m533_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_seven, ROT0, "Barcrest","Twin Timer (Barcrest) (MPU4) (D2T 1.1)",GAME_FLAGS )
+GAME(199?, m4twintm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m533_characteriser_prot>(R7, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Twin Timer (Barcrest) (MPU4) (D2T 1.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8343,7 +8285,7 @@ ROM_START( m4holdtm )
ROM_LOAD( "generic_dutch_sound2.bin", 0x0000, 0x080000, CRC(50450909) SHA1(181659b0594ba8d196b7130c5999c91676a363c0) )
ROM_END
-GAME(199?, m4holdtm, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Hold Timer (Barcrest) (Dutch) (MPU4) (DHT 1.0)",GAME_FLAGS )
+GAME(199?, m4holdtm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Hold Timer (Barcrest) (Dutch) (MPU4) (DHT 1.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8359,7 +8301,7 @@ ROM_START( m4showtm )
ROM_LOAD( "generic_dutch_sound1.bin", 0x0000, 0x080000, CRC(f247ba83) SHA1(9b173503e63a4a861d1380b2ab1fe14af1a189bd) )
ROM_END
-GAME(199?, m4showtm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Show Timer (Barcrest) (Dutch) (MPU4) (DSH 1.3)",GAME_FLAGS )
+GAME(199?, m4showtm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::andybt_characteriser_prot>(R6, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Show Timer (Barcrest) (Dutch) (MPU4) (DSH 1.3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8375,7 +8317,7 @@ ROM_START( m4steptm )
ROM_LOAD( "generic_dutch_sound2.bin", 0x0000, 0x080000, CRC(50450909) SHA1(181659b0594ba8d196b7130c5999c91676a363c0) )
ROM_END
-GAME(199?, m4steptm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Step Timer (Barcrest) (Dutch) (MPU4) (DST 1.1)",GAME_FLAGS )
+GAME(199?, m4steptm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::phr_characteriser_prot>(R6, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Step Timer (Barcrest) (Dutch) (MPU4) (DST 1.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8391,7 +8333,7 @@ ROM_START( m4wildtm )
ROM_LOAD( "generic_dutch_sound2.bin", 0x0000, 0x080000, CRC(50450909) SHA1(181659b0594ba8d196b7130c5999c91676a363c0) )
ROM_END
-GAME(199?, m4wildtm, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::wildtime_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Wild Timer (Barcrest) (Dutch) (MPU4) (DWT 1.3)",GAME_FLAGS )
+GAME(199?, m4wildtm, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::wildtime_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Wild Timer (Barcrest) (Dutch) (MPU4) (DWT 1.3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8415,8 +8357,8 @@ ROM_START( m4toptima )
M4TOPTIM_EXTRAS
ROM_END
-GAME(199?, m4toptim, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Top Timer (Barcrest) (Dutch) (MPU4) (DTT 1.8, set 1)",GAME_FLAGS )
-GAME(199?, m4toptima, m4toptim, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Top Timer (Barcrest) (Dutch) (MPU4) (DTT 1.8, set 2)",GAME_FLAGS )
+GAME(199?, m4toptim, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Top Timer (Barcrest) (Dutch) (MPU4) (DTT 1.8, set 1)",GAME_FLAGS )
+GAME(199?, m4toptima, m4toptim, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Top Timer (Barcrest) (Dutch) (MPU4) (DTT 1.8, set 2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8433,7 +8375,7 @@ ROM_START( m4maglin )
ROM_LOAD( "mlsound2.p2", 0x080000, 0x080000, CRC(c8165b6c) SHA1(7c5059ee8630da31fc3ad50d84a4730297757d46) )
ROM_END
-GAME(199?, m4maglin, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_six_alt, ROT0, "Barcrest","Magic Liner (Barcrest) (Dutch) (MPU4) (DMA 2.1)",GAME_FLAGS )
+GAME(199?, m4maglin, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R6A, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Magic Liner (Barcrest) (Dutch) (MPU4) (DMA 2.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8449,7 +8391,7 @@ ROM_START( m4magrep )
ROM_LOAD( "mrdsound.bin", 0x000000, 0x080000, CRC(9b035fa6) SHA1(51b7e5bc3abdf4f1beba2347146a91a2b3f4de35) ) // also in m4luckdvd
ROM_END
-GAME(199?, m4magrep, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::turboplay_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Magic Replay (Barcrest) (Dutch) (MPU4) (DMR 1.3)",GAME_FLAGS )
+GAME(199?, m4magrep, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::turboplay_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Magic Replay (Barcrest) (Dutch) (MPU4) (DMR 1.3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8465,7 +8407,7 @@ ROM_START( m4univ )
ROM_LOAD( "generic_dutch_sound2.bin", 0x0000, 0x080000, CRC(50450909) SHA1(181659b0594ba8d196b7130c5999c91676a363c0) )
ROM_END
-GAME(199?, m4univ, 0, mod4oki_alt_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4altreels, ROT0, "Barcrest","Universe (Barcrest) (Dutch) (MPU4) (DUN 2.0)",GAME_FLAGS )
+GAME(199?, m4univ, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m400_characteriser_prot>(R6, RT2),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Universe (Barcrest) (Dutch) (MPU4) (DUN 2.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8482,7 +8424,7 @@ ROM_START( m4vivalvd )
ROM_LOAD( "dpms.bin", 0x0000, 0x080000, BAD_DUMP CRC(93fd4253) SHA1(69feda7ffc56defd515c9cd1ce204af3d9731a3f) ) // same as m4prem (incorrect?)
ROM_END
-GAME(199?, m4vivalvd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::premier_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Viva Las Vegas (Barcrest) (Dutch) (MPU4) (DLV 1.1)",GAME_FLAGS )
+GAME(199?, m4vivalvd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::premier_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Viva Las Vegas (Barcrest) (Dutch) (MPU4) (DLV 1.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -8509,8 +8451,8 @@ ROM_START( m4technoa )
M4TECHNO_EXTRAS
ROM_END
-GAME(199?, m4techno, 0, mod4oki_7reel_cheatchr_pal<mpu4_characteriser_pal::techno_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_seven, ROT0, "Barcrest","Techno Reel (Barcrest) (Dutch) (MPU4) (DTE 1.3, set 1)",GAME_FLAGS )
-GAME(199?, m4technoa, m4techno, mod4oki_7reel_cheatchr_pal<mpu4_characteriser_pal::techno_characteriser_prot>,mpu4_dutch, mpu4mod4oki_machines_state, init_m4default_seven, ROT0, "Barcrest","Techno Reel (Barcrest) (Dutch) (MPU4) (DTE 1.3, set 2, hack?)",GAME_FLAGS )
+GAME(199?, m4techno, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::techno_characteriser_prot>(R7, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Techno Reel (Barcrest) (Dutch) (MPU4) (DTE 1.3, set 1)",GAME_FLAGS )
+GAME(199?, m4technoa, m4techno, mod4oki_cheatchr_pal<mpu4_characteriser_pal::techno_characteriser_prot>(R7, RT1),mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Techno Reel (Barcrest) (Dutch) (MPU4) (DTE 1.3, set 2, hack?)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8554,13 +8496,13 @@ ROM_START( m4tbplayd )
M4TBPLAY_EXTRAS
ROM_END
-GAME(199?, m4tbplay, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::turboplay_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Turbo Play (Barcrest) (Dutch) (MPU4) (DTP 1.3)",GAME_FLAGS )
+GAME(199?, m4tbplay, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::turboplay_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Turbo Play (Barcrest) (Dutch) (MPU4) (DTP 1.3)",GAME_FLAGS )
// NO METERS
-GAME(199?, m4tbplaya, m4tbplay, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Turbo Play (Barcrest) (MPU4) (CTP 0.4)",GAME_FLAGS )
-GAME(199?, m4tbplayb, m4tbplay, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Turbo Play (Barcrest) (MPU4) (ZTP 0.7)",GAME_FLAGS )
+GAME(199?, m4tbplaya, m4tbplay, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Turbo Play (Barcrest) (MPU4) (CTP 0.4)",GAME_FLAGS )
+GAME(199?, m4tbplayb, m4tbplay, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Turbo Play (Barcrest) (MPU4) (ZTP 0.7)",GAME_FLAGS )
// NO METERS, non-standard protection
-GAME(199?, m4tbplayc, m4tbplay, mod4oki_bootleg_fixedret<0x6a>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "bootleg", "Turbo Play (Barcrest) (bootleg) (MPU4) (CTP 0.4)",GAME_FLAGS )
-GAME(199?, m4tbplayd, m4tbplay, mod4oki_bootleg_fixedret<0x19>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "bootleg", "Turbo Play (Barcrest) (bootleg) (MPU4) (ZTP 0.7)",GAME_FLAGS )
+GAME(199?, m4tbplayc, m4tbplay, mod4oki_bootleg_fixedret<0x6a>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "bootleg", "Turbo Play (Barcrest) (bootleg) (MPU4) (CTP 0.4)",GAME_FLAGS )
+GAME(199?, m4tbplayd, m4tbplay, mod4oki_bootleg_fixedret<0x19>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "bootleg", "Turbo Play (Barcrest) (bootleg) (MPU4) (ZTP 0.7)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8577,7 +8519,7 @@ ROM_START( m4luckdvd )
ROM_LOAD( "sdld01.snd", 0x000000, 0x080000, BAD_DUMP CRC(9b035fa6) SHA1(51b7e5bc3abdf4f1beba2347146a91a2b3f4de35) ) // also in m4magrep
ROM_END
-GAME(199?, m4luckdvd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Lucky Devil (Barcrest) (Dutch) (MPU4) (DLD 1.3)",GAME_FLAGS )
+GAME(199?, m4luckdvd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Lucky Devil (Barcrest) (Dutch) (MPU4) (DLD 1.3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -8595,7 +8537,7 @@ ROM_START( m4gldjok )
ROM_END
// boots but will give HOPPER JAM after a credit
-GAME(199?, m4gldjok, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::goljok_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Golden Joker (Barcrest) (Dutch) (MPU4) (DGJ 1.2)",GAME_FLAGS )
+GAME(199?, m4gldjok, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::goljok_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Golden Joker (Barcrest) (Dutch) (MPU4) (DGJ 1.2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8615,7 +8557,7 @@ ROM_START( m4blkcat )
ROM_END
// similar to m4gldjok, only accepts a single credit with '8' (coin lock issues?)
-GAME(199?, m4blkcat, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::blkcat_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Black Cat (Barcrest) (Dutch) (MPU4) (DBL 1.4)",GAME_FLAGS )
+GAME(199?, m4blkcat, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::blkcat_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Black Cat (Barcrest) (Dutch) (MPU4) (DBL 1.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8632,7 +8574,7 @@ ROM_START( m4riotrp )
ROM_END
// runs, coins don't work, Dutch?
-GAME(199?, m4riotrp, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::blkcat_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Rio Tropico (Barcrest) (Dutch) (MPU4) (DRT 1.0)",GAME_FLAGS )
+GAME(199?, m4riotrp, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::blkcat_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Rio Tropico (Barcrest) (Dutch) (MPU4) (DRT 1.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8653,7 +8595,7 @@ ROM_END
// was the CHR replaced with something else that just happens to give this seuqence, or is this valid somehow?
// runs, coins don't work
// fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc 6c dc bc 7c fc fc fc fc fc fc fc fc fc 00 04 0c 1c 3c 7c fc fc fc fc fc fc fc fc d4 ac 5c bc 7c fc fc fc fc fc fc fc fc fc fc fc fc 00
-GAME(199?, m4luck7, 0, mod4oki_cheatchr, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Lucky 7 (Barcrest) (Dutch) (MPU4)",GAME_FLAGS )
+GAME(199?, m4luck7, 0, mod4oki_cheatchr(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Lucky 7 (Barcrest) (Dutch) (MPU4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -8673,7 +8615,7 @@ ROM_START( m4royjwl )
ROM_LOAD( "rj_sound2.bin", 0x080000, 0x080000, CRC(9456523e) SHA1(ea1b6bf16b7d1015c188ad83760336d9851de391) )
ROM_END
-GAME(199?, m4royjwl, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::jewelcrown_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big_lextender, ROT0, "Barcrest","Royal Jewels (Barcrest) (German) (MPU4) (GRJ 1.4)",GAME_FLAGS )
+GAME(199?, m4royjwl, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::jewelcrown_characteriser_prot>(R4, RT1, LPLB), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, "Barcrest","Royal Jewels (Barcrest) (German) (MPU4) (GRJ 1.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8692,7 +8634,7 @@ ROM_START( m4nile )
ROM_LOAD( "gjnsnd.p4", 0x180000, 0x080000, CRC(da785b0a) SHA1(63358ab197eb1de8e489a9fd6ffbc2039efc9536) )
ROM_END
-GAME(199?, m4nile, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Nile Jewels (Barcrest) (German) (MPU4) (GJN 0.8)",GAME_FLAGS ) // DM1 SW ALM
+GAME(199?, m4nile, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1, LPLB), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Nile Jewels (Barcrest) (German) (MPU4) (GJN 0.8)",GAME_FLAGS ) // DM1 SW ALM
/*****************************************************************************************************************************************************************************
*
@@ -8709,7 +8651,7 @@ ROM_START( m4vegastg )
ROM_END
-GAME(199?, m4vegastg, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big,ROT0,"Barcrest","Vegas Strip (Barcrest) (German) (MPU4)",GAME_FLAGS ) // 1 DM SW ALM
+GAME(199?, m4vegastg, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Vegas Strip (Barcrest) (German) (MPU4)",GAME_FLAGS ) // 1 DM SW ALM
/*****************************************************************************************************************************************************************************
*
@@ -8728,7 +8670,7 @@ ROM_START( m4ordmnd )
ROM_END
// bwb/nova?
-GAME(199?, m4ordmnd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big,ROT0,"Barcrest","Oriental Diamonds (Barcrest) (German) (MPU4) (RAB 0.1)",GAME_FLAGS )
+GAME(199?, m4ordmnd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::actclba_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Oriental Diamonds (Barcrest) (German) (MPU4) (RAB 0.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8745,7 +8687,7 @@ ROM_START( m4vivan )
ROM_LOAD( "vlvsound2.bin", 0x080000, 0x080000, CRC(571c00d1) SHA1(5e7be40d3caae88dc3a580415f8ab796f6efd67f) )
ROM_END
-GAME( 199?, m4vivan, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::premier_characteriser_prot>, mpu4_dutch, mpu4mod4oki_machines_state, init_m4default, 0, "Nova", "Viva Las Vegas (Nova) (German) (MPU4) (GLV 1.2)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
+GAME( 199?, m4vivan, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::premier_characteriser_prot>(R4, RT1), mpu4_dutch, mpu4mod4oki_machines_state, init_m4, 0, "Nova", "Viva Las Vegas (Nova) (German) (MPU4) (GLV 1.2)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
/*****************************************************************************************************************************************************************************
*
@@ -8761,7 +8703,7 @@ ROM_START( m4spotln )
ROM_END
// runs
-GAME( 199?, m4spotln, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big, 0, "Barcrest / Nova", "Spotlight (Nova) (German) (MPU4) (GSP 0.1)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
+GAME( 199?, m4spotln, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4big, 0, "Barcrest / Nova", "Spotlight (Nova) (German) (MPU4) (GSP 0.1)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
/*****************************************************************************************************************************************************************************
*
@@ -8780,7 +8722,7 @@ ROM_START( m4goldnn )
ROM_END
// runs
-GAME( 199?, m4goldnn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big, 0, "Nova", "Golden Years (Nova) (German) (MPU4) (TGY 0.1)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
+GAME( 199?, m4goldnn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::alf_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4big, 0, "Nova", "Golden Years (Nova) (German) (MPU4) (TGY 0.1)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
/*****************************************************************************************************************************************************************************
*
@@ -8798,7 +8740,7 @@ ROM_START( m4hilonv )
ROM_END
// KEINE TOKENROEHR, runs open door
-GAME(199?, m4hilonv, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bagtel_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big, ROT0, "Nova","Hi Lo Casino (Nova) (German) (MPU4) (HNC 0.2)",GAME_FLAGS )
+GAME(199?, m4hilonv, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bagtel_characteriser_prot>(R4, RT1), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big, ROT0, "Nova","Hi Lo Casino (Nova) (German) (MPU4) (HNC 0.2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8815,7 +8757,7 @@ ROM_START( m4octo )
ROM_LOAD( "oct03.snd", 0x000000, 0x080000, NO_DUMP )
ROM_END
-GAME(199?, m4octo, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big, ROT0, "Nova","Octopus (Nova) (German) (MPU4) (OCT 0.3)",GAME_FLAGS )
+GAME(199?, m4octo, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::fruitfall_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, "Nova","Octopus (Nova) (German) (MPU4) (OCT 0.3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8832,7 +8774,7 @@ ROM_START( m4bigban )
ROM_LOAD( "big04.snd", 0x000000, 0x080000, NO_DUMP )
ROM_END
-GAME(199?, m4bigban, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big, ROT0, "Nova","Big Bandit (Nova) (German) (MPU4) (BIG 0.4)",GAME_FLAGS ) // DM1 SW ALM
+GAME(199?, m4bigban, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big, ROT0, "Nova","Big Bandit (Nova) (German) (MPU4) (BIG 0.4)",GAME_FLAGS ) // DM1 SW ALM
/*****************************************************************************************************************************************************************************
*
@@ -8849,7 +8791,7 @@ ROM_START( m4crzcsn )
ROM_LOAD( "crz03.snd", 0x000000, 0x080000, NO_DUMP )
ROM_END
-GAME(199?, m4crzcsn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::mag7s_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big, ROT0, "Nova","Crazy Casino (Nova) (German) (MPU4) (CRZ 0.3)",GAME_FLAGS )
+GAME(199?, m4crzcsn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::mag7s_characteriser_prot>(R4, RT1), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big, ROT0, "Nova","Crazy Casino (Nova) (German) (MPU4) (CRZ 0.3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8866,7 +8808,7 @@ ROM_START( m4crzcav )
ROM_LOAD( "gcv05.snd", 0x000000, 0x080000, NO_DUMP )
ROM_END
-GAME(199?, m4crzcav, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bdash_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default_big, ROT0, "Nova","Crazy Cavern (Nova) (MPU4) (GCV 0.5)",GAME_FLAGS )
+GAME(199?, m4crzcav, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bdash_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4big, ROT0, "Nova","Crazy Cavern (Nova) (MPU4) (GCV 0.5)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8883,7 +8825,7 @@ ROM_START( m4dragon )
ROM_LOAD( "dgl01.snd", 0x000000, 0x080000, NO_DUMP )
ROM_END
-GAME(199?, m4dragon, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big, ROT0, "Nova","Dragon (Nova) (MPU4) (DGL 0.1)",GAME_FLAGS )
+GAME(199?, m4dragon, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big, ROT0, "Nova","Dragon (Nova) (MPU4) (DGL 0.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8918,9 +8860,9 @@ ROM_START( m4dracb )
M4DRAC_EXTRAS
ROM_END
-GAME(199?, m4drac, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.1)",GAME_FLAGS ) // DM1 SW ALM
-GAME(199?, m4draca, m4drac, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.4)",GAME_FLAGS ) // DM1 SW ALM
-GAME(199?, m4dracb, m4drac, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.7)",GAME_FLAGS ) // DM1 SW ALM
+GAME(199?, m4drac, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>(R4, RT1, LPLB), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.1)",GAME_FLAGS ) // DM1 SW ALM
+GAME(199?, m4draca, m4drac, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>(R4, RT1, LPLB), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.4)",GAME_FLAGS ) // DM1 SW ALM
+GAME(199?, m4dracb, m4drac, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bankrollerclub_characteriser_prot>(R4, RT1, LPLB), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.7)",GAME_FLAGS ) // DM1 SW ALM
/*****************************************************************************************************************************************************************************
@@ -8939,7 +8881,7 @@ ROM_START( m4joljokh )
ROM_END
// gives an "IMD ?" message if you attempt to coin it up
-GAME(199?, m4joljokh, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Jolly Joker (Barcrest) (Hungarian) (MPU4) (HJJ 1.4)",GAME_FLAGS )
+GAME(199?, m4joljokh, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::salsa_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Jolly Joker (Barcrest) (Hungarian) (MPU4) (HJJ 1.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -8966,8 +8908,8 @@ ROM_START( m4jok300 )
ROM_LOAD( "generic_dutch_sound1.bin", 0x0000, 0x080000, BAD_DUMP CRC(f247ba83) SHA1(9b173503e63a4a861d1380b2ab1fe14af1a189bd) )
ROM_END
-GAME(199?, m4jok300, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Jokers Millenium 300 (Barcrest) (German) (MPU4) (DJO 0.1, set 1)",GAME_FLAGS ) // DM1 SW ALM
-GAME(199?, m4jok300a, m4jok300, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4default_big_lextender,ROT0,"Barcrest","Jokers Millenium 300 (Barcrest) (German) (MPU4) (DJO 0.1, set 2)",GAME_FLAGS ) // DM1 SW ALM
+GAME(199?, m4jok300, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1, LPLB), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Jokers Millenium 300 (Barcrest) (German) (MPU4) (DJO 0.1, set 1)",GAME_FLAGS ) // DM1 SW ALM
+GAME(199?, m4jok300a, m4jok300, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1, LPLB), mpu4_dutch_invcoin, mpu4mod4oki_machines_state, init_m4big,ROT0,"Barcrest","Jokers Millenium 300 (Barcrest) (German) (MPU4) (DJO 0.1, set 2)",GAME_FLAGS ) // DM1 SW ALM
/*****************************************************************************************************************************************************************************
*
@@ -8986,7 +8928,7 @@ ROM_START( m4mgpn )
ROM_LOAD( "mgpsnd.p4", 0x180000, 0x080000, CRC(d74b4b03) SHA1(a35c99040a72485a6c2d4a4fdfc203634f6a9ad0) )
ROM_END
-GAME( 199?, m4mgpn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4_dutch_alt_invcoin, mpu4mod4oki_machines_state, init_m4default, 0, "Nova", "Monaco Grand Prix (Nova) (German) (MPU4) (MGP 1.4)",GAME_FLAGS )
+GAME( 199?, m4mgpn, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4_dutch_alt_invcoin, mpu4mod4oki_machines_state, init_m4, 0, "Nova", "Monaco Grand Prix (Nova) (German) (MPU4) (MGP 1.4)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -9003,7 +8945,7 @@ ROM_START( m4luckdv )
ROM_LOAD( "generic_dutch_sound2.bin", 0x080000, 0x080000, BAD_DUMP CRC(50450909) SHA1(181659b0594ba8d196b7130c5999c91676a363c0) )
ROM_END
-GAME(199?, m4luckdv, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bluediamond_characteriser_prot>, mpu4_dutch_alt_invcoin, mpu4mod4oki_machines_state, init_m4default, ROT0, "Barcrest","Lucky Devil (Barcrest) (Czech) (MPU4) (CLD 3.0)",GAME_FLAGS )
+GAME(199?, m4luckdv, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bluediamond_characteriser_prot>(R4, RT1), mpu4_dutch_alt_invcoin, mpu4mod4oki_machines_state, init_m4, ROT0, "Barcrest","Lucky Devil (Barcrest) (Czech) (MPU4) (CLD 3.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -9020,7 +8962,7 @@ ROM_START( m4sctagt )
ROM_LOAD( "generic_dutch_sound1.bin", 0x000000, 0x080000, BAD_DUMP CRC(f247ba83) SHA1(9b173503e63a4a861d1380b2ab1fe14af1a189bd) )
ROM_END
-GAME(199?, m4sctagt, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bluediamond_characteriser_prot>, mpu4_dutch_alt_invcoin, mpu4mod4oki_machines_state, init_m4default, ROT0, "Nova","Secret Agent (Nova) (German) (MPU4) (GSE 3.0)",GAME_FLAGS )
+GAME(199?, m4sctagt, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::bluediamond_characteriser_prot>(R4, RT1), mpu4_dutch_alt_invcoin, mpu4mod4oki_machines_state, init_m4, ROT0, "Nova","Secret Agent (Nova) (German) (MPU4) (GSE 3.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -9087,6 +9029,82 @@ ROM_START( m4esctbgb )
ROM_END
// NETWORK FAIL ALARM (reel comms?)
-GAME(1994, m4esctbg, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Vifico", "Escalera Tobogan (Spain) (MPU4) (ESC1, set 1)", GAME_FLAGS )
-GAME(1994, m4esctbga, m4esctbg, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Vifico", "Escalera Tobogan (Spain) (MPU4) (ESC1, set 2)", GAME_FLAGS )
-GAME(1994, m4esctbgb, m4esctbg, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>, mpu4, mpu4mod4oki_machines_state, init_m4default, ROT0, "Vifico", "Escalera Tobogan (Spain) (MPU4) (ESC1, set 3)", GAME_FLAGS )
+GAME(1994, m4esctbg, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Vifico", "Escalera Tobogan (Spain) (MPU4) (ESC1, set 1)", GAME_FLAGS )
+GAME(1994, m4esctbga, m4esctbg, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Vifico", "Escalera Tobogan (Spain) (MPU4) (ESC1, set 2)", GAME_FLAGS )
+GAME(1994, m4esctbgb, m4esctbg, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "Vifico", "Escalera Tobogan (Spain) (MPU4) (ESC1, set 3)", GAME_FLAGS )
+
+
+
+ROM_START( m4nod )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "nod.bin", 0x0000, 0x010000, CRC(bc738af5) SHA1(8df436139554ccfb48c4db0a32e3333dbf3c4f46) )
+ ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 )
+ ROM_LOAD( "nodsnd.bin", 0x0000, 0x080000, CRC(2134494a) SHA1(3b665bf79567a71195b20e76c50b02707d15b78d) )
+ROM_END
+
+// just spins wheels badly
+GAME( 199?, m4nod, 0, mod4oki(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, 0, "Eurotech", "Nod And A Wink (Eurotech) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
+
+
+
+
+#define M4LUCKWB_EXTRAS \
+ ROM_REGION( 0x100000, "msm6376", 0 ) /* these are all different sound roms... */ \
+ ROM_LOAD( "lwbs3.bin", 0x0000, 0x07dc89, CRC(ee102376) SHA1(3fed581a4654acf285dd430fbfbac33cd67411b8) ) \
+ ROM_LOAD( "lwbs7.bin", 0x0000, 0x080000, CRC(5d4177c7) SHA1(e13f145885bb719b0021ae4ce289261a3eaa2e18) ) \
+ ROM_LOAD( "lwbs8.bin", 0x0000, 0x080000, CRC(187cdf5b) SHA1(87ec189af27c95f278a7531ec13df53a08889af8) ) \
+ ROM_LOAD( "lwbs9.bin", 0x0000, 0x080000, CRC(2e02b617) SHA1(2502a1d2cff155a7fc5148e23a4723d4d60e9d42) )
+
+ROM_START( m4luckwb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lwb10.bin", 0x0000, 0x010000, CRC(6d43a14e) SHA1(267aba1a01bfd5f0eaa7683d041d5fcb2d301934) )
+ M4LUCKWB_EXTRAS
+ROM_END
+
+ROM_START( m4luckwba )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lwb15.bin", 0x0000, 0x010000, CRC(b5af8cb2) SHA1(474975b83803627ad3ac4217d8cecb2d2db16fec) )
+ M4LUCKWB_EXTRAS
+ROM_END
+
+ROM_START( m4luckwbb )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lwb21.bin", 0x0000, 0x010000, CRC(6c570733) SHA1(7488318ca9689371e4f80be0a0fddd8ad141733e) )
+ M4LUCKWB_EXTRAS
+ROM_END
+
+ROM_START( m4luckwbc )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lwb22.bin", 0x0000, 0x010000, CRC(05b952a7) SHA1(952e328b280a18c1ffe253b6a56f2b5e893b1b72) )
+ M4LUCKWB_EXTRAS
+ROM_END
+
+ROM_START( m4luckwbd )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lwb27.bin", 0x0000, 0x010000, CRC(9d6b6637) SHA1(65bad12cd08de128ca31c9488e32e3cebfb8eedb) )
+ M4LUCKWB_EXTRAS
+ROM_END
+
+ROM_START( m4luckwbe )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lwb6.bin", 0x0000, 0x010000, CRC(8e7d4594) SHA1(4824a9a4628585a170c41e00f7b3fcb8a2330c02) )
+ M4LUCKWB_EXTRAS
+ROM_END
+
+ROM_START( m4luckwbf )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "lwb7.bin", 0x0000, 0x010000, CRC(8e651705) SHA1(bd4d09d586d14759a17d4d7d4016c427f3eef015) )
+ M4LUCKWB_EXTRAS
+ROM_END
+
+
+
+// doesn't use standard Barcrest protection, maybe Coinworld?
+// reads a jump offset from 0x800 (where protection would usually map), masking out 3 lowest bits; only 0xb0 seems to be valid here
+GAME(199?, m4luckwb, 0, mod4oki_bootleg_fixedret<0xb0>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4luckwba, m4luckwb, mod4oki_bootleg_fixedret<0xb0>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4luckwbb, m4luckwb, mod4oki_bootleg_fixedret<0xb0>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 3)",GAME_FLAGS )
+GAME(199?, m4luckwbc, m4luckwb, mod4oki_bootleg_fixedret<0xb0>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 4)",GAME_FLAGS )
+GAME(199?, m4luckwbd, m4luckwb, mod4oki(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 5, unprotected)",GAME_FLAGS )
+GAME(199?, m4luckwbe, m4luckwb, mod4oki_bootleg_fixedret<0xb0>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 6)",GAME_FLAGS )
+GAME(199?, m4luckwbf, m4luckwb, mod4oki_bootleg_fixedret<0xb0>(R4, RT1), mpu4, mpu4mod4oki_machines_state, init_m4, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 7)",GAME_FLAGS )
diff --git a/src/mame/barcrest/mpu4mod4yam.cpp b/src/mame/barcrest/mpu4mod4yam.cpp
index 90a30242743..a41b0261848 100644
--- a/src/mame/barcrest/mpu4mod4yam.cpp
+++ b/src/mame/barcrest/mpu4mod4yam.cpp
@@ -5,33 +5,261 @@
#include "emu.h"
#include "mpu4.h"
+#include "sound/ymopl.h"
+
namespace {
class mpu4mod4yam_machines_state : public mpu4_state
{
public:
-
- mpu4mod4yam_machines_state(const machine_config &mconfig, device_type type, const char *tag) :
- mpu4_state(mconfig, type, tag)
+ mpu4mod4yam_machines_state(const machine_config &mconfig, device_type type, const char *tag)
+ : mpu4_state(mconfig, type, tag)
+ , m_ym2413(*this, "ym2413")
{
}
- void init_m4addr();
- void init_m4test4();
+ void base_f(machine_config &config);
+ void no_bacta_f(machine_config &config);
+ template<const uint8_t* Table> void cheatchr_pal_f(machine_config &config);
+ template<uint8_t Fixed> void bootleg_fixedret_f(machine_config &config);
+ void cheatchr_gambal_f(machine_config &config);
+
+ template<typename... T>
+ auto base(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod4yam_machines_state::base_f, traits...);
+ }
+ template<typename... T>
+ auto no_bacta(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod4yam_machines_state::no_bacta_f, traits...);
+ }
+ template<const uint8_t* Table, typename... T>
+ auto cheatchr_pal(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod4yam_machines_state::cheatchr_pal_f<Table>, traits...);
+ }
+ template<uint8_t Fixed, typename... T>
+ auto bootleg_fixedret(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod4yam_machines_state::bootleg_fixedret_f<Fixed>, traits...);
+ }
+ template<typename... T>
+ auto cheatchr_gambal(T... traits)
+ {
+ return trait_wrapper(this, &mpu4mod4yam_machines_state::cheatchr_gambal_f, traits...);
+ }
- void mod4yam_cheatchr_gambal(machine_config &config);
+ void init_m4_806prot();
private:
+ void add_ym2413(machine_config& config);
+
+ void memmap_ym2413(address_map &map);
+ void memmap_characteriser_ym2413(address_map &map);
+ void memmap_bootleg_characteriser_ym2413(address_map &map);
+
+ DECLARE_MACHINE_START(mpu4yam);
+
void pia_ic5_porta_gambal_w(uint8_t data);
+
+ required_device<ym2413_device> m_ym2413;
};
#include "gamball.lh"
#include "m4addr.lh"
-} // anonymous namespace
-#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
+/***********************************************************************************************
+
+ Configs for Mod4 with YM
+
+***********************************************************************************************/
+
+void mpu4mod4yam_machines_state::add_ym2413(machine_config &config)
+{
+ YM2413(config, m_ym2413, XTAL(3'579'545)); // XTAL on sound board
+ m_ym2413->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ m_ym2413->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+}
+
+void mpu4mod4yam_machines_state::base_f(machine_config &config)
+{
+ mpu4base(config);
+ MCFG_MACHINE_START_OVERRIDE(mpu4mod4yam_machines_state,mpu4yam)
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod4yam_machines_state::memmap_ym2413);
+
+ add_ym2413(config);
+}
+
+void mpu4mod4yam_machines_state::no_bacta_f(machine_config &config)
+{
+ base_f(config);
+ config.device_remove("dataport");
+ m_pia5->ca2_handler().set(m_pia4, FUNC(pia6821_device::cb1_w));
+}
+
+template<const uint8_t* Table> void mpu4mod4yam_machines_state::cheatchr_pal_f(machine_config &config)
+{
+ base_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod4yam_machines_state::memmap_characteriser_ym2413);
+
+ MPU4_CHARACTERISER_PAL(config, m_characteriser, 0);
+ m_characteriser->set_cpu_tag("maincpu");
+ m_characteriser->set_allow_6809_cheat(true);
+ m_characteriser->set_lamp_table(Table);
+}
+
+template<uint8_t Fixed> void mpu4mod4yam_machines_state::bootleg_fixedret_f(machine_config &config)
+{
+ base_f(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4mod4yam_machines_state::memmap_bootleg_characteriser_ym2413);
+
+ MPU4_CHARACTERISER_BL(config, m_characteriser_bl, 0);
+ m_characteriser_bl->set_bl_fixed_return(Fixed);
+}
+
+void mpu4mod4yam_machines_state::cheatchr_gambal_f(machine_config &config)
+{
+ cheatchr_pal_f<mpu4_characteriser_pal::gambal_characteriser_prot>(config);
+
+ // custom hookup for gambal feature
+ m_pia5->writepa_handler().set(FUNC(mpu4mod4yam_machines_state::pia_ic5_porta_gambal_w));
+}
+
+
+
+
+MACHINE_START_MEMBER(mpu4mod4yam_machines_state,mpu4yam)
+{
+ mpu4_config_common();
+
+ m_link7a_connected=false;
+}
+
+void mpu4mod4yam_machines_state::memmap_ym2413(address_map &map)
+{
+ mpu4_memmap(map);
+ map(0x0880, 0x0881).w(m_ym2413, FUNC(ym2413_device::write));
+}
+
+void mpu4mod4yam_machines_state::memmap_characteriser_ym2413(address_map &map)
+{
+ mpu4_memmap_characteriser(map);
+ map(0x0880, 0x0881).w(m_ym2413, FUNC(ym2413_device::write));
+}
+
+void mpu4mod4yam_machines_state::memmap_bootleg_characteriser_ym2413(address_map &map)
+{
+ mpu4_memmap_bootleg_characteriser(map);
+ map(0x0880, 0x0881).w(m_ym2413, FUNC(ym2413_device::write));
+}
+
+
+void mpu4mod4yam_machines_state::pia_ic5_porta_gambal_w(uint8_t data)
+{
+ pia_ic5_porta_w(data);
+
+ /* The 'Gamball' device is a unique piece of mechanical equipment, designed to
+ provide a truly fair hi-lo gamble for an AWP. Functionally, it consists of
+ a ping-pong ball or similar enclosed in the machine's backbox, on a platform with 12
+ holes. When the low 4 bytes of AUX1 are triggered, this fires the ball out from the
+ hole it's currently in, to land in another. Landing in the same hole causes the machine to
+ refire the ball. The ball detection is done by the high 4 bytes of AUX1.
+ Here we call the MAME RNG, once to pick a row, once to pick from the four pockets within it. We
+ then trigger the switches corresponding to the correct number. This appears to be the best way
+ of making the game fair, short of simulating the physics of a bouncing ball ;)*/
+ if (data & 0x0f)
+ {
+ switch ((machine().rand()>>5) % 0x3)
+ {
+ case 0x00: //Top row
+ switch (machine().rand() & 0x3)
+ {
+ case 0x00: //7
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0xa0;
+ break;
+
+ case 0x01://4
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0xb0;
+ break;
+
+ case 0x02://9
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0xc0;
+ break;
+
+ case 0x03://8
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0xd0;
+ break;
+ }
+ break;
+
+ case 0x01: //Middle row - note switches don't match pattern
+ switch (machine().rand() & 0x3)
+ {
+ case 0x00://12
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x40;
+ break;
+
+ case 0x01://1
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x50;
+ break;
+
+ case 0x02://11
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x80;
+ break;
+
+ case 0x03://2
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x90;
+ break;
+ }
+ break;
+
+ case 0x02: //Bottom row
+ switch (machine().rand() & 0x3)
+ {
+ case 0x00://5
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x00;
+ break;
+
+ case 0x01://10
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x10;
+ break;
+
+ case 0x02://3
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x20;
+ break;
+
+ case 0x03://6
+ m_aux1_input = (m_aux1_input & 0x0f);
+ m_aux1_input|= 0x30;
+ break;
+ }
+ break;
+ }
+ }
+}
+
+void mpu4mod4yam_machines_state::init_m4_806prot()
+{
+ init_m4();
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x0806, 0x0806, read8smo_delegate(*this, []() -> uint8_t { return 0x6a; }, "806"));
+}
/*****************************************************************************************************************************************************************************
@@ -41,49 +269,35 @@ private:
*****************************************************************************************************************************************************************************/
-void mpu4mod4yam_machines_state::init_m4addr()
-{
- //Derived from Adders_&_Ladders_(Barcrest)_[C03_800_6jp].gam
- init_m4default();
- use_m4_hopper_tubes();
- use_m4_standard_reels();
-
- m_use_pia4_porta_leds = true;
- m_pia4_porta_leds_base = 0;
- // uint8_t m_pia4_porta_leds_strobe = 0;
-
- //PCKEY =0
- //STKEY =0
- //JPKEY =0
- //JPSET =0
- //DIP1_0=false
- //DIP1_1=false
- //DIP1_2=false
- //DIP1_3=false
- //DIP1_4=false
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=false
- //DIP2_6=false
- //DIP2_7=false
- //Sound barcrest1
- //Standard
- //Volume 0 Stereo= 1
- //Sample rate 16000
- //Front door code 0 Cash door code 0
-}
+//PCKEY =0
+//STKEY =0
+//JPKEY =0
+//JPSET =0
+//DIP1_0=false
+//DIP1_1=false
+//DIP1_2=false
+//DIP1_3=false
+//DIP1_4=false
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=false
+//DIP2_6=false
+//DIP2_7=false
+//Sound barcrest1
+//Standard
+//Volume 0 Stereo= 1
+//Sample rate 16000
+//Front door code 0 Cash door code 0
-void mpu4mod4yam_machines_state::init_m4test4()
-{
- init_m4default();
- m_overcurrent_detect = true;
-}
+} // anonymous namespace
+
+#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
INPUT_PORTS_START( m4addr )
@@ -111,8 +325,7 @@ INPUT_PORTS_START( m4addr )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
-
-
+using namespace mpu4_traits;
#undef GAME_CUSTOM
#define GAME_CUSTOM(year, setname,parent, machine, inputs, init, name,offset,length,hash,company,title, flags) \
@@ -123,73 +336,73 @@ INPUT_PORTS_END
GAMEL( year, setname, parent, machine, inputs, mpu4mod4yam_machines_state, init, ROT0, company, title, flags, layout_m4addr )
// "(C)1991 BARCREST" and "A6L 0.1"
-GAME_CUSTOM( 1991, m4addr, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "a6ls.p1", 0x0000, 0x010000, CRC(9f97f57b) SHA1(402d1518bb78fdc489b06c2aabc771e5ce151847), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 1)", 0 )
-GAME_CUSTOM( 199?, m4addrc__d, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "alddr20", 0x0000, 0x010000, CRC(19cf4437) SHA1(b528823c476bebd1a9a6c720a4144294743693d2), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 2)", 0 ) // hack?
-GAME_CUSTOM( 1991, m4addr6ld, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "a6ld.p1", 0x0000, 0x010000, CRC(de555e12) SHA1(2233160f1c734c889c1c00dee202a928f18ad763), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 D)", 0 )
-GAME_CUSTOM( 1991, m4addr6lc, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "a6lc.p1", 0x0000, 0x010000, CRC(1e75fe67) SHA1(4497b19d4c512c934d445b4acf607dc2dc080d44), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 C)", 0 )
-GAME_CUSTOM( 1991, m4addr6lk, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "a6lk.p1", 0x0000, 0x010000, CRC(af5ae5c4) SHA1(20e40cf996c2c3b7b18ec104a374be1da193b94e), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 K)", 0 )
-GAME_CUSTOM( 1991, m4addr6ly, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "adders ladders 20p 6.bin", 0x0000, 0x010000, CRC(62abeb34) SHA1(8069e6fde0673fdbc124a1a172dc988bb3205ff6), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 Y)", 0 )
-GAME_CUSTOM( 1991, m4addr6lyd, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "a6ldy.p1", 0x0000, 0x010000, CRC(82f060a5) SHA1(2e8474e6c17def07e35448b5bf8d453cce0f292c), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 YD)", 0 )
-GAME_CUSTOM( 1991, m4addr6lybd, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>, m4addr, init_m4addr, "a6lbdy.p1", 0x0000, 0x010000, CRC(28064099) SHA1(c916f73911974440d4c79ecb51b343aad78f115b), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 YBD)", 0 )
+GAME_CUSTOM( 1991, m4addr, 0, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "a6ls.p1", 0x0000, 0x010000, CRC(9f97f57b) SHA1(402d1518bb78fdc489b06c2aabc771e5ce151847), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 1)", 0 )
+GAME_CUSTOM( 199?, m4addrc__d, m4addr, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "alddr20", 0x0000, 0x010000, CRC(19cf4437) SHA1(b528823c476bebd1a9a6c720a4144294743693d2), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 2)", 0 ) // hack?
+GAME_CUSTOM( 1991, m4addr6ld, m4addr, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "a6ld.p1", 0x0000, 0x010000, CRC(de555e12) SHA1(2233160f1c734c889c1c00dee202a928f18ad763), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 D)", 0 )
+GAME_CUSTOM( 1991, m4addr6lc, m4addr, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "a6lc.p1", 0x0000, 0x010000, CRC(1e75fe67) SHA1(4497b19d4c512c934d445b4acf607dc2dc080d44), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 C)", 0 )
+GAME_CUSTOM( 1991, m4addr6lk, m4addr, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "a6lk.p1", 0x0000, 0x010000, CRC(af5ae5c4) SHA1(20e40cf996c2c3b7b18ec104a374be1da193b94e), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 K)", 0 )
+GAME_CUSTOM( 1991, m4addr6ly, m4addr, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adders ladders 20p 6.bin", 0x0000, 0x010000, CRC(62abeb34) SHA1(8069e6fde0673fdbc124a1a172dc988bb3205ff6), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 Y)", 0 )
+GAME_CUSTOM( 1991, m4addr6lyd, m4addr, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "a6ldy.p1", 0x0000, 0x010000, CRC(82f060a5) SHA1(2e8474e6c17def07e35448b5bf8d453cce0f292c), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 YD)", 0 )
+GAME_CUSTOM( 1991, m4addr6lybd, m4addr, cheatchr_pal<mpu4_characteriser_pal::addr_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "a6lbdy.p1", 0x0000, 0x010000, CRC(28064099) SHA1(c916f73911974440d4c79ecb51b343aad78f115b), "Barcrest","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 YBD)", 0 )
// "(C)1993 B.W.B." and "ADD 1.0"
-GAME_CUSTOM( 199?, m4addrc__l, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "al10", 0x0000, 0x010000, CRC(3c3c82b6) SHA1(cc5ffdd0837c9af31d5737a70430a01d1989cdcc), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, 1993)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__l, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "al10", 0x0000, 0x010000, CRC(3c3c82b6) SHA1(cc5ffdd0837c9af31d5737a70430a01d1989cdcc), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, 1993)", GAME_FLAGS )
// "(C)1994 B.W.B." and "ADD 1.0" (actually version 10?)
-GAME_CUSTOM( 1994, m4addr10, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05___.1o3", 0x0000, 0x010000, CRC(8d9e0f5d) SHA1(fecc844908876e161d0134ce3cc098e79e74e0b1), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr10d, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_d_.1o3", 0x0000, 0x010000, CRC(2d29040f) SHA1(ee2bdd5da1a7e4146419ffd8bad521a9c1b49aa2), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 D, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr10c, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adi05___.1o3", 0x0000, 0x010000, CRC(050764b1) SHA1(364c50e4887c9fdd7ff62e63a6be4513336b4814), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr10yd, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_b_.1o3", 0x0000, 0x010000, CRC(b10b194a) SHA1(4dc3f14ff3b903c49829f4a91136f9b03a5cb1ae), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 YD, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr10_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_10___.1o3", 0x0000, 0x010000, CRC(d587cb00) SHA1(6574c42402f13e5f9cb8f951e0f59b499b2d025d), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr10d_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_10_d_.1o3", 0x0000, 0x010000, CRC(d7670d32) SHA1(09dfe2a7fe267f485efed234411efc92d9cce414), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 D, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr10c_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adi10___.1o3", 0x0000, 0x010000, CRC(005caaa1) SHA1(b4b421c045012b5fbeaca95fa09d087a9c5e6b5b), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr10yd_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_10_b_.1o3", 0x0000, 0x010000, CRC(e2b5c0db) SHA1(9e1716186bb049c61dddaef2465fb1e55d2d93fd), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 YD, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05___.1o3", 0x0000, 0x010000, CRC(8d9e0f5d) SHA1(fecc844908876e161d0134ce3cc098e79e74e0b1), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10d, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_d_.1o3", 0x0000, 0x010000, CRC(2d29040f) SHA1(ee2bdd5da1a7e4146419ffd8bad521a9c1b49aa2), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 D, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10c, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adi05___.1o3", 0x0000, 0x010000, CRC(050764b1) SHA1(364c50e4887c9fdd7ff62e63a6be4513336b4814), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10yd, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_b_.1o3", 0x0000, 0x010000, CRC(b10b194a) SHA1(4dc3f14ff3b903c49829f4a91136f9b03a5cb1ae), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 YD, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_10___.1o3", 0x0000, 0x010000, CRC(d587cb00) SHA1(6574c42402f13e5f9cb8f951e0f59b499b2d025d), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10d_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_10_d_.1o3", 0x0000, 0x010000, CRC(d7670d32) SHA1(09dfe2a7fe267f485efed234411efc92d9cce414), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 D, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10c_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adi10___.1o3", 0x0000, 0x010000, CRC(005caaa1) SHA1(b4b421c045012b5fbeaca95fa09d087a9c5e6b5b), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr10yd_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_10_b_.1o3", 0x0000, 0x010000, CRC(e2b5c0db) SHA1(9e1716186bb049c61dddaef2465fb1e55d2d93fd), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 YD, set 2)", GAME_FLAGS )
// "(C)1993 B.W.B." and "ADD 3.0"
-GAME_CUSTOM( 1993, m4addr3, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05___.3q3", 0x0000, 0x010000, CRC(ec6ed7ce) SHA1(dfad04b5f6c4ff0fd784ad20471f1cf84586f2cd), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3d, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_d_.3q3", 0x0000, 0x010000, CRC(8d05fba9) SHA1(9c69d7eec7ce0d647d4f8b8b0a6b7e54daa7a79f), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3yd, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_b_.3q3", 0x0000, 0x010000, CRC(d4c06db1) SHA1(dacb66b98f9d1d51eddc48b6946d517c277e588e), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20___.3a3", 0x0000, 0x010000, CRC(c2431657) SHA1(b2b7541207eb3c898f9cf3df520bff396213b78a), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3d_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20_d_.3a3", 0x0000, 0x010000, CRC(62304025) SHA1(59b7815bf1b5337f46083cef186fedd078a4ad37), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3yd_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20_b_.3a3", 0x0000, 0x010000, CRC(19990a19) SHA1(ab1031513fb1e499da4a3001b5b26ff1e86cc628), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3_b, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20___.3n3", 0x0000, 0x010000, CRC(883ff001) SHA1(50540270dba31820ad99a4a4034c69d4a58d87c5), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 3)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3d_b, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20_d_.3n3", 0x0000, 0x010000, CRC(cf254a00) SHA1(1e430b652e4023e28b5648b8bea63e778c6dafc9), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 3)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3yd_b, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20_b_.3n3", 0x0000, 0x010000, CRC(65f9946f) SHA1(6bf6f315ed2dc6f603381d36dd408e951ace76bc), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 3)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3_c, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20___.3s3", 0x0000, 0x010000, CRC(b1d54cb6) SHA1(35205975ccdaccd5bf3c1b7bf9a26c5ef30050b3), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 4)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3d_c, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20_d_.3s3", 0x0000, 0x010000, CRC(89d2301b) SHA1(62ad1a9e008063eb16442b50af806f061669dba7), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 4)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3yd_c, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_20_b_.3s3", 0x0000, 0x010000, CRC(86982248) SHA1(a6d876333777a29eb0504fa3636727ebcc104f0a), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 4)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr3_d, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adl5pv2", 0x0000, 0x010000, CRC(09c39527) SHA1(16af3e552a7d6c6b802d2b1923523e9aa9de766a), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 5)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05___.3q3", 0x0000, 0x010000, CRC(ec6ed7ce) SHA1(dfad04b5f6c4ff0fd784ad20471f1cf84586f2cd), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3d, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_d_.3q3", 0x0000, 0x010000, CRC(8d05fba9) SHA1(9c69d7eec7ce0d647d4f8b8b0a6b7e54daa7a79f), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3yd, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_b_.3q3", 0x0000, 0x010000, CRC(d4c06db1) SHA1(dacb66b98f9d1d51eddc48b6946d517c277e588e), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20___.3a3", 0x0000, 0x010000, CRC(c2431657) SHA1(b2b7541207eb3c898f9cf3df520bff396213b78a), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3d_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20_d_.3a3", 0x0000, 0x010000, CRC(62304025) SHA1(59b7815bf1b5337f46083cef186fedd078a4ad37), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3yd_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20_b_.3a3", 0x0000, 0x010000, CRC(19990a19) SHA1(ab1031513fb1e499da4a3001b5b26ff1e86cc628), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3_b, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20___.3n3", 0x0000, 0x010000, CRC(883ff001) SHA1(50540270dba31820ad99a4a4034c69d4a58d87c5), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 3)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3d_b, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20_d_.3n3", 0x0000, 0x010000, CRC(cf254a00) SHA1(1e430b652e4023e28b5648b8bea63e778c6dafc9), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 3)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3yd_b, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20_b_.3n3", 0x0000, 0x010000, CRC(65f9946f) SHA1(6bf6f315ed2dc6f603381d36dd408e951ace76bc), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 3)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3_c, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20___.3s3", 0x0000, 0x010000, CRC(b1d54cb6) SHA1(35205975ccdaccd5bf3c1b7bf9a26c5ef30050b3), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 4)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3d_c, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20_d_.3s3", 0x0000, 0x010000, CRC(89d2301b) SHA1(62ad1a9e008063eb16442b50af806f061669dba7), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 4)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3yd_c, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_20_b_.3s3", 0x0000, 0x010000, CRC(86982248) SHA1(a6d876333777a29eb0504fa3636727ebcc104f0a), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 4)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr3_d, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adl5pv2", 0x0000, 0x010000, CRC(09c39527) SHA1(16af3e552a7d6c6b802d2b1923523e9aa9de766a), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 5)", GAME_FLAGS )
// "(C)1994 B.W.B." and "ADD 5.0"
-GAME_CUSTOM( 1994, m4addr5, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05___.5a3", 0x0000, 0x010000, CRC(9821a988) SHA1(2be85a0b68e5e31401a5c753b40f3cf803589444), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr5d, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_d_.5a3", 0x0000, 0x010000, CRC(b5be8114) SHA1(28dfe1d1cc1d9fc2bcc13fd6437602a6e8c90de2), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 D, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr5c, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adi05___.5a3", 0x0000, 0x010000, CRC(03777f8c) SHA1(9e3fddc2130600f343df0531bf3e636b82c2f108), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 C, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr5yd, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_b_.5a3", 0x0000, 0x010000, CRC(592cb1ae) SHA1(5696ecb3e9e6419f73087120b6a832fde606bacc), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 YD, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr5_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05___.5n3", 0x0000, 0x010000, CRC(86ac3564) SHA1(1dd9cf39d2aee11a3e1bbc68460c12f10e62aeaf), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr5d_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_d_.5n3", 0x0000, 0x010000, CRC(ca2653d5) SHA1(30cd35627be8fb4fff2f0d61a6ab43cf3e4c1742), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 D, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr5c_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adi05___.5n3", 0x0000, 0x010000, CRC(13003560) SHA1(aabad24748f9b1b09f1820bf1af932160e64fe3e), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 C, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr5yd_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_b_.5n3", 0x0000, 0x010000, CRC(cdc8ca39) SHA1(33fdeef8ab8908f6908120aedf501ec3e9d7d23e), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 YD, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05___.5a3", 0x0000, 0x010000, CRC(9821a988) SHA1(2be85a0b68e5e31401a5c753b40f3cf803589444), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5d, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_d_.5a3", 0x0000, 0x010000, CRC(b5be8114) SHA1(28dfe1d1cc1d9fc2bcc13fd6437602a6e8c90de2), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 D, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5c, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adi05___.5a3", 0x0000, 0x010000, CRC(03777f8c) SHA1(9e3fddc2130600f343df0531bf3e636b82c2f108), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 C, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5yd, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_b_.5a3", 0x0000, 0x010000, CRC(592cb1ae) SHA1(5696ecb3e9e6419f73087120b6a832fde606bacc), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 YD, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05___.5n3", 0x0000, 0x010000, CRC(86ac3564) SHA1(1dd9cf39d2aee11a3e1bbc68460c12f10e62aeaf), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5d_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_d_.5n3", 0x0000, 0x010000, CRC(ca2653d5) SHA1(30cd35627be8fb4fff2f0d61a6ab43cf3e4c1742), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 D, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5c_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adi05___.5n3", 0x0000, 0x010000, CRC(13003560) SHA1(aabad24748f9b1b09f1820bf1af932160e64fe3e), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 C, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr5yd_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_b_.5n3", 0x0000, 0x010000, CRC(cdc8ca39) SHA1(33fdeef8ab8908f6908120aedf501ec3e9d7d23e), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 YD, set 2)", GAME_FLAGS )
// "(C)1993 B.W.B." and "ADD 4.0"
-GAME_CUSTOM( 1993, m4addr4, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05___.4s3", 0x0000, 0x010000, CRC(6d1a3c51) SHA1(0e4b985173c7c3bd5804573d99913d66a05d54fb), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr4c, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adi05___.4s3", 0x0000, 0x010000, CRC(a4343a89) SHA1(cef67bbe03e6f535b530fc099f1b9a8bc7a2f864), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr4d, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_d_.4s3", 0x0000, 0x010000, CRC(e672baf0) SHA1(bae2e2fe9f51b3b8da20fcefb145f6d35fa2d604), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 D, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 1993, m4addr4yd, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_05_b_.4s3", 0x0000, 0x010000, CRC(6bd6fdb6) SHA1(7ee1e80da5833b3eaf4b23035690a09379781584), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 YD, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr4, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05___.4s3", 0x0000, 0x010000, CRC(6d1a3c51) SHA1(0e4b985173c7c3bd5804573d99913d66a05d54fb), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr4c, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adi05___.4s3", 0x0000, 0x010000, CRC(a4343a89) SHA1(cef67bbe03e6f535b530fc099f1b9a8bc7a2f864), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr4d, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_d_.4s3", 0x0000, 0x010000, CRC(e672baf0) SHA1(bae2e2fe9f51b3b8da20fcefb145f6d35fa2d604), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 D, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 1993, m4addr4yd, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_05_b_.4s3", 0x0000, 0x010000, CRC(6bd6fdb6) SHA1(7ee1e80da5833b3eaf4b23035690a09379781584), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 YD, set 1)", GAME_FLAGS )
// "(C)1994 B.W.B." and "ADD 4.0"
-GAME_CUSTOM( 1994, m4addr4_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "ad_10___.4a3", 0x0000, 0x010000, CRC(9151dac3) SHA1(bf1c065a62e84a8073f8f9854981bedad60805be), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr4c_a, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adi10___.4a3", 0x0000, 0x010000, CRC(2d2aa3cc) SHA1(21a7690c3fb7d158f4b4e6da63663778246ac902), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr4c_b, m4addr, mod4yam_cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>, m4addr, init_m4addr, "adi10___.4n3", 0x0000, 0x010000, CRC(af9aad00) SHA1(09729e73f27d9ac5d6ac7171191ed76aeaac3e3d), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 3)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr4_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "ad_10___.4a3", 0x0000, 0x010000, CRC(9151dac3) SHA1(bf1c065a62e84a8073f8f9854981bedad60805be), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr4c_a, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adi10___.4a3", 0x0000, 0x010000, CRC(2d2aa3cc) SHA1(21a7690c3fb7d158f4b4e6da63663778246ac902), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr4c_b, m4addr, cheatchr_pal<mpu4_characteriser_pal::squids_characteriser_prot>(R4, RT1, HT, P4L), m4addr, init_m4, "adi10___.4n3", 0x0000, 0x010000, CRC(af9aad00) SHA1(09729e73f27d9ac5d6ac7171191ed76aeaac3e3d), "BWB","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 3)", GAME_FLAGS )
// These have different protection
// "(C)1991 BARCREST" and "A6L 0.1" (but hack?)
-GAME_CUSTOM( 199?, m4addrc__b, m4addr, mod4yam_bootleg_fixedret<0x43>, m4addr, init_m4addr, "add20_101", 0x0000, 0x010000, CRC(361b7173) SHA1(dea2b1b0f5910e2fd3f45d220554f0e712dedada), "hack","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 199?, m4addrc__k, m4addr, mod4yam_bootleg_fixedret<0x63>, m4addr, init_m4addr, "addl_20_.8", 0x0000, 0x010000, CRC(43c98f46) SHA1(0ca4a093b38fc04639e3f4bb742a8923b90d2ed1), "hack","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__b, m4addr, bootleg_fixedret<0x43>(R4, RT1, HT, P4L), m4addr, init_m4, "add20_101", 0x0000, 0x010000, CRC(361b7173) SHA1(dea2b1b0f5910e2fd3f45d220554f0e712dedada), "hack","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__k, m4addr, bootleg_fixedret<0x63>(R4, RT1, HT, P4L), m4addr, init_m4, "addl_20_.8", 0x0000, 0x010000, CRC(43c98f46) SHA1(0ca4a093b38fc04639e3f4bb742a8923b90d2ed1), "hack","Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 2)", GAME_FLAGS )
// "BIG DIPPER" and ADD 1.0
-GAME_CUSTOM( 199?, m4addrc__h, m4addr, mod4yam_bootleg_fixedret<0x1d>, m4addr, init_m4addr, "adders classic.bin", 0x0000, 0x010000, CRC(6bc1d2aa) SHA1(cf17e697ff0cfba999f6511f24051dbc3d0384ef), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, hack)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr_h1, m4addr, mod4yam_bootleg_fixedret<0x1d>, m4addr, init_m4addr, "5p4addersladders.bin", 0x0000, 0x010000, CRC(03fc43da) SHA1(cf2fdb0d1ad702331ba004fd39072484b05e2b97), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 1)", GAME_FLAGS )
-GAME_CUSTOM( 199?, m4addrc__m, m4addr, mod4yam_bootleg_fixedret<0x1d>, m4addr, init_m4addr, "alad58c", 0x0000, 0x010000, CRC(df9c46b8) SHA1(439ea1ce17aa89e19cedb78465b4388b72c8c5ed), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 5)", GAME_FLAGS )
-GAME_CUSTOM( 1994, m4addr_h2, m4addr, mod4yam_bootleg_fixedret<0x61>, m4addr, init_m4addr, "ad05.6c", 0x0000, 0x010000, CRC(0940e4aa) SHA1(e8e7f7249a18386af990999a4c06f001db7003c5), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 2)", GAME_FLAGS )
-GAME_CUSTOM( 199?, m4addrc, m4addr, mod4yam_bootleg_fixedret<0x2d>, m4addr, init_m4addr, "add05_101", 0x0000, 0x010000, CRC(4b3fb104) SHA1(9dba619019a476ce317122a3553965b279c684ba), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 3)", GAME_FLAGS )
-GAME_CUSTOM( 199?, m4addrc__c, m4addr, mod4yam_bootleg_fixedret<0x25>, m4addr, init_m4addr, "add55", 0x0000, 0x010000, CRC(48c5bc73) SHA1(18c9f70bad6141cca95b6bbcb4fc621e71f87700), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 4)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__h, m4addr, bootleg_fixedret<0x1d>(R4, RT1, HT, P4L), m4addr, init_m4, "adders classic.bin", 0x0000, 0x010000, CRC(6bc1d2aa) SHA1(cf17e697ff0cfba999f6511f24051dbc3d0384ef), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, hack)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr_h1, m4addr, bootleg_fixedret<0x1d>(R4, RT1, HT, P4L), m4addr, init_m4, "5p4addersladders.bin", 0x0000, 0x010000, CRC(03fc43da) SHA1(cf2fdb0d1ad702331ba004fd39072484b05e2b97), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 1)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__m, m4addr, bootleg_fixedret<0x1d>(R4, RT1, HT, P4L), m4addr, init_m4, "alad58c", 0x0000, 0x010000, CRC(df9c46b8) SHA1(439ea1ce17aa89e19cedb78465b4388b72c8c5ed), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 5)", GAME_FLAGS )
+GAME_CUSTOM( 1994, m4addr_h2, m4addr, bootleg_fixedret<0x61>(R4, RT1, HT, P4L), m4addr, init_m4, "ad05.6c", 0x0000, 0x010000, CRC(0940e4aa) SHA1(e8e7f7249a18386af990999a4c06f001db7003c5), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 2)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc, m4addr, bootleg_fixedret<0x2d>(R4, RT1, HT, P4L), m4addr, init_m4, "add05_101", 0x0000, 0x010000, CRC(4b3fb104) SHA1(9dba619019a476ce317122a3553965b279c684ba), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 3)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__c, m4addr, bootleg_fixedret<0x25>(R4, RT1, HT, P4L), m4addr, init_m4, "add55", 0x0000, 0x010000, CRC(48c5bc73) SHA1(18c9f70bad6141cca95b6bbcb4fc621e71f87700), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 4)", GAME_FLAGS )
// "DADS ARMY" and "ADD 1.0"
-GAME_CUSTOM( 199?, m4addrc__a, m4addr, mod4yam_bootleg_fixedret<0x2b>, m4addr, init_m4addr, "add10_101", 0x0000, 0x010000, CRC(af8f8b4e) SHA1(712c33ed0f425dc10b79780b0cfce0ac5768e2d5), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 6)", GAME_FLAGS )
-GAME_CUSTOM( 199?, m4addrc__i, m4addr, mod4yam_bootleg_fixedret<0x5f>, m4addr, init_m4addr, "addl_10_.4", 0x0000, 0x010000, CRC(c2d11126) SHA1(0eafe9dc30013ed5817ac303a4eea5ea82d62715), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 7)", GAME_FLAGS )
-GAME_CUSTOM( 199?, m4addrc__j, m4addr, mod4yam_bootleg_fixedret<0x5f>, m4addr, init_m4addr, "addl_10_.8", 0x0000, 0x010000, CRC(9fc82c47) SHA1(0f56afc33f09fe22afc5ec74aeb496c32f9e623c), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 8)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__a, m4addr, bootleg_fixedret<0x2b>(R4, RT1, HT, P4L), m4addr, init_m4, "add10_101", 0x0000, 0x010000, CRC(af8f8b4e) SHA1(712c33ed0f425dc10b79780b0cfce0ac5768e2d5), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 6)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__i, m4addr, bootleg_fixedret<0x5f>(R4, RT1, HT, P4L), m4addr, init_m4, "addl_10_.4", 0x0000, 0x010000, CRC(c2d11126) SHA1(0eafe9dc30013ed5817ac303a4eea5ea82d62715), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 7)", GAME_FLAGS )
+GAME_CUSTOM( 199?, m4addrc__j, m4addr, bootleg_fixedret<0x5f>(R4, RT1, HT, P4L), m4addr, init_m4, "addl_10_.8", 0x0000, 0x010000, CRC(9fc82c47) SHA1(0f56afc33f09fe22afc5ec74aeb496c32f9e623c), "hack","Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 8)", GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -205,7 +418,7 @@ GAME_CUSTOM( 199?, m4addrc__j, m4addr, mod4yam_bootleg_fixedret<0x5f>, m4addr,
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::m578_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "ADC 1.1"
GAME_CUSTOM( 199?, m4addrcc, 0, "adcs.p1", 0x0000, 0x010000, CRC(7247de78) SHA1(e390b4e912d7bc8c1ca5e42bf2e2753d4c2b4d17), "Barcrest","Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1)" )
@@ -229,7 +442,7 @@ GAME_CUSTOM( 199?, m4addrcc__d, m4addrcc, "adrscfm", 0x0000, 0x010000, CRC(
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4cojok, 0, "cojx.p1", 0x0000, 0x010000, CRC(a9c0aefb) SHA1(c5b367a01ddee2cb90e266f1e62459b9b96eb3e3), "Barcrest","Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 1)" )
GAME_CUSTOM( 199?, m4cojok__a, m4cojok, "cojxb.p1", 0x0000, 0x010000, CRC(2680c84a) SHA1(6cf9bb72df41ea1389334597a772fd197aba4fc4), "Barcrest","Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 2)" )
@@ -389,118 +602,13 @@ INPUT_PORTS_START( m4gambal )
INPUT_PORTS_END
-void mpu4mod4yam_machines_state::pia_ic5_porta_gambal_w(uint8_t data)
-{
- pia_ic5_porta_w(data);
-
- /* The 'Gamball' device is a unique piece of mechanical equipment, designed to
- provide a truly fair hi-lo gamble for an AWP. Functionally, it consists of
- a ping-pong ball or similar enclosed in the machine's backbox, on a platform with 12
- holes. When the low 4 bytes of AUX1 are triggered, this fires the ball out from the
- hole it's currently in, to land in another. Landing in the same hole causes the machine to
- refire the ball. The ball detection is done by the high 4 bytes of AUX1.
- Here we call the MAME RNG, once to pick a row, once to pick from the four pockets within it. We
- then trigger the switches corresponding to the correct number. This appears to be the best way
- of making the game fair, short of simulating the physics of a bouncing ball ;)*/
- if (data & 0x0f)
- {
- switch ((machine().rand()>>5) % 0x3)
- {
- case 0x00: //Top row
- switch (machine().rand() & 0x3)
- {
- case 0x00: //7
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0xa0;
- break;
-
- case 0x01://4
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0xb0;
- break;
-
- case 0x02://9
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0xc0;
- break;
-
- case 0x03://8
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0xd0;
- break;
- }
- break;
-
- case 0x01: //Middle row - note switches don't match pattern
- switch (machine().rand() & 0x3)
- {
- case 0x00://12
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x40;
- break;
-
- case 0x01://1
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x50;
- break;
-
- case 0x02://11
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x80;
- break;
-
- case 0x03://2
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x90;
- break;
- }
- break;
-
- case 0x02: //Bottom row
- switch (machine().rand() & 0x3)
- {
- case 0x00://5
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x00;
- break;
-
- case 0x01://10
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x10;
- break;
-
- case 0x02://3
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x20;
- break;
-
- case 0x03://6
- m_aux1_input = (m_aux1_input & 0x0f);
- m_aux1_input|= 0x30;
- break;
- }
- break;
- }
- }
-}
-
-
-void mpu4mod4yam_machines_state::mod4yam_cheatchr_gambal(machine_config &config)
-{
- mod4yam_cheatchr_pal<mpu4_characteriser_pal::gambal_characteriser_prot>(config);
-
- // custom hookup for gambal feature
- m_pia5->writepa_handler().set(FUNC(mpu4mod4yam_machines_state::pia_ic5_porta_gambal_w));
-}
-
-
#undef GAME_CUSTOM
#define GAME_CUSTOM(year, setname,parent,name,offset,length,hash,company,title) \
ROM_START( setname ) \
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAMEL( year, setname, parent, mod4yam_cheatchr_gambal, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, MACHINE_REQUIRES_ARTWORK | MACHINE_MECHANICAL, layout_gamball )
+ GAMEL( year, setname, parent, cheatchr_gambal(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, MACHINE_REQUIRES_ARTWORK | MACHINE_MECHANICAL, layout_gamball )
GAME_CUSTOM( 199?, m4gambal, 0, "gbbx.p1", 0x0000, 0x010000, CRC(0b5adcd0) SHA1(1a198bd4a1e7d6bf4cf025c43d35aaef351415fc), "Barcrest","Gamball (Barcrest) (MPU4) (GBB 2.0)" )
GAME_CUSTOM( 199?, m4gambal__a, m4gambal, "gabcx.p1", 0x0000, 0x010000, CRC(52c35266) SHA1(bda49005de88094fbc84621f63b33f0e0a9c0bd3), "Barcrest","Gamball (Barcrest) (MPU4) (GAB 2.0, set 1)" )
@@ -521,7 +629,7 @@ GAME_CUSTOM( 199?, m4gambal__c, m4gambal, "gbll20-6", 0x0000, 0x010000, CRC
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4graff, 0, "graffo6", 0x0000, 0x010000, CRC(7349c9ca) SHA1(2744035d6c7897394c8fead27f48779047590fba), "Barcrest","Graffiti (Barcrest) (MPU4) (GRA 2.0X)" )
GAME_CUSTOM( 199?, m4graff__a, m4graff, "grax.p1", 0x0000, 0x010000, CRC(2e03a7d8) SHA1(333373fe15ae165dd24d5c11fef23f2e9b0388bf), "Barcrest","Graffiti (Barcrest) (MPU4) (GRA 2.1X)" )
@@ -541,7 +649,7 @@ GAME_CUSTOM( 199?, m4graff__b, m4graff, "graxc.p1", 0x0000, 0x010000, CRC(76
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>(R4, RT1, LPS), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// 'with 8GBP Jackpot' sets
GAME_CUSTOM( 199?, m4monte, 0, "nm8b.p1", 0x0000, 0x010000, CRC(1632080e) SHA1(9ca2cd8f00e49c29f4a216d3c9eacba221ada6ce), "Barcrest","Monte Carlo (NM8 0.1 B) (Barcrest) (MPU4)" )
@@ -566,7 +674,7 @@ GAME_CUSTOM( 199?, m4monte__m, m4monte, "nmns.p1", 0x0000, 0x010000, CRC(48
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::toplot_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::toplot_characteriser_prot>(R4, RT1, LPS), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// Bwb sets
GAME_CUSTOM( 1995, m4monteza, m4monte, "mx_05a__.2_1", 0x0000, 0x010000, CRC(a1a03e03) SHA1(bf49b516e6824a47cd9bf1408bf676f9f1e43d62), "BWB","Monte Carlo (MX052.0 K) (BWB) (MPU4)" )
@@ -580,7 +688,7 @@ GAME_CUSTOM( 1995, m4montezj, m4monte, "mxi10___.2_1", 0x0000, 0x010000, CR
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::montealt_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::montealt_characteriser_prot>(R4, RT1, LPS), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 1996, m4montezc, m4monte, "mx_20__c.1_1", 0x0000, 0x010000, CRC(a753798d) SHA1(ae1f5f14a37dead66f6b2d075a5bfc019d59f806), "BWB","Monte Carlo (MC 2.0 C) (BWB) (MPU4)" )
GAME_CUSTOM( 1996, m4montezd, m4monte, "mx_20a_c.1_1", 0x0000, 0x010000, CRC(9ec6f5fb) SHA1(ee181a64557053349cc8bff86bba937b191cab01), "BWB","Monte Carlo (MC 2.0 K) (BWB) (MPU4)" )
@@ -601,7 +709,7 @@ GAME_CUSTOM( 1996, m4montezg, m4monte, "mx_25_bc.3_1", 0x0000, 0x010000, CR
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>(R4, RT1, LPS), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4przmc, 0, "mssb.p1", 0x0000, 0x010000, CRC(5210dae0) SHA1(cc9916718249505e031ccdbc126f3fa1e6675f27), "Barcrest","Prize Monte Carlo (MSS 1.6 B) (Barcrest) (MPU4)" )
GAME_CUSTOM( 199?, m4przmc__a, m4przmc, "mssad.p1", 0x0000, 0x010000, CRC(e3690c35) SHA1(fdaacda0d03ce8d54841525feff2529b1ee1f970), "Barcrest","Prize Monte Carlo (MSS 1.6 AD) (Barcrest) (MPU4)" )
@@ -630,7 +738,7 @@ GAME_CUSTOM( 199?, m4przmc__o, m4przmc, "mt_10sd_.3o3", 0x0000, 0x010000, C
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::przmontealt_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::przmontealt_characteriser_prot>(R4, RT1, LPS), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1995 B.W.B." and "MT054.0"
GAME_CUSTOM( 199?, m4przmc__p, m4przmc, "mt_05a__.4o1", 0x0000, 0x010000, CRC(637fecee) SHA1(8c970bdf703177c71dde5c774c75929ac42b6eb0), "BWB","Prize Monte Carlo (MT054.0 K) (Barcrest) (MPU4)" )
@@ -654,7 +762,7 @@ GAME_CUSTOM( 199?, m4przmc__s, m4przmc, "mti10___.4o1", 0x0000, 0x010000, C
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::clbveg_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// (C)1991 BARCREST and SBN 2.0
GAME_CUSTOM( 199?, m4nudbnk, 0, "nb6", 0x0000, 0x010000, CRC(010dd3fc) SHA1(645cbe54200a6c3327e10909b1ef3a80579e96e5), "Barcrest","Nudge Banker (Barcrest) (MPU4) (SBN 2.0X)" )
@@ -682,21 +790,21 @@ GAME_CUSTOM( 199?, m4nudbnk__d, m4nudbnk, "sbnx.p1", 0x0000, 0x010000, CRC
GAME(year, setname, parent, machine, inputs, mpu4mod4yam_machines_state, init, ROT0, company, title, GAME_FLAGS )
// (C)1995 B.W.B. and SP5 1.0
-GAME_CUSTOM( 199?, m4sss, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_05a__.1o3", 0x0000, 0x010000, CRC(044a0133) SHA1(7cf85cf19f5c3f588daf5c0d7efe4204d67161a2), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 1)" )
-GAME_CUSTOM( 199?, m4sss__b, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_05s__.1o3", 0x0000, 0x010000, CRC(2e000a62) SHA1(e60390a383388e385bbde79ca14c63e5d69a8869), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 2)" )
-GAME_CUSTOM( 199?, m4sss__c, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_05sb_.1o3", 0x0000, 0x010000, CRC(c6380ef5) SHA1(673044aae9998dfe52205a5e4a3d26361f01c518), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 3)" )
-GAME_CUSTOM( 199?, m4sss__d, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_05sd_.1o3", 0x0000, 0x010000, CRC(31f818e1) SHA1(bbfa45ef63a73aa726a8223be234fb8ffba45e24), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 4)" )
+GAME_CUSTOM( 199?, m4sss, 0, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_05a__.1o3", 0x0000, 0x010000, CRC(044a0133) SHA1(7cf85cf19f5c3f588daf5c0d7efe4204d67161a2), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 1)" )
+GAME_CUSTOM( 199?, m4sss__b, m4sss, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_05s__.1o3", 0x0000, 0x010000, CRC(2e000a62) SHA1(e60390a383388e385bbde79ca14c63e5d69a8869), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 2)" )
+GAME_CUSTOM( 199?, m4sss__c, m4sss, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_05sb_.1o3", 0x0000, 0x010000, CRC(c6380ef5) SHA1(673044aae9998dfe52205a5e4a3d26361f01c518), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 3)" )
+GAME_CUSTOM( 199?, m4sss__d, m4sss, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_05sd_.1o3", 0x0000, 0x010000, CRC(31f818e1) SHA1(bbfa45ef63a73aa726a8223be234fb8ffba45e24), "BWB","Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 4)" )
// (C)1995 B.W.B. and SP101.0
-GAME_CUSTOM( 199?, m4sss__e, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_10a__.1o3", 0x0000, 0x010000, CRC(918c038c) SHA1(608062dc4e39c15967e16d95945b65ef7feabea2), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 1)" )
-GAME_CUSTOM( 199?, m4sss__f, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_10s__.1o3", 0x0000, 0x010000, CRC(1bc5780a) SHA1(df1b5d0d6f4751a480aef77be40fb2cfd153bf18), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 2)" )
-GAME_CUSTOM( 199?, m4sss__g, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_10sb_.1o3", 0x0000, 0x010000, CRC(2dfc3926) SHA1(b6b201c65c182f9b18a590910183ce88b245af2b), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 3)" )
-GAME_CUSTOM( 199?, m4sss__h, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>, mpu4,init_m4default_sextender, "sp_10sd_.1o3", 0x0000, 0x010000, CRC(fe5c7e3e) SHA1(f5066f1f0c2220da874cbac0ce510cbac6fff8e7), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 4)" )
+GAME_CUSTOM( 199?, m4sss__e, m4sss, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_10a__.1o3", 0x0000, 0x010000, CRC(918c038c) SHA1(608062dc4e39c15967e16d95945b65ef7feabea2), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 1)" )
+GAME_CUSTOM( 199?, m4sss__f, m4sss, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_10s__.1o3", 0x0000, 0x010000, CRC(1bc5780a) SHA1(df1b5d0d6f4751a480aef77be40fb2cfd153bf18), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 2)" )
+GAME_CUSTOM( 199?, m4sss__g, m4sss, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_10sb_.1o3", 0x0000, 0x010000, CRC(2dfc3926) SHA1(b6b201c65c182f9b18a590910183ce88b245af2b), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 3)" )
+GAME_CUSTOM( 199?, m4sss__h, m4sss, cheatchr_pal<mpu4_characteriser_pal::viva_sss_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sp_10sd_.1o3", 0x0000, 0x010000, CRC(fe5c7e3e) SHA1(f5066f1f0c2220da874cbac0ce510cbac6fff8e7), "BWB","Spend Spend Spend (BWB) (MPU4) (SP101.0, set 4)" )
// (C)1995 B.W.B. and SX5 2.0
-GAME_CUSTOM( 199?, m4sss__i, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4,init_m4default_sextender, "sx_05a__.2_1", 0x0000, 0x010000, CRC(ceb830a1) SHA1(c9bef44d64a64872460ae3c450533fd14c92ca43), "BWB","Spend Spend Spend (BWB) (MPU4) (SX5 2.0, set 1)" )
-GAME_CUSTOM( 199?, m4sss__k, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4,init_m4default_sextender, "sxi05___.2_1", 0x0000, 0x010000, CRC(a804a20b) SHA1(477d2a750c0c252ffa215c3cf89916cb3a296b92), "BWB","Spend Spend Spend (BWB) (MPU4) (SX5 2.0, set 2)" )
+GAME_CUSTOM( 199?, m4sss__i, m4sss, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sx_05a__.2_1", 0x0000, 0x010000, CRC(ceb830a1) SHA1(c9bef44d64a64872460ae3c450533fd14c92ca43), "BWB","Spend Spend Spend (BWB) (MPU4) (SX5 2.0, set 1)" )
+GAME_CUSTOM( 199?, m4sss__k, m4sss, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sxi05___.2_1", 0x0000, 0x010000, CRC(a804a20b) SHA1(477d2a750c0c252ffa215c3cf89916cb3a296b92), "BWB","Spend Spend Spend (BWB) (MPU4) (SX5 2.0, set 2)" )
// (C)1995 B.W.B. and SX102.0
-GAME_CUSTOM( 199?, m4sss__j, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4,init_m4default_sextender, "sx_10a__.2_1", 0x0000, 0x010000, CRC(73e3bc13) SHA1(004097cc9cd62b8fa4c584fcb9874cf998c7b89d), "BWB","Spend Spend Spend (BWB) (MPU4) (SX102.0, set 1)" )
-GAME_CUSTOM( 199?, m4sss__l, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4,init_m4default_sextender, "sxi10___.2_1", 0x0000, 0x010000, CRC(bbb23438) SHA1(2cc4376f6393c69c1e18ad06be18933592b6bdae), "BWB","Spend Spend Spend (BWB) (MPU4) (SX102.0, set 2)" )
+GAME_CUSTOM( 199?, m4sss__j, m4sss, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sx_10a__.2_1", 0x0000, 0x010000, CRC(73e3bc13) SHA1(004097cc9cd62b8fa4c584fcb9874cf998c7b89d), "BWB","Spend Spend Spend (BWB) (MPU4) (SX102.0, set 1)" )
+GAME_CUSTOM( 199?, m4sss__l, m4sss, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1, LPS), mpu4,init_m4, "sxi10___.2_1", 0x0000, 0x010000, CRC(bbb23438) SHA1(2cc4376f6393c69c1e18ad06be18933592b6bdae), "BWB","Spend Spend Spend (BWB) (MPU4) (SX102.0, set 2)" )
/*****************************************************************************************************************************************************************************
@@ -712,7 +820,7 @@ GAME_CUSTOM( 199?, m4sss__l, m4sss, mod4yam_cheatchr_pal<mpu4_characteriser_pal
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::duty_characteriser_prot>(R4, RT1, LPS), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// (C)1991 BARCREST and PS3 0.2
GAME_CUSTOM( 199?, m4przsss, 0, "ps302b.p1", 0x0000, 0x010000, CRC(1749ae18) SHA1(f04f91a1d534f2d2dc844862bb21160c5903d1df), "Barcrest","Prize Spend Spend Spend (Barcrest) (MPU4) (set 1)" )
@@ -731,7 +839,7 @@ GAME_CUSTOM( 199?, m4przsss__h, m4przsss, "ps302y.p1", 0x0000, 0x010000,
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1, LPS), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// (C)1991 BARCREST and PS8 0.1
GAME_CUSTOM( 199?, m4przsss__i, m4przsss, "ps8ad.p1", 0x0000, 0x010000, CRC(48917a87) SHA1(d32ac9e30ebddb6ca1d6a7d6c38026338c6df2cd), "Barcrest","Prize Spend Spend Spend (Barcrest) (MPU4) (set 10)" )
@@ -774,32 +882,32 @@ GAME_CUSTOM( 199?, m4przsss__1, m4przsss, "sspc.p1", 0x0000, 0x010000,
GAME(year, setname, parent, machine, inputs, mpu4mod4yam_machines_state, init, ROT0, company, title, GAME_FLAGS )
// (C)1991 BARCREST and R2T 3.3
-GAME_CUSTOM( 199?, m4ra, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "r2tx.p1", 0x0000, 0x010000, CRC(7efffe3d) SHA1(5472bc76f4450726fc49fce281a6ec69693d0923), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 1)" )
-GAME_CUSTOM( 199?, m4ra__a, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "r2txr.p1", 0x0000, 0x010000, CRC(9ff95e34) SHA1(79d19602b88e1c9d23e910332a968e6b820a39f5), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 2)" )
-GAME_CUSTOM( 199?, m4ra__b, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "ra2s.p1", 0x0000, 0x010000, CRC(cd0fd068) SHA1(a347372f7f737ca87f44e692015338831465f123), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 3)" )
-GAME_CUSTOM( 199?, m4ra__c, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "ra2x.p1", 0x0000, 0x010000, CRC(8217e235) SHA1(e17483afea2a9d9e70e88687f899e1b98b982b63), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 4)" )
-GAME_CUSTOM( 199?, m4ra__d, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "ra2xa.p1", 0x0000, 0x010000, CRC(0e6b2123) SHA1(af7c5ddddbfffef6fa5746a7b7927845457d02f8), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 5)" )
-GAME_CUSTOM( 199?, m4ra__e, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "ra2xb.p1", 0x0000, 0x010000, CRC(97fe4933) SHA1(201860b64577828547adb8a216a6a205c4a4f34b), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 6)" )
-GAME_CUSTOM( 199?, m4ra__f, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "ra2xr.p1", 0x0000, 0x010000, CRC(12e8eb9b) SHA1(2bcd2c911626a2cb2419f9540649e99d7f335b3b), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 7)" )
+GAME_CUSTOM( 199?, m4ra, 0, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "r2tx.p1", 0x0000, 0x010000, CRC(7efffe3d) SHA1(5472bc76f4450726fc49fce281a6ec69693d0923), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 1)" )
+GAME_CUSTOM( 199?, m4ra__a, m4ra, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "r2txr.p1", 0x0000, 0x010000, CRC(9ff95e34) SHA1(79d19602b88e1c9d23e910332a968e6b820a39f5), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 2)" )
+GAME_CUSTOM( 199?, m4ra__b, m4ra, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra2s.p1", 0x0000, 0x010000, CRC(cd0fd068) SHA1(a347372f7f737ca87f44e692015338831465f123), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 3)" )
+GAME_CUSTOM( 199?, m4ra__c, m4ra, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra2x.p1", 0x0000, 0x010000, CRC(8217e235) SHA1(e17483afea2a9d9e70e88687f899e1b98b982b63), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 4)" )
+GAME_CUSTOM( 199?, m4ra__d, m4ra, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra2xa.p1", 0x0000, 0x010000, CRC(0e6b2123) SHA1(af7c5ddddbfffef6fa5746a7b7927845457d02f8), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 5)" )
+GAME_CUSTOM( 199?, m4ra__e, m4ra, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra2xb.p1", 0x0000, 0x010000, CRC(97fe4933) SHA1(201860b64577828547adb8a216a6a205c4a4f34b), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 6)" )
+GAME_CUSTOM( 199?, m4ra__f, m4ra, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra2xr.p1", 0x0000, 0x010000, CRC(12e8eb9b) SHA1(2bcd2c911626a2cb2419f9540649e99d7f335b3b), "Barcrest","Red Alert (Barcrest) (MPU4) (R2T 3.3, set 7)" )
// different protection, also reads from 811 at start, but check doesn't matter?
// (C)1991 BARCREST and R2T 3.1
-GAME_CUSTOM( 199?, m4ra__q, m4ra, mod4yam_bootleg_fixedret<0x11>, mpu4, init_m4default, "reda_20_.8", 0x0000, 0x010000, CRC(915aff5b) SHA1(e8e58c263e2bdb64a80e9355ac5e114fff1d59f8), "bootleg","Red Alert (Barcrest) (bootleg) (MPU4) (R2T 3.1)" )
+GAME_CUSTOM( 199?, m4ra__q, m4ra, bootleg_fixedret<0x11>(R4, RT1), mpu4, init_m4, "reda_20_.8", 0x0000, 0x010000, CRC(915aff5b) SHA1(e8e58c263e2bdb64a80e9355ac5e114fff1d59f8), "bootleg","Red Alert (Barcrest) (bootleg) (MPU4) (R2T 3.1)" )
// This appears to be a very different type of game based on the lamping
// (C)1991 BARCREST and RAH 3.3
-GAME_CUSTOM( 199?, m4ra__p, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>, mpu4, init_m4default, "rahx.p1", 0x0000, 0x010000, CRC(6887014e) SHA1(25e4c008588a219895c1b326314fd11e1f0ad35f), "Barcrest","Red Alert (Barcrest) (MPU4) (RAH 3.3)" )
+GAME_CUSTOM( 199?, m4ra__p, m4ra, cheatchr_pal<mpu4_characteriser_pal::m683_characteriser_prot>(R4, RT1), mpu4, init_m4, "rahx.p1", 0x0000, 0x010000, CRC(6887014e) SHA1(25e4c008588a219895c1b326314fd11e1f0ad35f), "Barcrest","Red Alert (Barcrest) (MPU4) (RAH 3.3)" )
// This also appears to be a very different type of game based on the lamping
// (C)1991 BARCREST and RA3 0.2
-GAME_CUSTOM( 199?, m4ra__g, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xad.p1", 0x0000, 0x010000, CRC(75957d43) SHA1(f7d00842b8390f5464733a6fe1d61d7431a16817), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 1)" )
-GAME_CUSTOM( 199?, m4ra__h, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xb.p1", 0x0000, 0x010000, CRC(f37e9bd5) SHA1(584a1f6f1bfb35de813466448e35fc1251fa90bc), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 2)" )
-GAME_CUSTOM( 199?, m4ra__i, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xbd.p1", 0x0000, 0x010000, CRC(43891009) SHA1(5d9ebe9d48a39f0a121ae7b832b277910bfd0ad6), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 3)" )
-GAME_CUSTOM( 199?, m4ra__j, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xd.p1", 0x0000, 0x010000, CRC(bc59a07a) SHA1(3a8fc99690759ea376660feaf65bfda5386dcf0d), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 4)" )
-GAME_CUSTOM( 199?, m4ra__k, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xdr.p1", 0x0000, 0x010000, CRC(036950ba) SHA1(f0a534352b41c2762330762c3c7024d9a6d49cd4), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 5)" )
-GAME_CUSTOM( 199?, m4ra__l, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xdy.p1", 0x0000, 0x010000, CRC(468508d4) SHA1(ba6db1e1f7bca13b9c40173fb68418f319e2a9d8), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 6)" )
-GAME_CUSTOM( 199?, m4ra__m, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xr.p1", 0x0000, 0x010000, CRC(1a2b813d) SHA1(5d3b5d4ab31dd1848b3d0b2a5ff5798cc01e0c6f), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 7)" )
-GAME_CUSTOM( 199?, m4ra__n, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xs.p1", 0x0000, 0x010000, CRC(a1ba9673) SHA1(7d5441522e8676805f7e75a3d445acae83d8a03b), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 8)" )
-GAME_CUSTOM( 199?, m4ra__o, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>, mpu4, init_m4default, "ra3xy.p1", 0x0000, 0x010000, CRC(3e2287de) SHA1(ba0861a0bfb6eb76f9786c0a4c098db362117618), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 9)" )
+GAME_CUSTOM( 199?, m4ra__g, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xad.p1", 0x0000, 0x010000, CRC(75957d43) SHA1(f7d00842b8390f5464733a6fe1d61d7431a16817), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 1)" )
+GAME_CUSTOM( 199?, m4ra__h, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xb.p1", 0x0000, 0x010000, CRC(f37e9bd5) SHA1(584a1f6f1bfb35de813466448e35fc1251fa90bc), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 2)" )
+GAME_CUSTOM( 199?, m4ra__i, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xbd.p1", 0x0000, 0x010000, CRC(43891009) SHA1(5d9ebe9d48a39f0a121ae7b832b277910bfd0ad6), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 3)" )
+GAME_CUSTOM( 199?, m4ra__j, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xd.p1", 0x0000, 0x010000, CRC(bc59a07a) SHA1(3a8fc99690759ea376660feaf65bfda5386dcf0d), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 4)" )
+GAME_CUSTOM( 199?, m4ra__k, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xdr.p1", 0x0000, 0x010000, CRC(036950ba) SHA1(f0a534352b41c2762330762c3c7024d9a6d49cd4), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 5)" )
+GAME_CUSTOM( 199?, m4ra__l, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xdy.p1", 0x0000, 0x010000, CRC(468508d4) SHA1(ba6db1e1f7bca13b9c40173fb68418f319e2a9d8), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 6)" )
+GAME_CUSTOM( 199?, m4ra__m, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xr.p1", 0x0000, 0x010000, CRC(1a2b813d) SHA1(5d3b5d4ab31dd1848b3d0b2a5ff5798cc01e0c6f), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 7)" )
+GAME_CUSTOM( 199?, m4ra__n, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xs.p1", 0x0000, 0x010000, CRC(a1ba9673) SHA1(7d5441522e8676805f7e75a3d445acae83d8a03b), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 8)" )
+GAME_CUSTOM( 199?, m4ra__o, m4ra, cheatchr_pal<mpu4_characteriser_pal::graff_characteriser_prot>(R4, RT1), mpu4, init_m4, "ra3xy.p1", 0x0000, 0x010000, CRC(3e2287de) SHA1(ba0861a0bfb6eb76f9786c0a4c098db362117618), "Barcrest","Red Alert (Barcrest) (MPU4) (RA3 0.2, set 9)" )
/*****************************************************************************************************************************************************************************
@@ -815,7 +923,7 @@ GAME_CUSTOM( 199?, m4ra__o, m4ra, mod4yam_cheatchr_pal<mpu4_characteriser_pal
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::saynomore_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::saynomore_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// (C)1991 BARCREST and SNM 2.0
GAME_CUSTOM( 199?, m4sayno, 0, "snms.p1", 0x0000, 0x010000, CRC(be1f2222) SHA1(7d8319796e1d45a3d0246bf13b6d818f20796db3), "Barcrest","Say No More (Barcrest) (MPU4) (SNM 2.0)" )
@@ -827,7 +935,7 @@ GAME_CUSTOM( 199?, m4sayno__d, m4sayno, "snmx.p1", 0x0000, 0x01
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_bootleg_fixedret<0x08>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, bootleg_fixedret<0x08>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// no copyright string and SNM 0.5, different protection, hack?
GAME_CUSTOM( 199?, m4sayno__a, m4sayno, "snm 5p.bin", 0x0000, 0x010000, CRC(4fba5c0a) SHA1(85438c531d4122bc31f59127a577dc6d71a4ba9d), "hack?","Say No More (Barcrest) (MPU4) (SNM 0.5, hack, set 1)" )
@@ -839,7 +947,7 @@ GAME_CUSTOM( 199?, m4sayno__b, m4sayno, "say no more 425b.bin", 0x0000, 0x01
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_bootleg_fixedret<0xb0>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, bootleg_fixedret<0xb0>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// no copyright string and SNM 0.4, different protection, hack?
GAME_CUSTOM( 199?, m4sayno__c, m4sayno, "snm 6.bin", 0x0000, 0x010000, CRC(0d14730b) SHA1(2a35d72bdcc9402b00153621ec852f902720c104), "hack?","Say No More (Barcrest) (MPU4) (SNM 0.4, hack)" )
@@ -858,7 +966,7 @@ GAME_CUSTOM( 199?, m4sayno__c, m4sayno, "snm 6.bin", 0x0000, 0x01
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::rr6_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// (C)1995 B.W.B. and AE5 3.0
GAME_CUSTOM( 199?, m4acechs__a, m4acechs, "ae_05a__.3_1", 0x0000, 0x010000, CRC(900e1789) SHA1(dbb13f1728d8527a7de5d257c866732adb0a95b5), "BWB","Ace Chase (BWB) (MPU4) (AE5 3.0, set 1)" )
@@ -883,7 +991,7 @@ GAME_CUSTOM( 199?, m4acechs__u, m4acechs, "aei20___.3_1", 0x0000, 0x010000,
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::acechasealt_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::acechasealt_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// (C)1994 B.W.B. and AE5 2.0
GAME_CUSTOM( 199?, m4acechs, 0, "ae_05a__.2_3", 0x0000, 0x010000, CRC(c9a03623) SHA1(8daf7e71057528c481915eb8506e03ce9cf372c8), "BWB","Ace Chase (BWB) (MPU4) (AE5 2.0, set 1)" )
@@ -915,152 +1023,152 @@ GAME_CUSTOM( 199?, m4acechs__s, m4acechs, "aei10___.2_3", 0x0000, 0x010000,
GAME(year, setname, parent, machine, inputs, mpu4mod4yam_machines_state, init, ROT0, company, title, GAME_FLAGS )
// boot
-GAME_CUSTOM( 199?, m4supst__au, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "sp8b.p1", 0x0000, 0x010000, CRC(3b12d7e8) SHA1(92a15e5f8391d74c192e8386abdb8853a76bff05), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 1)" )
-GAME_CUSTOM( 199?, m4supst__av, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "sp8bd.p1", 0x0000, 0x010000, CRC(e0d7f789) SHA1(f6157469e43059adb44e7f2eff5bf73861d5636c), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 2)" )
-GAME_CUSTOM( 199?, m4supst__aw, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "sp8c.p1", 0x0000, 0x010000, CRC(da0af8ae) SHA1(91042506050967c508b30c3dc2bfa6f6a6e8b532), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 3)" )
-GAME_CUSTOM( 199?, m4supst__ax, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "sp8dk.p1", 0x0000, 0x010000, CRC(92432e8f) SHA1(5e6df963ccf92a89c71ae1edd7b71ec1e3f97522), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 4)" )
-GAME_CUSTOM( 199?, m4supst__ay, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "sp8k.p1", 0x0000, 0x010000, CRC(e39f74d8) SHA1(9d776e7d67859f4514c69fc4f9f43160da9a2ca1), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 5)" )
-GAME_CUSTOM( 199?, m4supst__az, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "sp8s.p1", 0x0000, 0x010000, CRC(fab99461) SHA1(82f8ca06bb04396f86124dfe4de46265b2edc393), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 6)" )
+GAME_CUSTOM( 199?, m4supst__au, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "sp8b.p1", 0x0000, 0x010000, CRC(3b12d7e8) SHA1(92a15e5f8391d74c192e8386abdb8853a76bff05), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 1)" )
+GAME_CUSTOM( 199?, m4supst__av, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "sp8bd.p1", 0x0000, 0x010000, CRC(e0d7f789) SHA1(f6157469e43059adb44e7f2eff5bf73861d5636c), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 2)" )
+GAME_CUSTOM( 199?, m4supst__aw, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "sp8c.p1", 0x0000, 0x010000, CRC(da0af8ae) SHA1(91042506050967c508b30c3dc2bfa6f6a6e8b532), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 3)" )
+GAME_CUSTOM( 199?, m4supst__ax, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "sp8dk.p1", 0x0000, 0x010000, CRC(92432e8f) SHA1(5e6df963ccf92a89c71ae1edd7b71ec1e3f97522), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 4)" )
+GAME_CUSTOM( 199?, m4supst__ay, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "sp8k.p1", 0x0000, 0x010000, CRC(e39f74d8) SHA1(9d776e7d67859f4514c69fc4f9f43160da9a2ca1), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 5)" )
+GAME_CUSTOM( 199?, m4supst__az, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "sp8s.p1", 0x0000, 0x010000, CRC(fab99461) SHA1(82f8ca06bb04396f86124dfe4de46265b2edc393), "Barcrest","Super Streak (Barcrest) (MPU4) (SP8 0.1, set 6)" )
// boot
-GAME_CUSTOM( 199?, m4supst__a0, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "spsbd.p1", 0x0000, 0x010000, CRC(b621b32d) SHA1(9aab0e074c120cb12beac585f9c513053502955c), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 1)" )
-GAME_CUSTOM( 199?, m4supst__a1, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "spsc.p1", 0x0000, 0x010000, CRC(8c7a24f5) SHA1(f86be164e05235281fb275e950cedaf6f630d29a), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 2)" )
-GAME_CUSTOM( 199?, m4supst__a2, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "spsd.p1", 0x0000, 0x010000, CRC(d34d3617) SHA1(5373335557e4bbb21264bbd9d0fbaf3640f9ab35), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 3)" )
-GAME_CUSTOM( 199?, m4supst__a3, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "spsdk.p1", 0x0000, 0x010000, CRC(cf2fd3e7) SHA1(50d3c0851bec90037cd65a5c55654b0e688b96ca), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 4)" )
-GAME_CUSTOM( 199?, m4supst__a4, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "spsk.p1", 0x0000, 0x010000, CRC(873a1414) SHA1(47b2bbef168382112cd12ace2d6a58695f4b0254), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 5)" )
-GAME_CUSTOM( 199?, m4supst__a5, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "spss.p1", 0x0000, 0x010000, CRC(5e28bdb7) SHA1(3865c891178feb744ad11b2dea491350efc48bea), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 6)" )
+GAME_CUSTOM( 199?, m4supst__a0, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "spsbd.p1", 0x0000, 0x010000, CRC(b621b32d) SHA1(9aab0e074c120cb12beac585f9c513053502955c), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 1)" )
+GAME_CUSTOM( 199?, m4supst__a1, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "spsc.p1", 0x0000, 0x010000, CRC(8c7a24f5) SHA1(f86be164e05235281fb275e950cedaf6f630d29a), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 2)" )
+GAME_CUSTOM( 199?, m4supst__a2, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "spsd.p1", 0x0000, 0x010000, CRC(d34d3617) SHA1(5373335557e4bbb21264bbd9d0fbaf3640f9ab35), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 3)" )
+GAME_CUSTOM( 199?, m4supst__a3, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "spsdk.p1", 0x0000, 0x010000, CRC(cf2fd3e7) SHA1(50d3c0851bec90037cd65a5c55654b0e688b96ca), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 4)" )
+GAME_CUSTOM( 199?, m4supst__a4, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "spsk.p1", 0x0000, 0x010000, CRC(873a1414) SHA1(47b2bbef168382112cd12ace2d6a58695f4b0254), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 5)" )
+GAME_CUSTOM( 199?, m4supst__a5, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "spss.p1", 0x0000, 0x010000, CRC(5e28bdb7) SHA1(3865c891178feb744ad11b2dea491350efc48bea), "Barcrest","Super Streak (Barcrest) (MPU4) (SPS 0.8, set 6)" )
// Hopper error
-GAME_CUSTOM( 199?, m4supst, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4b.p1", 0x0000, 0x010000, CRC(fb0aac20) SHA1(3a40be78f7add7905afa8d1226ad41bf0041a2ec), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 1)" )
-GAME_CUSTOM( 199?, m4supst__a, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4ad.p1", 0x0000, 0x010000, CRC(c0e81dfd) SHA1(2da922df6c102f8d0f1678e974df9e4d356e5133), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 2)" )
-GAME_CUSTOM( 199?, m4supst__b, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4bd.p1", 0x0000, 0x010000, CRC(dafc7ed6) SHA1(3e92d5557d2f587132f4b3b633978ab7d4333fcc), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 3)" )
-GAME_CUSTOM( 199?, m4supst__c, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4d.p1", 0x0000, 0x010000, CRC(c1fcda65) SHA1(11f2a45f3f821eac6b98b1988824d77aada3d759), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 4)" )
-GAME_CUSTOM( 199?, m4supst__d, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4dk.p1", 0x0000, 0x010000, CRC(30a46171) SHA1(ef1f2951b478ba2b2d42dfb0ec4ed59f28d79972), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 5)" )
-GAME_CUSTOM( 199?, m4supst__e, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4dy.p1", 0x0000, 0x010000, CRC(72b15ce7) SHA1(c451ac552ffe9bcde1990b97a60b0ed8918bf8c8), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 6)" )
-GAME_CUSTOM( 199?, m4supst__f, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4k.p1", 0x0000, 0x010000, CRC(f252f9ea) SHA1(251998ea752deb4f4a05c833b19e89d334334fac), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 7)" )
-GAME_CUSTOM( 199?, m4supst__g, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4s.p1", 0x0000, 0x010000, CRC(10f7b88d) SHA1(0aac0ebbe0ce04db49fc7de4325eea9abdfd74b5), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 8)" )
-GAME_CUSTOM( 199?, m4supst__h, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cs4y.p1", 0x0000, 0x010000, CRC(a464d09d) SHA1(d38c0f8c7c9b7f560b685781a7dcf82bc031a191), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 9)" )
+GAME_CUSTOM( 199?, m4supst, 0, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4b.p1", 0x0000, 0x010000, CRC(fb0aac20) SHA1(3a40be78f7add7905afa8d1226ad41bf0041a2ec), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 1)" )
+GAME_CUSTOM( 199?, m4supst__a, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4ad.p1", 0x0000, 0x010000, CRC(c0e81dfd) SHA1(2da922df6c102f8d0f1678e974df9e4d356e5133), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 2)" )
+GAME_CUSTOM( 199?, m4supst__b, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4bd.p1", 0x0000, 0x010000, CRC(dafc7ed6) SHA1(3e92d5557d2f587132f4b3b633978ab7d4333fcc), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 3)" )
+GAME_CUSTOM( 199?, m4supst__c, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4d.p1", 0x0000, 0x010000, CRC(c1fcda65) SHA1(11f2a45f3f821eac6b98b1988824d77aada3d759), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 4)" )
+GAME_CUSTOM( 199?, m4supst__d, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4dk.p1", 0x0000, 0x010000, CRC(30a46171) SHA1(ef1f2951b478ba2b2d42dfb0ec4ed59f28d79972), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 5)" )
+GAME_CUSTOM( 199?, m4supst__e, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4dy.p1", 0x0000, 0x010000, CRC(72b15ce7) SHA1(c451ac552ffe9bcde1990b97a60b0ed8918bf8c8), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 6)" )
+GAME_CUSTOM( 199?, m4supst__f, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4k.p1", 0x0000, 0x010000, CRC(f252f9ea) SHA1(251998ea752deb4f4a05c833b19e89d334334fac), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 7)" )
+GAME_CUSTOM( 199?, m4supst__g, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4s.p1", 0x0000, 0x010000, CRC(10f7b88d) SHA1(0aac0ebbe0ce04db49fc7de4325eea9abdfd74b5), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 8)" )
+GAME_CUSTOM( 199?, m4supst__h, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cs4y.p1", 0x0000, 0x010000, CRC(a464d09d) SHA1(d38c0f8c7c9b7f560b685781a7dcf82bc031a191), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.7, set 9)" )
// Hopper error
// CS4 0.4 in header, CST 0.4 on boot
-GAME_CUSTOM( 199?, m4supst__u, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04ad.p1", 0x0000, 0x010000, CRC(b946d40d) SHA1(c03fa48f8b64c3cf4504f472f21a38f8a55f12e6), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 1)" )
-GAME_CUSTOM( 199?, m4supst__v, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04b.p1", 0x0000, 0x010000, CRC(45333d45) SHA1(d6ccb39ee9b316772052f856f79424c34ff273c5), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 2)" )
-GAME_CUSTOM( 199?, m4supst__w, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04bd.p1", 0x0000, 0x010000, CRC(03b56b07) SHA1(903b24ab93f9584f228278729b5a99451b8e81f7), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 3)" )
-GAME_CUSTOM( 199?, m4supst__x, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04c.p1", 0x0000, 0x010000, CRC(9c000883) SHA1(da0a9f1afc218c14a57a46fe2ea63e166f4e3739), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 4)" )
-GAME_CUSTOM( 199?, m4supst__y, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04d.p1", 0x0000, 0x010000, CRC(32281bec) SHA1(a043fb615c2a66d23d85ae80cb0b1705523f411c), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 5)" )
-GAME_CUSTOM( 199?, m4supst__z, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04dk.p1", 0x0000, 0x010000, CRC(9345e7b7) SHA1(8bff80d2b847fbae050f77215efe3e55b98a4657), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 6)" )
-GAME_CUSTOM( 199?, m4supst__0, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04dr.p1", 0x0000, 0x010000, CRC(8d397063) SHA1(45642de2629e89e2495d1cbd5aed90cf2a4cf1c1), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 7)" )
-GAME_CUSTOM( 199?, m4supst__1, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04dy.p1", 0x0000, 0x010000, CRC(4a303ced) SHA1(6c12b956358753c8bf99bd3316646721c9ec2585), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 8)" )
-GAME_CUSTOM( 199?, m4supst__2, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04k.p1", 0x0000, 0x010000, CRC(a59584f5) SHA1(8cfcf069ad905277f1925e682602e129e97e619b), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 9)" )
-GAME_CUSTOM( 199?, m4supst__3, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04r.p1", 0x0000, 0x010000, CRC(c9771997) SHA1(ed98650c0d73f2db0fe380777d10404ccabced31), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 10)" )
-GAME_CUSTOM( 199?, m4supst__4, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04s.p1", 0x0000, 0x010000, CRC(cd5b848d) SHA1(4dd3dd1c883552c7b5c475156308604b12eff75a), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 11)" )
-GAME_CUSTOM( 199?, m4supst__5, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "cst04y.p1", 0x0000, 0x010000, CRC(7adc00ae) SHA1(5688f0876c18faf474a6d8487fdd85f20f9fc144), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 12)" )
+GAME_CUSTOM( 199?, m4supst__u, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04ad.p1", 0x0000, 0x010000, CRC(b946d40d) SHA1(c03fa48f8b64c3cf4504f472f21a38f8a55f12e6), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 1)" )
+GAME_CUSTOM( 199?, m4supst__v, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04b.p1", 0x0000, 0x010000, CRC(45333d45) SHA1(d6ccb39ee9b316772052f856f79424c34ff273c5), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 2)" )
+GAME_CUSTOM( 199?, m4supst__w, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04bd.p1", 0x0000, 0x010000, CRC(03b56b07) SHA1(903b24ab93f9584f228278729b5a99451b8e81f7), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 3)" )
+GAME_CUSTOM( 199?, m4supst__x, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04c.p1", 0x0000, 0x010000, CRC(9c000883) SHA1(da0a9f1afc218c14a57a46fe2ea63e166f4e3739), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 4)" )
+GAME_CUSTOM( 199?, m4supst__y, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04d.p1", 0x0000, 0x010000, CRC(32281bec) SHA1(a043fb615c2a66d23d85ae80cb0b1705523f411c), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 5)" )
+GAME_CUSTOM( 199?, m4supst__z, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04dk.p1", 0x0000, 0x010000, CRC(9345e7b7) SHA1(8bff80d2b847fbae050f77215efe3e55b98a4657), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 6)" )
+GAME_CUSTOM( 199?, m4supst__0, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04dr.p1", 0x0000, 0x010000, CRC(8d397063) SHA1(45642de2629e89e2495d1cbd5aed90cf2a4cf1c1), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 7)" )
+GAME_CUSTOM( 199?, m4supst__1, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04dy.p1", 0x0000, 0x010000, CRC(4a303ced) SHA1(6c12b956358753c8bf99bd3316646721c9ec2585), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 8)" )
+GAME_CUSTOM( 199?, m4supst__2, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04k.p1", 0x0000, 0x010000, CRC(a59584f5) SHA1(8cfcf069ad905277f1925e682602e129e97e619b), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 9)" )
+GAME_CUSTOM( 199?, m4supst__3, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04r.p1", 0x0000, 0x010000, CRC(c9771997) SHA1(ed98650c0d73f2db0fe380777d10404ccabced31), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 10)" )
+GAME_CUSTOM( 199?, m4supst__4, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04s.p1", 0x0000, 0x010000, CRC(cd5b848d) SHA1(4dd3dd1c883552c7b5c475156308604b12eff75a), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 11)" )
+GAME_CUSTOM( 199?, m4supst__5, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "cst04y.p1", 0x0000, 0x010000, CRC(7adc00ae) SHA1(5688f0876c18faf474a6d8487fdd85f20f9fc144), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 12)" )
// Hopper error
// CS4 0.3 in header, CSU 0.3 on boot
-GAME_CUSTOM( 199?, m4supst__6, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03ad.p1", 0x0000, 0x010000, CRC(5d7b6393) SHA1(19c24f4113efb6a1499936e5f89a8ad859ff8df0), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 1)" )
-GAME_CUSTOM( 199?, m4supst__7, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03b.p1", 0x0000, 0x010000, CRC(57826c2a) SHA1(b835eb3066fec468ab55851d1dd023484e2d57e3), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 2)" )
-GAME_CUSTOM( 199?, m4supst__8, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03bd.p1", 0x0000, 0x010000, CRC(092e7039) SHA1(36a7c18872e4012e3acce0d01d2cc2c201a3c867), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 3)" )
-GAME_CUSTOM( 199?, m4supst__9, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03c.p1", 0x0000, 0x010000, CRC(b30a3c00) SHA1(066b0007092720a6f89edf8eafffe2f8fd83edbc), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 4)" )
-GAME_CUSTOM( 199?, m4supst__aa, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03d.p1", 0x0000, 0x010000, CRC(03ff9d99) SHA1(390087c136e4c314de9086adb7b020e8adabe34a), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 5)" )
-GAME_CUSTOM( 199?, m4supst__ab, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03dk.p1", 0x0000, 0x010000, CRC(cf7e61ff) SHA1(0e328ce5ff86770fabaf91d48a8de039323d112a), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 6)" )
-GAME_CUSTOM( 199?, m4supst__ac, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03dr.p1", 0x0000, 0x010000, CRC(00d700d1) SHA1(8bcc3c470c42780b1f1404fc6ff53e6ec7d89ad0), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 7)" )
-GAME_CUSTOM( 199?, m4supst__ad, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03dy.p1", 0x0000, 0x010000, CRC(8ec77c04) SHA1(64708460439a7e124f90eef6b9628e57f7d78ebc), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 8)" )
-GAME_CUSTOM( 199?, m4supst__ae, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03k.p1", 0x0000, 0x010000, CRC(701a0837) SHA1(31237fd108b354fb2afc449efa3a53dee2cf7be8), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 9)" )
-GAME_CUSTOM( 199?, m4supst__af, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03r.p1", 0x0000, 0x010000, CRC(d86a6895) SHA1(2c42bcf5de739f01e18bd1b766eec26a6da5aa52), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 10)" )
-GAME_CUSTOM( 199?, m4supst__ag, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03s.p1", 0x0000, 0x010000, CRC(197bb032) SHA1(06e98713ff5fc72bffccde1cc92fc8cb63665fad), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 11)" )
-GAME_CUSTOM( 199?, m4supst__ah, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>, mpu4, init_m4default, "csu03y.p1", 0x0000, 0x010000, CRC(bee0e7e1) SHA1(6a1ab766af9147f0d4a7c1d2a95c9a6e3e3f4986), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 12)" )
+GAME_CUSTOM( 199?, m4supst__6, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03ad.p1", 0x0000, 0x010000, CRC(5d7b6393) SHA1(19c24f4113efb6a1499936e5f89a8ad859ff8df0), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 1)" )
+GAME_CUSTOM( 199?, m4supst__7, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03b.p1", 0x0000, 0x010000, CRC(57826c2a) SHA1(b835eb3066fec468ab55851d1dd023484e2d57e3), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 2)" )
+GAME_CUSTOM( 199?, m4supst__8, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03bd.p1", 0x0000, 0x010000, CRC(092e7039) SHA1(36a7c18872e4012e3acce0d01d2cc2c201a3c867), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 3)" )
+GAME_CUSTOM( 199?, m4supst__9, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03c.p1", 0x0000, 0x010000, CRC(b30a3c00) SHA1(066b0007092720a6f89edf8eafffe2f8fd83edbc), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 4)" )
+GAME_CUSTOM( 199?, m4supst__aa, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03d.p1", 0x0000, 0x010000, CRC(03ff9d99) SHA1(390087c136e4c314de9086adb7b020e8adabe34a), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 5)" )
+GAME_CUSTOM( 199?, m4supst__ab, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03dk.p1", 0x0000, 0x010000, CRC(cf7e61ff) SHA1(0e328ce5ff86770fabaf91d48a8de039323d112a), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 6)" )
+GAME_CUSTOM( 199?, m4supst__ac, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03dr.p1", 0x0000, 0x010000, CRC(00d700d1) SHA1(8bcc3c470c42780b1f1404fc6ff53e6ec7d89ad0), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 7)" )
+GAME_CUSTOM( 199?, m4supst__ad, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03dy.p1", 0x0000, 0x010000, CRC(8ec77c04) SHA1(64708460439a7e124f90eef6b9628e57f7d78ebc), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 8)" )
+GAME_CUSTOM( 199?, m4supst__ae, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03k.p1", 0x0000, 0x010000, CRC(701a0837) SHA1(31237fd108b354fb2afc449efa3a53dee2cf7be8), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 9)" )
+GAME_CUSTOM( 199?, m4supst__af, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03r.p1", 0x0000, 0x010000, CRC(d86a6895) SHA1(2c42bcf5de739f01e18bd1b766eec26a6da5aa52), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 10)" )
+GAME_CUSTOM( 199?, m4supst__ag, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03s.p1", 0x0000, 0x010000, CRC(197bb032) SHA1(06e98713ff5fc72bffccde1cc92fc8cb63665fad), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 11)" )
+GAME_CUSTOM( 199?, m4supst__ah, m4supst, cheatchr_pal<mpu4_characteriser_pal::m574_characteriser_prot>(R4, RT1), mpu4, init_m4, "csu03y.p1", 0x0000, 0x010000, CRC(bee0e7e1) SHA1(6a1ab766af9147f0d4a7c1d2a95c9a6e3e3f4986), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 12)" )
// different CHR - boots
-GAME_CUSTOM( 199?, m4supst__bi, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttad.p1", 0x0000, 0x010000, CRC(af615f05) SHA1(b2c1b8ba086a4d33f1269c28d4caa7286a27f085), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 1)" )
-GAME_CUSTOM( 199?, m4supst__bj, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttb.p1", 0x0000, 0x010000, CRC(3119149f) SHA1(e749fcc5f95ccd29f42bfd0b140cf3cbb84d9599), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 2)" )
-GAME_CUSTOM( 199?, m4supst__bk, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttbd.p1", 0x0000, 0x010000, CRC(cfddaf39) SHA1(0f24b5e691e1d43f6604087f0b3bc2571d2c4002), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 3)" )
-GAME_CUSTOM( 199?, m4supst__bl, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttd.p1", 0x0000, 0x010000, CRC(8bc2498c) SHA1(a9cd3a6968186818a8c4033b1f304eac152244cf), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 4)" )
-GAME_CUSTOM( 199?, m4supst__bm, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttdk.p1", 0x0000, 0x010000, CRC(39903dde) SHA1(f92c4380051ada7bbc5739550c8dfdd6ddaaa3fe), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 5)" )
-GAME_CUSTOM( 199?, m4supst__bn, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttdr.p1", 0x0000, 0x010000, CRC(866f69f0) SHA1(ef9717f89b9718f1bcf8d3592f240ec9cf48bca3), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 6)" )
-GAME_CUSTOM( 199?, m4supst__bo, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttdy.p1", 0x0000, 0x010000, CRC(74ebd933) SHA1(b308c8cae2c74e4e07c6e4afb505068220714824), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 7)" )
-GAME_CUSTOM( 199?, m4supst__bp, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttk.p1", 0x0000, 0x010000, CRC(461db2f5) SHA1(8b97342d7ebfb33aa6aff246e8d799f4435788b7), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 8)" )
-GAME_CUSTOM( 199?, m4supst__bq, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "sttr.p1", 0x0000, 0x010000, CRC(2591f6ec) SHA1(3d83d930e41e164e71d67b529967320e1eee8354), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 9)" )
-GAME_CUSTOM( 199?, m4supst__br, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stts.p1", 0x0000, 0x010000, CRC(a5e29c32) SHA1(8ba2f76505c2f40493c918b9d9524fa67999f7c1), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 10)" )
-GAME_CUSTOM( 199?, m4supst__bs, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stty.p1", 0x0000, 0x010000, CRC(7306fab9) SHA1(0da1612490fcff9b7a17f97190b6b561016c3b18), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 11)" )
+GAME_CUSTOM( 199?, m4supst__bi, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttad.p1", 0x0000, 0x010000, CRC(af615f05) SHA1(b2c1b8ba086a4d33f1269c28d4caa7286a27f085), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 1)" )
+GAME_CUSTOM( 199?, m4supst__bj, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttb.p1", 0x0000, 0x010000, CRC(3119149f) SHA1(e749fcc5f95ccd29f42bfd0b140cf3cbb84d9599), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 2)" )
+GAME_CUSTOM( 199?, m4supst__bk, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttbd.p1", 0x0000, 0x010000, CRC(cfddaf39) SHA1(0f24b5e691e1d43f6604087f0b3bc2571d2c4002), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 3)" )
+GAME_CUSTOM( 199?, m4supst__bl, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttd.p1", 0x0000, 0x010000, CRC(8bc2498c) SHA1(a9cd3a6968186818a8c4033b1f304eac152244cf), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 4)" )
+GAME_CUSTOM( 199?, m4supst__bm, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttdk.p1", 0x0000, 0x010000, CRC(39903dde) SHA1(f92c4380051ada7bbc5739550c8dfdd6ddaaa3fe), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 5)" )
+GAME_CUSTOM( 199?, m4supst__bn, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttdr.p1", 0x0000, 0x010000, CRC(866f69f0) SHA1(ef9717f89b9718f1bcf8d3592f240ec9cf48bca3), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 6)" )
+GAME_CUSTOM( 199?, m4supst__bo, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttdy.p1", 0x0000, 0x010000, CRC(74ebd933) SHA1(b308c8cae2c74e4e07c6e4afb505068220714824), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 7)" )
+GAME_CUSTOM( 199?, m4supst__bp, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttk.p1", 0x0000, 0x010000, CRC(461db2f5) SHA1(8b97342d7ebfb33aa6aff246e8d799f4435788b7), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 8)" )
+GAME_CUSTOM( 199?, m4supst__bq, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "sttr.p1", 0x0000, 0x010000, CRC(2591f6ec) SHA1(3d83d930e41e164e71d67b529967320e1eee8354), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 9)" )
+GAME_CUSTOM( 199?, m4supst__br, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stts.p1", 0x0000, 0x010000, CRC(a5e29c32) SHA1(8ba2f76505c2f40493c918b9d9524fa67999f7c1), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 10)" )
+GAME_CUSTOM( 199?, m4supst__bs, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stty.p1", 0x0000, 0x010000, CRC(7306fab9) SHA1(0da1612490fcff9b7a17f97190b6b561016c3b18), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.3, set 11)" )
// different CHR - boots
-GAME_CUSTOM( 199?, m4supst__bt, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stuad.p1", 0x0000, 0x010000, CRC(e7a01b7b) SHA1(3db08800a35d440f012ca69d84c30465818b4993), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 1)" )
-GAME_CUSTOM( 199?, m4supst__bu, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stub.p1", 0x0000, 0x010000, CRC(9044badf) SHA1(af8e218e3dc457bb5f24e3f2d74a8639466c3f11), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 2)" )
-GAME_CUSTOM( 199?, m4supst__bv, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stubd.p1", 0x0000, 0x010000, CRC(438e1687) SHA1(5e0f27e95bf861d4edc55709efc79496c7353e8b), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 3)" )
-GAME_CUSTOM( 199?, m4supst__bw, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stud.p1", 0x0000, 0x010000, CRC(1cbe3bec) SHA1(005dde84e57c5517fc6d6b975cc882dae11cbf63), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 4)" )
-GAME_CUSTOM( 199?, m4supst__bx, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "studk.p1", 0x0000, 0x010000, CRC(0931d501) SHA1(afa078248230cbc0acc9d3af641ec63ed0424a75), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 5)" )
-GAME_CUSTOM( 199?, m4supst__by, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "studr.p1", 0x0000, 0x010000, CRC(e06e1c59) SHA1(f4454f640335dbf6f9b8154d7805102253f605b4), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 6)" )
-GAME_CUSTOM( 199?, m4supst__bz, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "study.p1", 0x0000, 0x010000, CRC(8b4275e0) SHA1(267a9d2eddf41b8838eeaee06bba45f0a8b8451f), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 7)" )
-GAME_CUSTOM( 199?, m4supst__b0, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stuk.p1", 0x0000, 0x010000, CRC(a66fb54f) SHA1(4351edbf6c5de817cf6972885ff1f6c7df837c37), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 8)" )
-GAME_CUSTOM( 199?, m4supst__b1, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stur.p1", 0x0000, 0x010000, CRC(eeb3bfed) SHA1(87a753511fb384a505d3cc69ca67fe4e288cf3bb), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 9)" )
-GAME_CUSTOM( 199?, m4supst__b2, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stus.p1", 0x0000, 0x010000, CRC(19aca6ad) SHA1(1583e76a4e1058fa97efdd9a7e6f7c4fe806b2f4), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 10)" )
-GAME_CUSTOM( 199?, m4supst__b3, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "stuy.p1", 0x0000, 0x010000, CRC(e6b2b76f) SHA1(bf251b751e6a8d2764c63e92d48e1a64666b9a47), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 11)" )
+GAME_CUSTOM( 199?, m4supst__bt, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stuad.p1", 0x0000, 0x010000, CRC(e7a01b7b) SHA1(3db08800a35d440f012ca69d84c30465818b4993), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 1)" )
+GAME_CUSTOM( 199?, m4supst__bu, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stub.p1", 0x0000, 0x010000, CRC(9044badf) SHA1(af8e218e3dc457bb5f24e3f2d74a8639466c3f11), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 2)" )
+GAME_CUSTOM( 199?, m4supst__bv, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stubd.p1", 0x0000, 0x010000, CRC(438e1687) SHA1(5e0f27e95bf861d4edc55709efc79496c7353e8b), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 3)" )
+GAME_CUSTOM( 199?, m4supst__bw, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stud.p1", 0x0000, 0x010000, CRC(1cbe3bec) SHA1(005dde84e57c5517fc6d6b975cc882dae11cbf63), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 4)" )
+GAME_CUSTOM( 199?, m4supst__bx, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "studk.p1", 0x0000, 0x010000, CRC(0931d501) SHA1(afa078248230cbc0acc9d3af641ec63ed0424a75), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 5)" )
+GAME_CUSTOM( 199?, m4supst__by, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "studr.p1", 0x0000, 0x010000, CRC(e06e1c59) SHA1(f4454f640335dbf6f9b8154d7805102253f605b4), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 6)" )
+GAME_CUSTOM( 199?, m4supst__bz, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "study.p1", 0x0000, 0x010000, CRC(8b4275e0) SHA1(267a9d2eddf41b8838eeaee06bba45f0a8b8451f), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 7)" )
+GAME_CUSTOM( 199?, m4supst__b0, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stuk.p1", 0x0000, 0x010000, CRC(a66fb54f) SHA1(4351edbf6c5de817cf6972885ff1f6c7df837c37), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 8)" )
+GAME_CUSTOM( 199?, m4supst__b1, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stur.p1", 0x0000, 0x010000, CRC(eeb3bfed) SHA1(87a753511fb384a505d3cc69ca67fe4e288cf3bb), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 9)" )
+GAME_CUSTOM( 199?, m4supst__b2, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stus.p1", 0x0000, 0x010000, CRC(19aca6ad) SHA1(1583e76a4e1058fa97efdd9a7e6f7c4fe806b2f4), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 10)" )
+GAME_CUSTOM( 199?, m4supst__b3, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "stuy.p1", 0x0000, 0x010000, CRC(e6b2b76f) SHA1(bf251b751e6a8d2764c63e92d48e1a64666b9a47), "Barcrest","Super Streak (Barcrest) (MPU4) (STU 0.1, set 11)" )
// different CHR - boots
-GAME_CUSTOM( 199?, m4supst__b4, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, init_m4default, "superstreak1deb.bin", 0x0000, 0x010000, CRC(892ccad9) SHA1(c88daadd9778e363e154b674b57ccd07cea59836), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.2K)" )
+GAME_CUSTOM( 199?, m4supst__b4, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, init_m4, "superstreak1deb.bin", 0x0000, 0x010000, CRC(892ccad9) SHA1(c88daadd9778e363e154b674b57ccd07cea59836), "Barcrest","Super Streak (Barcrest) (MPU4) (STT 0.2K)" )
// different CHR - hopper
// CS4 0.2 in header, CSP 0.2 on boot
-GAME_CUSTOM( 199?, m4supst__i, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02ad.p1", 0x0000, 0x010000, CRC(96bbbc26) SHA1(ca127151c771963c07f0f368102ede8095d11863), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 1)" )
-GAME_CUSTOM( 199?, m4supst__j, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02b.p1", 0x0000, 0x010000, CRC(913ea9ff) SHA1(182bcc007d007a1c7f57767358600d2de7d1e3cf), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 2)" )
-GAME_CUSTOM( 199?, m4supst__k, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02bd.p1", 0x0000, 0x010000, CRC(ad0137a1) SHA1(d043372ba09081dd4e807f009a6460b4b30e6453), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 3)" )
-GAME_CUSTOM( 199?, m4supst__l, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02c.p1", 0x0000, 0x010000, CRC(fdad4b22) SHA1(4f19922821a9d1663bd9355447209384272e7542), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 4)" )
-GAME_CUSTOM( 199?, m4supst__m, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02d.p1", 0x0000, 0x010000, CRC(9717a58d) SHA1(8bc495dc4db0041718ae2db14a01a789616c8764), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 5)" )
-GAME_CUSTOM( 199?, m4supst__n, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02dk.p1", 0x0000, 0x010000, CRC(cd8aa547) SHA1(a13dcb75507878cb133b9ef739fb41d932d4eed5), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 6)" )
-GAME_CUSTOM( 199?, m4supst__o, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02dr.p1", 0x0000, 0x010000, CRC(6656e588) SHA1(4001ec0d1145ef0107e62ccda61e22ba8b0cdc92), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 7)" )
-GAME_CUSTOM( 199?, m4supst__p, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02dy.p1", 0x0000, 0x010000, CRC(14ff7e1d) SHA1(455b6ff93a5f25dc5f43c62a6c1d9a18de1ce94b), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 8)" )
-GAME_CUSTOM( 199?, m4supst__q, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02k.p1", 0x0000, 0x010000, CRC(c438c754) SHA1(c1d2e664091c1eaf1e4d964a3bfd446b11d7ba41), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 9)" )
-GAME_CUSTOM( 199?, m4supst__r, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02r.p1", 0x0000, 0x010000, CRC(4abe0f80) SHA1(67f7f9946a26b5097b6ce719dbd599790078f365), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 10)" )
-GAME_CUSTOM( 199?, m4supst__s, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02s.p1", 0x0000, 0x010000, CRC(47c0068d) SHA1(5480a519a6e6df2757e66cfcf904dd6c2873cc43), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 11)" )
-GAME_CUSTOM( 199?, m4supst__t, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "csp02y.p1", 0x0000, 0x010000, CRC(d51d18d8) SHA1(a65fd4326872775364d2d7a886e98a1ee07596b7), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 12)" )
+GAME_CUSTOM( 199?, m4supst__i, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02ad.p1", 0x0000, 0x010000, CRC(96bbbc26) SHA1(ca127151c771963c07f0f368102ede8095d11863), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 1)" )
+GAME_CUSTOM( 199?, m4supst__j, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02b.p1", 0x0000, 0x010000, CRC(913ea9ff) SHA1(182bcc007d007a1c7f57767358600d2de7d1e3cf), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 2)" )
+GAME_CUSTOM( 199?, m4supst__k, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02bd.p1", 0x0000, 0x010000, CRC(ad0137a1) SHA1(d043372ba09081dd4e807f009a6460b4b30e6453), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 3)" )
+GAME_CUSTOM( 199?, m4supst__l, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02c.p1", 0x0000, 0x010000, CRC(fdad4b22) SHA1(4f19922821a9d1663bd9355447209384272e7542), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 4)" )
+GAME_CUSTOM( 199?, m4supst__m, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02d.p1", 0x0000, 0x010000, CRC(9717a58d) SHA1(8bc495dc4db0041718ae2db14a01a789616c8764), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 5)" )
+GAME_CUSTOM( 199?, m4supst__n, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02dk.p1", 0x0000, 0x010000, CRC(cd8aa547) SHA1(a13dcb75507878cb133b9ef739fb41d932d4eed5), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 6)" )
+GAME_CUSTOM( 199?, m4supst__o, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02dr.p1", 0x0000, 0x010000, CRC(6656e588) SHA1(4001ec0d1145ef0107e62ccda61e22ba8b0cdc92), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 7)" )
+GAME_CUSTOM( 199?, m4supst__p, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02dy.p1", 0x0000, 0x010000, CRC(14ff7e1d) SHA1(455b6ff93a5f25dc5f43c62a6c1d9a18de1ce94b), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 8)" )
+GAME_CUSTOM( 199?, m4supst__q, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02k.p1", 0x0000, 0x010000, CRC(c438c754) SHA1(c1d2e664091c1eaf1e4d964a3bfd446b11d7ba41), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 9)" )
+GAME_CUSTOM( 199?, m4supst__r, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02r.p1", 0x0000, 0x010000, CRC(4abe0f80) SHA1(67f7f9946a26b5097b6ce719dbd599790078f365), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 10)" )
+GAME_CUSTOM( 199?, m4supst__s, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02s.p1", 0x0000, 0x010000, CRC(47c0068d) SHA1(5480a519a6e6df2757e66cfcf904dd6c2873cc43), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 11)" )
+GAME_CUSTOM( 199?, m4supst__t, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "csp02y.p1", 0x0000, 0x010000, CRC(d51d18d8) SHA1(a65fd4326872775364d2d7a886e98a1ee07596b7), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 12)" )
// different CHR - hopper
// CS4 0.2 in header, EEH 0.2 on boot
-GAME_CUSTOM( 199?, m4supst__ai, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02ad.p1", 0x0000, 0x010000, CRC(25874a6d) SHA1(12e4fb36d231c3104df3613dd3851f411a876eb0), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 1)" )
-GAME_CUSTOM( 199?, m4supst__aj, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02b.p1", 0x0000, 0x010000, CRC(ef280a8a) SHA1(912a825e69482a540cf0cadfc49a37a2822f3ecb), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 2)" )
-GAME_CUSTOM( 199?, m4supst__ak, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02bd.p1", 0x0000, 0x010000, CRC(5f126810) SHA1(8fe1cbc7d93e2db35225388ee0773f6a98762ca1), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 3)" )
-GAME_CUSTOM( 199?, m4supst__al, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02c.p1", 0x0000, 0x010000, CRC(3f49b936) SHA1(a0d07e0101f8cc38ebc28cfc1b239793b961f5ab), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 4)" )
-GAME_CUSTOM( 199?, m4supst__am, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02d.p1", 0x0000, 0x010000, CRC(14dcfe63) SHA1(3ac77c9aa9b3b77fb1df98d2b427564be41dca78), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 5)" )
-GAME_CUSTOM( 199?, m4supst__an, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02dk.p1", 0x0000, 0x010000, CRC(81a39421) SHA1(6fa43e8cb83e7fb940cc224eed5ee3f254c18c4d), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 6)" )
-GAME_CUSTOM( 199?, m4supst__ao, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02dr.p1", 0x0000, 0x010000, CRC(c7755823) SHA1(05626ed49a2f800555f3f404273fa910b68de75c), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 7)" )
-GAME_CUSTOM( 199?, m4supst__ap, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02dy.p1", 0x0000, 0x010000, CRC(5a1e70cd) SHA1(88bb29fd52d2331b72bb04652f9578f2c2f5a9ac), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 8)" )
-GAME_CUSTOM( 199?, m4supst__aq, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02k.p1", 0x0000, 0x010000, CRC(b78882ec) SHA1(79c6a6d2cfe113743d3a93eb825fccab2b025933), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 9)" )
-GAME_CUSTOM( 199?, m4supst__ar, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02r.p1", 0x0000, 0x010000, CRC(ff54884e) SHA1(2783f0e562e946597288ddbec4dcd1101e188d1d), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 10)" )
-GAME_CUSTOM( 199?, m4supst__as, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02s.p1", 0x0000, 0x010000, CRC(c5856c3c) SHA1(5a0e5a7188913e1c36eac894bbeeae47a4f3589c), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 11)" )
-GAME_CUSTOM( 199?, m4supst__at, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "eeh02y.p1", 0x0000, 0x010000, CRC(623fa0a0) SHA1(5a49cea5e94afccbf965cbda7a8d9a74f9734a6e), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 12)" )
+GAME_CUSTOM( 199?, m4supst__ai, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02ad.p1", 0x0000, 0x010000, CRC(25874a6d) SHA1(12e4fb36d231c3104df3613dd3851f411a876eb0), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 1)" )
+GAME_CUSTOM( 199?, m4supst__aj, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02b.p1", 0x0000, 0x010000, CRC(ef280a8a) SHA1(912a825e69482a540cf0cadfc49a37a2822f3ecb), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 2)" )
+GAME_CUSTOM( 199?, m4supst__ak, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02bd.p1", 0x0000, 0x010000, CRC(5f126810) SHA1(8fe1cbc7d93e2db35225388ee0773f6a98762ca1), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 3)" )
+GAME_CUSTOM( 199?, m4supst__al, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02c.p1", 0x0000, 0x010000, CRC(3f49b936) SHA1(a0d07e0101f8cc38ebc28cfc1b239793b961f5ab), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 4)" )
+GAME_CUSTOM( 199?, m4supst__am, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02d.p1", 0x0000, 0x010000, CRC(14dcfe63) SHA1(3ac77c9aa9b3b77fb1df98d2b427564be41dca78), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 5)" )
+GAME_CUSTOM( 199?, m4supst__an, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02dk.p1", 0x0000, 0x010000, CRC(81a39421) SHA1(6fa43e8cb83e7fb940cc224eed5ee3f254c18c4d), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 6)" )
+GAME_CUSTOM( 199?, m4supst__ao, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02dr.p1", 0x0000, 0x010000, CRC(c7755823) SHA1(05626ed49a2f800555f3f404273fa910b68de75c), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 7)" )
+GAME_CUSTOM( 199?, m4supst__ap, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02dy.p1", 0x0000, 0x010000, CRC(5a1e70cd) SHA1(88bb29fd52d2331b72bb04652f9578f2c2f5a9ac), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 8)" )
+GAME_CUSTOM( 199?, m4supst__aq, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02k.p1", 0x0000, 0x010000, CRC(b78882ec) SHA1(79c6a6d2cfe113743d3a93eb825fccab2b025933), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 9)" )
+GAME_CUSTOM( 199?, m4supst__ar, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02r.p1", 0x0000, 0x010000, CRC(ff54884e) SHA1(2783f0e562e946597288ddbec4dcd1101e188d1d), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 10)" )
+GAME_CUSTOM( 199?, m4supst__as, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02s.p1", 0x0000, 0x010000, CRC(c5856c3c) SHA1(5a0e5a7188913e1c36eac894bbeeae47a4f3589c), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 11)" )
+GAME_CUSTOM( 199?, m4supst__at, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "eeh02y.p1", 0x0000, 0x010000, CRC(623fa0a0) SHA1(5a49cea5e94afccbf965cbda7a8d9a74f9734a6e), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 12)" )
// different CHR - hopper
// CS4 0.2 in header, STC 0.2 in boot
-GAME_CUSTOM( 199?, m4supst__a6, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02ad.p1", 0x0000, 0x010000, CRC(d9a2b4d1) SHA1(9a6862a44817b3ec465f126fd2a5d2c9825d846e), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 1)" )
-GAME_CUSTOM( 199?, m4supst__a7, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02b.p1", 0x0000, 0x010000, CRC(bd2e8e6c) SHA1(71670dccedc2f47888c1205de59a81677ffeabaa), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 2)" )
-GAME_CUSTOM( 199?, m4supst__a8, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02bd.p1", 0x0000, 0x010000, CRC(efbed99b) SHA1(62d80248bb666bfb49ed7546936da744e43fa870), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 3)" )
-GAME_CUSTOM( 199?, m4supst__a9, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02c.p1", 0x0000, 0x010000, CRC(9d342386) SHA1(b50f64d66d89dbd3dee1ff2cb430a2caa050e7c8), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 4)" )
-GAME_CUSTOM( 199?, m4supst__ba, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02d.p1", 0x0000, 0x010000, CRC(c43f6e65) SHA1(0278cf389f8289d7b819125ae0a612c81ea75fab), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 5)" )
-GAME_CUSTOM( 199?, m4supst__bb, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02dk.p1", 0x0000, 0x010000, CRC(36576570) SHA1(214a57344d8e161b3dbd07457291ed9bce011842), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 6)" )
-GAME_CUSTOM( 199?, m4supst__bc, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02dr.p1", 0x0000, 0x010000, CRC(450c553f) SHA1(46050285eeb10dc368ad501c61d41351c4e2fcde), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 7)" )
-GAME_CUSTOM( 199?, m4supst__bd, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02dy.p1", 0x0000, 0x010000, CRC(d8677dd1) SHA1(18abc0a1d28458c3b26a0d1dbf6ca8aba3f3e240), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 8)" )
-GAME_CUSTOM( 199?, m4supst__be, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02k.p1", 0x0000, 0x010000, CRC(c6e8d110) SHA1(9e05961b9bba502f52a03de27e608afc52f6c025), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 9)" )
-GAME_CUSTOM( 199?, m4supst__bf, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02r.p1", 0x0000, 0x010000, CRC(918d769f) SHA1(2a4438828d9e7efd3a94eaebe56585e7ae23d9d1), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 10)" )
-GAME_CUSTOM( 199?, m4supst__bg, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02s.p1", 0x0000, 0x010000, CRC(9c50fff7) SHA1(3468340d2d04cbdecd669817f8a9c4028e301eeb), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 11)" )
-GAME_CUSTOM( 199?, m4supst__bh, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc02y.p1", 0x0000, 0x010000, CRC(0ce65e71) SHA1(02ae1fd5a41ab5a96ddcfe1cf3e8567561291961), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 12)" )
-
-GAME_CUSTOM( 199?, m4stc, m4supst, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>, mpu4, init_m4default, "stc01s", 0x0000, 0x010000, CRC(8371bb8f) SHA1(bd60825b3f5011c218b34f00886b6b54afe61b9f), "Barcrest","Super Streak (Barcrest) (MPU4) (STC 0.1)" )
+GAME_CUSTOM( 199?, m4supst__a6, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02ad.p1", 0x0000, 0x010000, CRC(d9a2b4d1) SHA1(9a6862a44817b3ec465f126fd2a5d2c9825d846e), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 1)" )
+GAME_CUSTOM( 199?, m4supst__a7, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02b.p1", 0x0000, 0x010000, CRC(bd2e8e6c) SHA1(71670dccedc2f47888c1205de59a81677ffeabaa), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 2)" )
+GAME_CUSTOM( 199?, m4supst__a8, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02bd.p1", 0x0000, 0x010000, CRC(efbed99b) SHA1(62d80248bb666bfb49ed7546936da744e43fa870), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 3)" )
+GAME_CUSTOM( 199?, m4supst__a9, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02c.p1", 0x0000, 0x010000, CRC(9d342386) SHA1(b50f64d66d89dbd3dee1ff2cb430a2caa050e7c8), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 4)" )
+GAME_CUSTOM( 199?, m4supst__ba, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02d.p1", 0x0000, 0x010000, CRC(c43f6e65) SHA1(0278cf389f8289d7b819125ae0a612c81ea75fab), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 5)" )
+GAME_CUSTOM( 199?, m4supst__bb, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02dk.p1", 0x0000, 0x010000, CRC(36576570) SHA1(214a57344d8e161b3dbd07457291ed9bce011842), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 6)" )
+GAME_CUSTOM( 199?, m4supst__bc, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02dr.p1", 0x0000, 0x010000, CRC(450c553f) SHA1(46050285eeb10dc368ad501c61d41351c4e2fcde), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 7)" )
+GAME_CUSTOM( 199?, m4supst__bd, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02dy.p1", 0x0000, 0x010000, CRC(d8677dd1) SHA1(18abc0a1d28458c3b26a0d1dbf6ca8aba3f3e240), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 8)" )
+GAME_CUSTOM( 199?, m4supst__be, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02k.p1", 0x0000, 0x010000, CRC(c6e8d110) SHA1(9e05961b9bba502f52a03de27e608afc52f6c025), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 9)" )
+GAME_CUSTOM( 199?, m4supst__bf, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02r.p1", 0x0000, 0x010000, CRC(918d769f) SHA1(2a4438828d9e7efd3a94eaebe56585e7ae23d9d1), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 10)" )
+GAME_CUSTOM( 199?, m4supst__bg, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02s.p1", 0x0000, 0x010000, CRC(9c50fff7) SHA1(3468340d2d04cbdecd669817f8a9c4028e301eeb), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 11)" )
+GAME_CUSTOM( 199?, m4supst__bh, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc02y.p1", 0x0000, 0x010000, CRC(0ce65e71) SHA1(02ae1fd5a41ab5a96ddcfe1cf3e8567561291961), "Barcrest","Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 12)" )
+
+GAME_CUSTOM( 199?, m4stc, m4supst, cheatchr_pal<mpu4_characteriser_pal::m4dtri98_characteriser_prot>(R4, RT1), mpu4, init_m4, "stc01s", 0x0000, 0x010000, CRC(8371bb8f) SHA1(bd60825b3f5011c218b34f00886b6b54afe61b9f), "Barcrest","Super Streak (Barcrest) (MPU4) (STC 0.1)" )
// different protection
// was in SC2 Super Star set, but seems to fit here, ident hacked to "BILL BIXBY" and "V1 0.1"
-GAME_CUSTOM( 199?, m4supst__b6, m4supst, mod4yam_bootleg_fixedret<0x46>, mpu4, init_m4default, "supst20.15", 0x0000, 0x010000, CRC(c3446ec4) SHA1(3c1ad27385547a33993a839b53873d8b92214ade), "hack","Super Streak (Barcrest) (MPU4) (hack)" )
+GAME_CUSTOM( 199?, m4supst__b6, m4supst, bootleg_fixedret<0x46>(R4, RT1), mpu4, init_m4, "supst20.15", 0x0000, 0x010000, CRC(c3446ec4) SHA1(3c1ad27385547a33993a839b53873d8b92214ade), "hack","Super Streak (Barcrest) (MPU4) (hack)" )
// different protection style
-GAME_CUSTOM( 199?, m4supst__b5, m4supst, mod4yam_bootleg_fixedret<0x52>, mpu4, init_m4default, "supst2515", 0x0000, 0x010000, CRC(c073a249) SHA1(4ae37eb61dd5e50687f433fb89f65b97926b7358), "hack","Super Streak (Barcrest) (MPU4) (STT 0.3, hack)" )
+ GAME_CUSTOM( 199?, m4supst__b5, m4supst, bootleg_fixedret<0x52>(R4, RT1), mpu4, init_m4, "supst2515", 0x0000, 0x010000, CRC(c073a249) SHA1(4ae37eb61dd5e50687f433fb89f65b97926b7358), "hack","Super Streak (Barcrest) (MPU4) (STT 0.3, hack)" )
// different protection
// "(C)1998 B.W.B." and "SS2 1.0"
-GAME_CUSTOM( 199?, m4supst__b7, m4supst, mod4yam_bootleg_fixedret<0x74>, mpu4, init_m4default, "rhr2pprg.bin", 0x0000, 0x010000, CRC(f97047b2) SHA1(d3ed8c93e405f9e7448b3924ff9aa84223b76046), "hack","Super Streak (Barcrest) (MPU4) (SS2 1.0, hack?)" )
+GAME_CUSTOM( 199?, m4supst__b7, m4supst, bootleg_fixedret<0x74>(R4, RT1), mpu4, init_m4, "rhr2pprg.bin", 0x0000, 0x010000, CRC(f97047b2) SHA1(d3ed8c93e405f9e7448b3924ff9aa84223b76046), "hack","Super Streak (Barcrest) (MPU4) (SS2 1.0, hack?)" )
ROM_START( m4sstrek )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "rhr2pprgpatched.bin", 0x0000, 0x010000, CRC(a0b3439d) SHA1(0976537a5170bf4c4f595f7fa04243a68f14b2ae) )
ROM_END
// no sequence
-GAME(199?, m4sstrek, m4supst, mod4yam, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, "bootleg","Super Streak (bootleg) (MPU4) (SS2 1.0)",GAME_FLAGS) // unprotected, no characteriser PAL required
+GAME(199?, m4sstrek, m4supst, base(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "bootleg","Super Streak (bootleg) (MPU4) (SS2 1.0)",GAME_FLAGS) // unprotected, no characteriser PAL required
/*****************************************************************************************************************************************************************************
@@ -1076,7 +1184,7 @@ GAME(199?, m4sstrek, m4supst, mod4yam, mpu4, mpu4mod4yam_machines_sta
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
GAME_CUSTOM( 199?, m4fastfw, 0, "ffo05__1.0", 0x0000, 0x010000, CRC(8b683969) SHA1(7469b551e4d6f65550d54ee39b2bac07cf3dbd4b), "Bwb / Barcrest","Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 1)" )
GAME_CUSTOM( 199?, m4fastfw__a, m4fastfw, "ffo10__1.0", 0x0000, 0x010000, CRC(294288fd) SHA1(87d25f6333b6862fcc57a550b5cc7c0bc64e72cd), "Bwb / Barcrest","Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 2)" )
@@ -1091,7 +1199,7 @@ GAME_CUSTOM( 199?, m4fastfw__e, m4fastfw, "ffo20dy1.0", 0x0000, 0x010000,
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_bootleg_fixedret<0x80>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, bootleg_fixedret<0x80>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// different protection style, has (C)1993 BYTEFREE, reads from 811 on startup, and 821 later, but only check on 806 matters?
@@ -1117,48 +1225,48 @@ GAME_CUSTOM( 199?, m4fastfw__f, m4fastfw, "fastf206", 0x0000, 0x010000,
GAME(year, setname, parent, machine, inputs, mpu4mod4yam_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "VLV 1.1"
-GAME_CUSTOM( 199?, m4vivalv, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvs.p1", 0x0000, 0x010000, CRC(b7fb3e19) SHA1(c6cc4175f8c100fc37e6e7014b0744054b4e547a), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 7)" )
-GAME_CUSTOM( 199?, m4vivalv__a, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvad.p1", 0x0000, 0x010000, CRC(88262812) SHA1(f0a31d510c1b06af122df493585c04a49177f06d), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 1)" )
-GAME_CUSTOM( 199?, m4vivalv__b, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvb.p1", 0x0000, 0x010000, CRC(c4caec15) SHA1(d88c6e081a6bbdd80f773713b038293cabdeee8c), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 2)" )
-GAME_CUSTOM( 199?, m4vivalv__c, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvc.p1", 0x0000, 0x010000, CRC(4d651ba4) SHA1(7746656f0a9f8af8e265568f7479edef9a2247d9), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 3)" )
-GAME_CUSTOM( 199?, m4vivalv__d, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvd.p1", 0x0000, 0x010000, CRC(cce926c7) SHA1(8e3a0cef0cbee66d264da5d6dfc7ec2fbdcd9584), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 4)" )
-GAME_CUSTOM( 199?, m4vivalv__e, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvdy.p1", 0x0000, 0x010000, CRC(6e17cbc8) SHA1(5c69eda0ff6a01d9d0d434ff7ce1ac1e67b16362), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 5)" )
-GAME_CUSTOM( 199?, m4vivalv__f, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvk.p1", 0x0000, 0x010000, CRC(b5f2157e) SHA1(574f3e2890ac5479790ea92760c6500d37e6637d), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 6)" )
-GAME_CUSTOM( 199?, m4vivalv__g, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "vlvy.p1", 0x0000, 0x010000, CRC(3211caf3) SHA1(3634ef11099c2f4938529bb262cc2556ad96a675), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 8)" )
+GAME_CUSTOM( 199?, m4vivalv, 0, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvs.p1", 0x0000, 0x010000, CRC(b7fb3e19) SHA1(c6cc4175f8c100fc37e6e7014b0744054b4e547a), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 7)" )
+GAME_CUSTOM( 199?, m4vivalv__a, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvad.p1", 0x0000, 0x010000, CRC(88262812) SHA1(f0a31d510c1b06af122df493585c04a49177f06d), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 1)" )
+GAME_CUSTOM( 199?, m4vivalv__b, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvb.p1", 0x0000, 0x010000, CRC(c4caec15) SHA1(d88c6e081a6bbdd80f773713b038293cabdeee8c), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 2)" )
+GAME_CUSTOM( 199?, m4vivalv__c, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvc.p1", 0x0000, 0x010000, CRC(4d651ba4) SHA1(7746656f0a9f8af8e265568f7479edef9a2247d9), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 3)" )
+GAME_CUSTOM( 199?, m4vivalv__d, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvd.p1", 0x0000, 0x010000, CRC(cce926c7) SHA1(8e3a0cef0cbee66d264da5d6dfc7ec2fbdcd9584), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 4)" )
+GAME_CUSTOM( 199?, m4vivalv__e, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvdy.p1", 0x0000, 0x010000, CRC(6e17cbc8) SHA1(5c69eda0ff6a01d9d0d434ff7ce1ac1e67b16362), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 5)" )
+GAME_CUSTOM( 199?, m4vivalv__f, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvk.p1", 0x0000, 0x010000, CRC(b5f2157e) SHA1(574f3e2890ac5479790ea92760c6500d37e6637d), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 6)" )
+GAME_CUSTOM( 199?, m4vivalv__g, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vlvy.p1", 0x0000, 0x010000, CRC(3211caf3) SHA1(3634ef11099c2f4938529bb262cc2556ad96a675), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 8)" )
// "(C)1991 BARCREST" and "VLV 1.0"
-GAME_CUSTOM( 199?, m4vivalv__h, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>, mpu4, init_m4default_sextender, "viva206", 0x0000, 0x010000, CRC(76ab9a5d) SHA1(455699cbc05f744eafe58881a8fb120b24cfe5c8), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0)" )
+GAME_CUSTOM( 199?, m4vivalv__h, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::vivlv_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "viva206", 0x0000, 0x010000, CRC(76ab9a5d) SHA1(455699cbc05f744eafe58881a8fb120b24cfe5c8), "Barcrest","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0)" )
// (C)1993 B.W.B. and "VL_ 2.0" - boots with cheatchr
-GAME_CUSTOM( 199?, m4vivalv__i, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "v.las vegas 6 10p 10m.bin", 0x0000, 0x010000, CRC(f09d5a2c) SHA1(6f9df58767e88a1ca7fc7dd17c618d30ab97067d), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 1)" )
-GAME_CUSTOM( 199?, m4vivalv__j, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_05___.3_3", 0x0000, 0x010000, CRC(bb8361f6) SHA1(d5f651a66be1cab3662798751a290a65c29bba64), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 2)" )
-GAME_CUSTOM( 199?, m4vivalv__k, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_05_b_.3_3", 0x0000, 0x010000, CRC(12079321) SHA1(5b5dd55080c04393a45d3ef9c63b6fef5de9b7cd), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 3)" )
-GAME_CUSTOM( 199?, m4vivalv__l, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_05_d_.3_3", 0x0000, 0x010000, CRC(b758df52) SHA1(f4d47a93fa1b1deb84654bb2272767093f3463c2), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 4)" )
-GAME_CUSTOM( 199?, m4vivalv__m, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_05_k_.3_3", 0x0000, 0x010000, CRC(9875c59c) SHA1(c31a7fc5df8af9d931353bc095a59befe808434b), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 5)" )
-GAME_CUSTOM( 199?, m4vivalv__n, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_05a__.3_3", 0x0000, 0x010000, CRC(0f416e47) SHA1(54338fbef5f227c440c04448b51e8f0ec04a4cc7), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 6)" )
-GAME_CUSTOM( 199?, m4vivalv__o, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_10___.3_3", 0x0000, 0x010000, CRC(dc8db002) SHA1(305547b4f0b1e1bde9354e5ed9f18f99c6829cab), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 7)" )
-GAME_CUSTOM( 199?, m4vivalv__p, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_10_b_.3_3", 0x0000, 0x010000, CRC(e1c4b292) SHA1(4516c7d918935862824e206626a5a24f936ec514), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 8)" )
-GAME_CUSTOM( 199?, m4vivalv__q, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_10_d_.3_3", 0x0000, 0x010000, CRC(e9dda1ee) SHA1(6363b5b26be22cb1f5aac71e98c5e5a5064839f4), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 9)" )
-GAME_CUSTOM( 199?, m4vivalv__r, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_10_k_.3_3", 0x0000, 0x010000, CRC(70fc4c56) SHA1(02cbaadd3575ef0d9dc192aabbe39a735893a662), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 10)" )
-GAME_CUSTOM( 199?, m4vivalv__s, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vv_10a__.3_3", 0x0000, 0x010000, CRC(c908d65a) SHA1(5af180e697c22c27380e275d76708103e298cf41), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 11)" )
-GAME_CUSTOM( 199?, m4vivalv__t, m4vivalv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>, mpu4, init_m4default_sextender, "vvi05___.3_3", 0x0000, 0x010000, CRC(a5829d5c) SHA1(4cd1a2185579898db7be75f8c3f565043f0691b6), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 12)" )
+GAME_CUSTOM( 199?, m4vivalv__i, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "v.las vegas 6 10p 10m.bin", 0x0000, 0x010000, CRC(f09d5a2c) SHA1(6f9df58767e88a1ca7fc7dd17c618d30ab97067d), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 1)" )
+GAME_CUSTOM( 199?, m4vivalv__j, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_05___.3_3", 0x0000, 0x010000, CRC(bb8361f6) SHA1(d5f651a66be1cab3662798751a290a65c29bba64), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 2)" )
+GAME_CUSTOM( 199?, m4vivalv__k, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_05_b_.3_3", 0x0000, 0x010000, CRC(12079321) SHA1(5b5dd55080c04393a45d3ef9c63b6fef5de9b7cd), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 3)" )
+GAME_CUSTOM( 199?, m4vivalv__l, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_05_d_.3_3", 0x0000, 0x010000, CRC(b758df52) SHA1(f4d47a93fa1b1deb84654bb2272767093f3463c2), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 4)" )
+GAME_CUSTOM( 199?, m4vivalv__m, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_05_k_.3_3", 0x0000, 0x010000, CRC(9875c59c) SHA1(c31a7fc5df8af9d931353bc095a59befe808434b), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 5)" )
+GAME_CUSTOM( 199?, m4vivalv__n, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_05a__.3_3", 0x0000, 0x010000, CRC(0f416e47) SHA1(54338fbef5f227c440c04448b51e8f0ec04a4cc7), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 6)" )
+GAME_CUSTOM( 199?, m4vivalv__o, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_10___.3_3", 0x0000, 0x010000, CRC(dc8db002) SHA1(305547b4f0b1e1bde9354e5ed9f18f99c6829cab), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 7)" )
+GAME_CUSTOM( 199?, m4vivalv__p, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_10_b_.3_3", 0x0000, 0x010000, CRC(e1c4b292) SHA1(4516c7d918935862824e206626a5a24f936ec514), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 8)" )
+GAME_CUSTOM( 199?, m4vivalv__q, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_10_d_.3_3", 0x0000, 0x010000, CRC(e9dda1ee) SHA1(6363b5b26be22cb1f5aac71e98c5e5a5064839f4), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 9)" )
+GAME_CUSTOM( 199?, m4vivalv__r, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_10_k_.3_3", 0x0000, 0x010000, CRC(70fc4c56) SHA1(02cbaadd3575ef0d9dc192aabbe39a735893a662), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 10)" )
+GAME_CUSTOM( 199?, m4vivalv__s, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vv_10a__.3_3", 0x0000, 0x010000, CRC(c908d65a) SHA1(5af180e697c22c27380e275d76708103e298cf41), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 11)" )
+GAME_CUSTOM( 199?, m4vivalv__t, m4vivalv, cheatchr_pal<mpu4_characteriser_pal::tentendia_characteriser_prot>(R4, RT1, LPS), mpu4, init_m4, "vvi05___.3_3", 0x0000, 0x010000, CRC(a5829d5c) SHA1(4cd1a2185579898db7be75f8c3f565043f0691b6), "BWB","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 12)" )
// "(C)1991 BARCREST" and "VLV 1.0" but different protection, hacks / bootlegs
// this one is unusual, the 2nd and 3rd checks expect different values, or you get scrambled lamps, usually they want the same
-GAME_CUSTOM( 199?, m4vivalv__u, m4vivalv, mod4yam_bootleg_fixedret<0x5a>, mpu4, init_m4default_806prot, "viva20_1.1", 0x0000, 0x010000, CRC(80ea2429) SHA1(e5d258967340fe85dd5baf6ba16f82ce83307b68), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 1)" )
+GAME_CUSTOM( 199?, m4vivalv__u, m4vivalv, bootleg_fixedret<0x5a>(R4, RT1, LPS), mpu4, init_m4_806prot, "viva20_1.1", 0x0000, 0x010000, CRC(80ea2429) SHA1(e5d258967340fe85dd5baf6ba16f82ce83307b68), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 1)" )
// these expect the same for each test
-GAME_CUSTOM( 199?, m4vivalv__w, m4vivalv, mod4yam_bootleg_fixedret<0x6a>, mpu4, init_m4default_sextender, "viva_20_.4", 0x0000, 0x010000, CRC(e1efc846) SHA1(a4bf7f5c4febe5a71a09e23876387328e1bba87b), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 3)" )
-GAME_CUSTOM( 199?, m4vivalv__x, m4vivalv, mod4yam_bootleg_fixedret<0x6a>, mpu4, init_m4default_sextender, "viva_20_.8", 0x0000, 0x010000, CRC(f538a1fc) SHA1(d0dbd22a1cb4b7ec5bfa304ba544806e01150662), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 4)" )
-GAME_CUSTOM( 199?, m4vivalv__y, m4vivalv, mod4yam_bootleg_fixedret<0x6a>, mpu4, init_m4default_sextender, "vlv208ac", 0x0000, 0x010000, CRC(416535ee) SHA1(f2b0177fecd5076d9d89c819fe9402fc944c8d77), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 5)" )
-GAME_CUSTOM( 199?, m4vivalv__v, m4vivalv, mod4yam_bootleg_fixedret<0x5a>, mpu4, init_m4default_sextender, "viva20_11", 0x0000, 0x010000, CRC(51b93018) SHA1(fc13179e3e1939839c3b90d7600a7eb301ea03da), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 2)" )
+GAME_CUSTOM( 199?, m4vivalv__w, m4vivalv, bootleg_fixedret<0x6a>(R4, RT1, LPS), mpu4, init_m4, "viva_20_.4", 0x0000, 0x010000, CRC(e1efc846) SHA1(a4bf7f5c4febe5a71a09e23876387328e1bba87b), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 3)" )
+GAME_CUSTOM( 199?, m4vivalv__x, m4vivalv, bootleg_fixedret<0x6a>(R4, RT1, LPS), mpu4, init_m4, "viva_20_.8", 0x0000, 0x010000, CRC(f538a1fc) SHA1(d0dbd22a1cb4b7ec5bfa304ba544806e01150662), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 4)" )
+GAME_CUSTOM( 199?, m4vivalv__y, m4vivalv, bootleg_fixedret<0x6a>(R4, RT1, LPS), mpu4, init_m4, "vlv208ac", 0x0000, 0x010000, CRC(416535ee) SHA1(f2b0177fecd5076d9d89c819fe9402fc944c8d77), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 5)" )
+GAME_CUSTOM( 199?, m4vivalv__v, m4vivalv, bootleg_fixedret<0x5a>(R4, RT1, LPS), mpu4, init_m4, "viva20_11", 0x0000, 0x010000, CRC(51b93018) SHA1(fc13179e3e1939839c3b90d7600a7eb301ea03da), "hack?","Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 2)" )
// no copyright string, "VL_ 2.0", hack
-GAME_CUSTOM( 199?, m4vivalv__z, m4vivalv, mod4yam_bootleg_fixedret<0x38>, mpu4, init_m4default_sextender, "5p5vivalasvegas6.bin", 0x0000, 0x010000, CRC(4d365b57) SHA1(69ff75ccc91f1f7b867a0914d350d1649834a48e), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 1)" )
-GAME_CUSTOM( 199?, m4vivalv__0, m4vivalv, mod4yam_bootleg_fixedret<0x5c>, mpu4, init_m4default_sextender, "viva05_11", 0x0000, 0x010000, CRC(1e6ea483) SHA1(e6a53eb1bf3b8e661287c0d57fc6ab5ed41755a3), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 2)" )
-GAME_CUSTOM( 199?, m4vivalv__1, m4vivalv, mod4yam_bootleg_fixedret<0x12>, mpu4, init_m4default_sextender, "viva10_11", 0x0000, 0x010000, CRC(246a39b7) SHA1(c0f5c21374e43b42df5df0ada0967a34ecefbdb4), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 3)" )
-GAME_CUSTOM( 199?, m4vivalv__2, m4vivalv, mod4yam_bootleg_fixedret<0x28>, mpu4, init_m4default_sextender, "viva58c", 0x0000, 0x010000, CRC(719d0802) SHA1(ba6bd5fbf49f0ada383cb2e8faa037b78f6af587), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 4)" )
-GAME_CUSTOM( 199?, m4vivalv__3, m4vivalv, mod4yam_bootleg_fixedret<0x28>, mpu4, init_m4default_sextender, "viva_05_.4", 0x0000, 0x010000, CRC(b094914f) SHA1(8217b4bb7a8d55fb8e86018ffc520a63f41a79b8), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 5)" )
-GAME_CUSTOM( 199?, m4vivalv__4, m4vivalv, mod4yam_bootleg_fixedret<0x28>, mpu4, init_m4default_sextender, "viva_05_.8", 0x0000, 0x010000, CRC(c5c09c10) SHA1(47890d0ba1c2ca53231ac148a02f046452dce1b4), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 6)" )
-GAME_CUSTOM( 199?, m4vivalv__5, m4vivalv, mod4yam_bootleg_fixedret<0x66>, mpu4, init_m4default_sextender, "viva_10_.4", 0x0000, 0x010000, CRC(b1d5e820) SHA1(68012216d7e82168c7468d1e54c527c15d268917), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 7)" )
-GAME_CUSTOM( 199?, m4vivalv__6, m4vivalv, mod4yam_bootleg_fixedret<0x66>, mpu4, init_m4default_sextender, "viva_10_.8", 0x0000, 0x010000, CRC(f392c81c) SHA1(cb3320b688b315dbc226f45b78490fed439ee9a2), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack ? , set 8)" )
+GAME_CUSTOM( 199?, m4vivalv__z, m4vivalv, bootleg_fixedret<0x38>(R4, RT1, LPS), mpu4, init_m4, "5p5vivalasvegas6.bin", 0x0000, 0x010000, CRC(4d365b57) SHA1(69ff75ccc91f1f7b867a0914d350d1649834a48e), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 1)" )
+GAME_CUSTOM( 199?, m4vivalv__0, m4vivalv, bootleg_fixedret<0x5c>(R4, RT1, LPS), mpu4, init_m4, "viva05_11", 0x0000, 0x010000, CRC(1e6ea483) SHA1(e6a53eb1bf3b8e661287c0d57fc6ab5ed41755a3), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 2)" )
+GAME_CUSTOM( 199?, m4vivalv__1, m4vivalv, bootleg_fixedret<0x12>(R4, RT1, LPS), mpu4, init_m4, "viva10_11", 0x0000, 0x010000, CRC(246a39b7) SHA1(c0f5c21374e43b42df5df0ada0967a34ecefbdb4), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 3)" )
+GAME_CUSTOM( 199?, m4vivalv__2, m4vivalv, bootleg_fixedret<0x28>(R4, RT1, LPS), mpu4, init_m4, "viva58c", 0x0000, 0x010000, CRC(719d0802) SHA1(ba6bd5fbf49f0ada383cb2e8faa037b78f6af587), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 4)" )
+GAME_CUSTOM( 199?, m4vivalv__3, m4vivalv, bootleg_fixedret<0x28>(R4, RT1, LPS), mpu4, init_m4, "viva_05_.4", 0x0000, 0x010000, CRC(b094914f) SHA1(8217b4bb7a8d55fb8e86018ffc520a63f41a79b8), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 5)" )
+GAME_CUSTOM( 199?, m4vivalv__4, m4vivalv, bootleg_fixedret<0x28>(R4, RT1, LPS), mpu4, init_m4, "viva_05_.8", 0x0000, 0x010000, CRC(c5c09c10) SHA1(47890d0ba1c2ca53231ac148a02f046452dce1b4), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 6)" )
+GAME_CUSTOM( 199?, m4vivalv__5, m4vivalv, bootleg_fixedret<0x66>(R4, RT1, LPS), mpu4, init_m4, "viva_10_.4", 0x0000, 0x010000, CRC(b1d5e820) SHA1(68012216d7e82168c7468d1e54c527c15d268917), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 7)" )
+GAME_CUSTOM( 199?, m4vivalv__6, m4vivalv, bootleg_fixedret<0x66>(R4, RT1, LPS), mpu4, init_m4, "viva_10_.8", 0x0000, 0x010000, CRC(f392c81c) SHA1(cb3320b688b315dbc226f45b78490fed439ee9a2), "hack?","Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack ? , set 8)" )
@@ -1181,56 +1289,56 @@ GAME_CUSTOM( 199?, m4vivalv__6, m4vivalv, mod4yam_bootleg_fixedret<0x66>, mpu
GAME(year, setname, parent, machine, inputs, mpu4mod4yam_machines_state, init, ROT0, company, title, GAME_FLAGS )
// "(C)1993 B.W.B." and "HVP 3.0"
-GAME_CUSTOM( 199?, m4shv__h, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hvyp10p", 0x0000, 0x010000, CRC(b4af635a) SHA1(420cdf3a6899e432d74e3b10a57414cbedc0913e), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 1)" )
-GAME_CUSTOM( 199?, m4shv__i, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_05___.3h3", 0x0000, 0x010000, CRC(13bfa891) SHA1(ffddd14a019d52029bf8d4f680d8d05413a9f0b7), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 2)" )
-GAME_CUSTOM( 199?, m4shv__j, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_05_d_.3h3", 0x0000, 0x010000, CRC(50c66ce8) SHA1(ef12525fc3ac82caf80326edaac81bb9fbc3245c), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 3)" )
-GAME_CUSTOM( 199?, m4shv__k, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_10___.3h3", 0x0000, 0x010000, CRC(627caac7) SHA1(4851ce2441850743ea68ecbf89bde3f4cd6c2b4c), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 4)" )
-GAME_CUSTOM( 199?, m4shv__l, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_10_d_.3h3", 0x0000, 0x010000, CRC(15cfa26e) SHA1(6bc3feaba65d1797b9945f23a89e983f56b13f79), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 5)" )
-GAME_CUSTOM( 199?, m4shv__m, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_10_d_.3n3", 0x0000, 0x010000, CRC(b81f1d0a) SHA1(5fd293be2b75393069c9f5e099b4700ff930f081), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 6)" )
-GAME_CUSTOM( 199?, m4shv__n, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hvi05___.3h3", 0x0000, 0x010000, CRC(6959332e) SHA1(edaa5f86ad4389b0a3bc2e6679fe8f62520be3ae), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 7)" )
-GAME_CUSTOM( 199?, m4shv__o, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hvi10___.3h3", 0x0000, 0x010000, CRC(6c1b4b89) SHA1(e8eb4e689d43c5b9e8354aa7375ca3ba12ed1160), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 8)" )
-GAME_CUSTOM( 199?, m4shv__p, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hvi10___.3n3", 0x0000, 0x010000, CRC(9d95cf8c) SHA1(26daf3975e1e3a605bc4392700c5470b52450d6e), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 9)" )
+GAME_CUSTOM( 199?, m4shv__h, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvyp10p", 0x0000, 0x010000, CRC(b4af635a) SHA1(420cdf3a6899e432d74e3b10a57414cbedc0913e), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 1)" )
+GAME_CUSTOM( 199?, m4shv__i, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_05___.3h3", 0x0000, 0x010000, CRC(13bfa891) SHA1(ffddd14a019d52029bf8d4f680d8d05413a9f0b7), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 2)" )
+GAME_CUSTOM( 199?, m4shv__j, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_05_d_.3h3", 0x0000, 0x010000, CRC(50c66ce8) SHA1(ef12525fc3ac82caf80326edaac81bb9fbc3245c), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 3)" )
+GAME_CUSTOM( 199?, m4shv__k, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_10___.3h3", 0x0000, 0x010000, CRC(627caac7) SHA1(4851ce2441850743ea68ecbf89bde3f4cd6c2b4c), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 4)" )
+GAME_CUSTOM( 199?, m4shv__l, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_10_d_.3h3", 0x0000, 0x010000, CRC(15cfa26e) SHA1(6bc3feaba65d1797b9945f23a89e983f56b13f79), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 5)" )
+GAME_CUSTOM( 199?, m4shv__m, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_10_d_.3n3", 0x0000, 0x010000, CRC(b81f1d0a) SHA1(5fd293be2b75393069c9f5e099b4700ff930f081), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 6)" )
+GAME_CUSTOM( 199?, m4shv__n, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvi05___.3h3", 0x0000, 0x010000, CRC(6959332e) SHA1(edaa5f86ad4389b0a3bc2e6679fe8f62520be3ae), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 7)" )
+GAME_CUSTOM( 199?, m4shv__o, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvi10___.3h3", 0x0000, 0x010000, CRC(6c1b4b89) SHA1(e8eb4e689d43c5b9e8354aa7375ca3ba12ed1160), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 8)" )
+GAME_CUSTOM( 199?, m4shv__p, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvi10___.3n3", 0x0000, 0x010000, CRC(9d95cf8c) SHA1(26daf3975e1e3a605bc4392700c5470b52450d6e), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 9)" )
// "(C)1994 B.W.B." and "HVP 3.0"
-GAME_CUSTOM( 199?, m4shv__q, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "h.viper10p610m.bin", 0x0000, 0x010000, CRC(104b0c48) SHA1(ab4cdb596a0cfb877ed1b6bf801e4a759b53971f), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C)" )
-GAME_CUSTOM( 199?, m4shv__r, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hvyp56c", 0x0000, 0x010000, CRC(297d3cf8) SHA1(78f4de2ed69fb38b944a54d4d5927ff791e7876c), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C, bad?)" ) // bad rom? checksum alarm
-GAME_CUSTOM( 199?, m4shv__s, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_05___.3o3", 0x0000, 0x010000, CRC(9ae86366) SHA1(614ae0ab184645c9f568796783f29a177eda3208), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 1)" )
-GAME_CUSTOM( 199?, m4shv__t, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_05_d_.3o3", 0x0000, 0x010000, CRC(87dfca0e) SHA1(3ab4105680acc46d3633a722f40ff1af0a520a7f), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 2)" )
-GAME_CUSTOM( 199?, m4shv__u, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_10___.3o3", 0x0000, 0x010000, CRC(02e4d86a) SHA1(47aa83e8bcd85e8ba7fb972cdd1ead7fe21e0418), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 3)" )
-GAME_CUSTOM( 199?, m4shv__v, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_10_d_.3o3", 0x0000, 0x010000, CRC(85f176b9) SHA1(30380d58bf2834829764cbdbdc7d950632e61e6d), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 4)" )
-GAME_CUSTOM( 199?, m4shv__w, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hvi05___.3o3", 0x0000, 0x010000, CRC(cdba80a5) SHA1(6c9fac7e5ee324b18922cc7a053495f1977bcb6d), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 5)" )
+GAME_CUSTOM( 199?, m4shv__q, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "h.viper10p610m.bin", 0x0000, 0x010000, CRC(104b0c48) SHA1(ab4cdb596a0cfb877ed1b6bf801e4a759b53971f), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C)" )
+GAME_CUSTOM( 199?, m4shv__r, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvyp56c", 0x0000, 0x010000, CRC(297d3cf8) SHA1(78f4de2ed69fb38b944a54d4d5927ff791e7876c), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C, bad?)" ) // bad rom? checksum alarm
+GAME_CUSTOM( 199?, m4shv__s, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_05___.3o3", 0x0000, 0x010000, CRC(9ae86366) SHA1(614ae0ab184645c9f568796783f29a177eda3208), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 1)" )
+GAME_CUSTOM( 199?, m4shv__t, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_05_d_.3o3", 0x0000, 0x010000, CRC(87dfca0e) SHA1(3ab4105680acc46d3633a722f40ff1af0a520a7f), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 2)" )
+GAME_CUSTOM( 199?, m4shv__u, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_10___.3o3", 0x0000, 0x010000, CRC(02e4d86a) SHA1(47aa83e8bcd85e8ba7fb972cdd1ead7fe21e0418), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 3)" )
+GAME_CUSTOM( 199?, m4shv__v, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_10_d_.3o3", 0x0000, 0x010000, CRC(85f176b9) SHA1(30380d58bf2834829764cbdbdc7d950632e61e6d), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 4)" )
+GAME_CUSTOM( 199?, m4shv__w, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvi05___.3o3", 0x0000, 0x010000, CRC(cdba80a5) SHA1(6c9fac7e5ee324b18922cc7a053495f1977bcb6d), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 5)" )
// "(C)1993 B.W.B." and "HVP 4.0"
-GAME_CUSTOM( 199?, m4shv__x, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_05___.4n3", 0x0000, 0x010000, CRC(f607f351) SHA1(d7b779b80fa964a27b106bd9d5ca3be16a11d5e9), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 1)" )
-GAME_CUSTOM( 199?, m4shv__y, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hv_05_d_.4n3", 0x0000, 0x010000, CRC(f4d702d7) SHA1(268c7f6443c7ae587caf5b227fcd438530a06bcc), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 2)" )
-GAME_CUSTOM( 199?, m4shv__z, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>, mpu4, init_m4default, "hvi05___.4n3", 0x0000, 0x010000, CRC(38a33c2b) SHA1(21004092b81e08146291fd3a025652f0edbe47dc), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 3)" )
+GAME_CUSTOM( 199?, m4shv__x, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_05___.4n3", 0x0000, 0x010000, CRC(f607f351) SHA1(d7b779b80fa964a27b106bd9d5ca3be16a11d5e9), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 1)" )
+GAME_CUSTOM( 199?, m4shv__y, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hv_05_d_.4n3", 0x0000, 0x010000, CRC(f4d702d7) SHA1(268c7f6443c7ae587caf5b227fcd438530a06bcc), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 2)" )
+GAME_CUSTOM( 199?, m4shv__z, m4shv, cheatchr_pal<mpu4_characteriser_pal::m407_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvi05___.4n3", 0x0000, 0x010000, CRC(38a33c2b) SHA1(21004092b81e08146291fd3a025652f0edbe47dc), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 3)" )
// "(C)1991 BARCREST" and "H6Y 0.3"
-GAME_CUSTOM( 199?, m4shv, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, init_m4default, "h6ys.p1", 0x0000, 0x010000, CRC(4af914ff) SHA1(3d9b7c65ec1129ee64e3f4e14e43e4c39c76166b), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 1)" )
-GAME_CUSTOM( 199?, m4shv__a, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, init_m4default, "h6yc.p1", 0x0000, 0x010000, CRC(8faca3bc) SHA1(9d666371f1118ccb1a94bfc4e6c79b540a84842b), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 C)" )
-GAME_CUSTOM( 199?, m4shv__b, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, init_m4default, "h6yd.p1", 0x0000, 0x010000, CRC(862e7f5b) SHA1(2f5bbc31978fb9fd0ba17f0de220152da87cf06f), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 D)" )
-GAME_CUSTOM( 199?, m4shv__c, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, init_m4default, "h6yk.p1", 0x0000, 0x010000, CRC(51f43c88) SHA1(d6ee4f537d09b33e9b13c972e1bda01a28f54f8e), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 K)" )
-GAME_CUSTOM( 199?, m4shv__d, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, init_m4default, "h6yy.p1", 0x0000, 0x010000, CRC(bed4b3bb) SHA1(7c592fbc6541c03777ff0498db90c575b3193222), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 Y)" )
-GAME_CUSTOM( 199?, m4shv__e, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, init_m4default, "hyperviper.bin", 0x0000, 0x010000, CRC(8373f6a3) SHA1(79bff20ab80ffe11447595c6fe8e5ab90d432e17), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 2)" ) // hack?
+GAME_CUSTOM( 199?, m4shv, 0, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, init_m4, "h6ys.p1", 0x0000, 0x010000, CRC(4af914ff) SHA1(3d9b7c65ec1129ee64e3f4e14e43e4c39c76166b), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 1)" )
+GAME_CUSTOM( 199?, m4shv__a, m4shv, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, init_m4, "h6yc.p1", 0x0000, 0x010000, CRC(8faca3bc) SHA1(9d666371f1118ccb1a94bfc4e6c79b540a84842b), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 C)" )
+GAME_CUSTOM( 199?, m4shv__b, m4shv, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, init_m4, "h6yd.p1", 0x0000, 0x010000, CRC(862e7f5b) SHA1(2f5bbc31978fb9fd0ba17f0de220152da87cf06f), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 D)" )
+GAME_CUSTOM( 199?, m4shv__c, m4shv, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, init_m4, "h6yk.p1", 0x0000, 0x010000, CRC(51f43c88) SHA1(d6ee4f537d09b33e9b13c972e1bda01a28f54f8e), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 K)" )
+GAME_CUSTOM( 199?, m4shv__d, m4shv, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, init_m4, "h6yy.p1", 0x0000, 0x010000, CRC(bed4b3bb) SHA1(7c592fbc6541c03777ff0498db90c575b3193222), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 Y)" )
+GAME_CUSTOM( 199?, m4shv__e, m4shv, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, init_m4, "hyperviper.bin", 0x0000, 0x010000, CRC(8373f6a3) SHA1(79bff20ab80ffe11447595c6fe8e5ab90d432e17), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 2)" ) // hack?
// "(C)1991 BARCREST" and "H6Y 0.2"
-GAME_CUSTOM( 199?, m4shv__f, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>, mpu4, init_m4default, "hvypr206", 0x0000, 0x010000, CRC(e1d96b8c) SHA1(e21b1bdbca1bae41f0e7274e3521f99eb984759e), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.2 Y)" )
+GAME_CUSTOM( 199?, m4shv__f, m4shv, cheatchr_pal<mpu4_characteriser_pal::m450_characteriser_prot>(R4, RT1), mpu4, init_m4, "hvypr206", 0x0000, 0x010000, CRC(e1d96b8c) SHA1(e21b1bdbca1bae41f0e7274e3521f99eb984759e), "Barcrest","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.2 Y)" )
// "(C)1995 B.W.B." and "HVC 1.0"
-GAME_CUSTOM( 199?, m4shv__g, m4shv, mod4yam_cheatchr_pal<mpu4_characteriser_pal::hypvipalt_characteriser_prot>, mpu4, init_m4default,"5p4hypervyper.bin", 0x0000, 0x010000, CRC(51ac9288) SHA1(1580079b6e710506ab03e1d8a89af65cd06cedd2), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVC 1.0 C)" )
+GAME_CUSTOM( 199?, m4shv__g, m4shv, cheatchr_pal<mpu4_characteriser_pal::hypvipalt_characteriser_prot>(R4, RT1), mpu4, init_m4,"5p4hypervyper.bin", 0x0000, 0x010000, CRC(51ac9288) SHA1(1580079b6e710506ab03e1d8a89af65cd06cedd2), "BWB","Super Hyper Viper (Barcrest) (MPU4) (HVC 1.0 C)" )
// different protection
// no copyright string and "HVP 3.0"
-GAME_CUSTOM( 199?, m4shv__0, m4shv, mod4yam_bootleg_fixedret<0xb1>, mpu4, init_m4default, "hv056c", 0x0000, 0x010000, CRC(91dcef99) SHA1(8fb6245fa8731b58799c0d2edc0e6c6942984a6f), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 1)" )
-GAME_CUSTOM( 199?, m4shv__1, m4shv, mod4yam_bootleg_fixedret<0x65>, mpu4, init_m4default, "hv05_101", 0x0000, 0x010000, CRC(e1fa633d) SHA1(3f446c3396142631141cf85db507f3ae288847e3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 2)" )
-GAME_CUSTOM( 199?, m4shv__2, m4shv, mod4yam_bootleg_fixedret<0x15>, mpu4, init_m4default, "hyp55", 0x0000, 0x010000, CRC(07bd7455) SHA1(0d0a017c90e8d28500594f55c9a60dfc08aff5c3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 3)" )
-GAME_CUSTOM( 199?, m4shv__3, m4shv, mod4yam_bootleg_fixedret<0x11>, mpu4, init_m4default, "hypr58c", 0x0000, 0x010000, CRC(d6028f8f) SHA1(54a3188ddb5196808a1161a0e1e6a8c1fe8bfde3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 4)" )
-GAME_CUSTOM( 199?, m4shv__4, m4shv, mod4yam_bootleg_fixedret<0x11>, mpu4, init_m4default, "hypv_05_.4", 0x0000, 0x010000, CRC(246f171c) SHA1(7bbefb0cae57cf8097aa6d033df1a428e8bfe744), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 5)" )
-GAME_CUSTOM( 199?, m4shv__5, m4shv, mod4yam_bootleg_fixedret<0x11>, mpu4, init_m4default, "hvip_05_.8", 0x0000, 0x010000, CRC(625f1b9d) SHA1(f8dc0cde774f3fc4fb3d66d014ad47e9576c0f44), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 1)" )
+GAME_CUSTOM( 199?, m4shv__0, m4shv, bootleg_fixedret<0xb1>(R4, RT1), mpu4, init_m4, "hv056c", 0x0000, 0x010000, CRC(91dcef99) SHA1(8fb6245fa8731b58799c0d2edc0e6c6942984a6f), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 1)" )
+GAME_CUSTOM( 199?, m4shv__1, m4shv, bootleg_fixedret<0x65>(R4, RT1), mpu4, init_m4, "hv05_101", 0x0000, 0x010000, CRC(e1fa633d) SHA1(3f446c3396142631141cf85db507f3ae288847e3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 2)" )
+GAME_CUSTOM( 199?, m4shv__2, m4shv, bootleg_fixedret<0x15>(R4, RT1), mpu4, init_m4, "hyp55", 0x0000, 0x010000, CRC(07bd7455) SHA1(0d0a017c90e8d28500594f55c9a60dfc08aff5c3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 3)" )
+GAME_CUSTOM( 199?, m4shv__3, m4shv, bootleg_fixedret<0x11>(R4, RT1), mpu4, init_m4, "hypr58c", 0x0000, 0x010000, CRC(d6028f8f) SHA1(54a3188ddb5196808a1161a0e1e6a8c1fe8bfde3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 4)" )
+GAME_CUSTOM( 199?, m4shv__4, m4shv, bootleg_fixedret<0x11>(R4, RT1), mpu4, init_m4, "hypv_05_.4", 0x0000, 0x010000, CRC(246f171c) SHA1(7bbefb0cae57cf8097aa6d033df1a428e8bfe744), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 5)" )
+GAME_CUSTOM( 199?, m4shv__5, m4shv, bootleg_fixedret<0x11>(R4, RT1), mpu4, init_m4, "hvip_05_.8", 0x0000, 0x010000, CRC(625f1b9d) SHA1(f8dc0cde774f3fc4fb3d66d014ad47e9576c0f44), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 1)" )
// "DICK WAS ERE" and "HVP 3.0"
-GAME_CUSTOM( 199?, m4shv__6, m4shv, mod4yam_bootleg_fixedret<0x5b>, mpu4, init_m4default, "hv108c", 0x0000, 0x010000, CRC(4d40ebfe) SHA1(0e355fe5b185ba595c5040335956037b8ed21599), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 6)" )
-GAME_CUSTOM( 199?, m4shv__8, m4shv, mod4yam_bootleg_fixedret<0x5b>, mpu4, init_m4default, "hypv_10_.4", 0x0000, 0x010000, CRC(f85d21a1) SHA1(55ed92147335a1471b7b443f68dd700f579d21f3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 8)" )
-GAME_CUSTOM( 199?, m4shv__9, m4shv, mod4yam_bootleg_fixedret<0x5b>, mpu4, init_m4default, "hvip_10_.8", 0x0000, 0x010000, CRC(f91d7fec) SHA1(4c8130f9ce0ee3b14744e2b3cab79d4a65767e78), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 2)" )
-GAME_CUSTOM( 199?, m4shv__7, m4shv, mod4yam_bootleg_fixedret<0x6b>, mpu4, init_m4default, "hv10_101", 0x0000, 0x010000, CRC(57714454) SHA1(de99f5a66081191a7280c54e875fd17cc94e111b), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 7)" )
+GAME_CUSTOM( 199?, m4shv__6, m4shv, bootleg_fixedret<0x5b>(R4, RT1), mpu4, init_m4, "hv108c", 0x0000, 0x010000, CRC(4d40ebfe) SHA1(0e355fe5b185ba595c5040335956037b8ed21599), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 6)" )
+GAME_CUSTOM( 199?, m4shv__8, m4shv, bootleg_fixedret<0x5b>(R4, RT1), mpu4, init_m4, "hypv_10_.4", 0x0000, 0x010000, CRC(f85d21a1) SHA1(55ed92147335a1471b7b443f68dd700f579d21f3), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 8)" )
+GAME_CUSTOM( 199?, m4shv__9, m4shv, bootleg_fixedret<0x5b>(R4, RT1), mpu4, init_m4, "hvip_10_.8", 0x0000, 0x010000, CRC(f91d7fec) SHA1(4c8130f9ce0ee3b14744e2b3cab79d4a65767e78), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 2)" )
+GAME_CUSTOM( 199?, m4shv__7, m4shv, bootleg_fixedret<0x6b>(R4, RT1), mpu4, init_m4, "hv10_101", 0x0000, 0x010000, CRC(57714454) SHA1(de99f5a66081191a7280c54e875fd17cc94e111b), "hack","Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 7)" )
// "(C)1991 BARCREST" and "H6Y 0.3" (but hack, doesn't want usual characterizer)
-GAME_CUSTOM( 199?, m4shv__10, m4shv, mod4yam_bootleg_fixedret<0x7a>, mpu4, init_m4default, "hv20_101", 0x0000, 0x010000, CRC(b2ab79c9) SHA1(fd097b5b062d725fa0607117d6b52be6cbf7e597), "hack","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 1)" )
-GAME_CUSTOM( 199?, m4shv__11, m4shv, mod4yam_bootleg_fixedret<0x4a>, mpu4, init_m4default, "hvip_20_.8", 0x0000, 0x010000, CRC(61a608c7) SHA1(1ed98c8bd90a3a789ba00b6b39f49e3aa0fcb1ca), "hack","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 2)" )
-GAME_CUSTOM( 199?, m4shv__12, m4shv, mod4yam_bootleg_fixedret<0x4a>, mpu4, init_m4default, "hypv_20_.4", 0x0000, 0x010000, CRC(27a0162b) SHA1(2d1342edbfa29c4f2ee1f1a825f3eeb0489fbaf5), "hack","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 3)" )
+GAME_CUSTOM( 199?, m4shv__10, m4shv, bootleg_fixedret<0x7a>(R4, RT1), mpu4, init_m4, "hv20_101", 0x0000, 0x010000, CRC(b2ab79c9) SHA1(fd097b5b062d725fa0607117d6b52be6cbf7e597), "hack","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 1)" )
+GAME_CUSTOM( 199?, m4shv__11, m4shv, bootleg_fixedret<0x4a>(R4, RT1), mpu4, init_m4, "hvip_20_.8", 0x0000, 0x010000, CRC(61a608c7) SHA1(1ed98c8bd90a3a789ba00b6b39f49e3aa0fcb1ca), "hack","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 2)" )
+GAME_CUSTOM( 199?, m4shv__12, m4shv, bootleg_fixedret<0x4a>(R4, RT1), mpu4, init_m4, "hypv_20_.4", 0x0000, 0x010000, CRC(27a0162b) SHA1(2d1342edbfa29c4f2ee1f1a825f3eeb0489fbaf5), "hack","Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 3)" )
/*****************************************************************************************************************************************************************************
@@ -1246,7 +1354,7 @@ GAME_CUSTOM( 199?, m4shv__12, m4shv, mod4yam_bootleg_fixedret<0x4a>, mpu4, i
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::age_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// "(C)1991 BARCREST" and "HPC 0.5"
GAME_CUSTOM( 199?, m4hypclb, 0, "hpcs.p1", 0x0000, 0x010000, CRC(55601e10) SHA1(78c3f13cd122e86ff8b7750b375c26e56c6b27c6), "Barcrest","Hyper Viper Club (Barcrest) (MPU4) (HPC 0.5)" )
@@ -1270,7 +1378,7 @@ GAME_CUSTOM( 199?, m4hypclb__b, m4hypclb, "hpcfd.p1", 0x0000, 0x010000, CRC
ROM_REGION( length, "maincpu", 0 ) \
ROM_LOAD( name, offset, length, hash ) \
ROM_END \
- GAME(year, setname, parent, mod4yam_cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, company, title, GAME_FLAGS )
+ GAME(year, setname, parent, cheatchr_pal<mpu4_characteriser_pal::viva_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, company, title, GAME_FLAGS )
// some of these ROMs (the non-D ones?) contain a 'Barcrest Video' string, why? there's no footage to support it being a video game
@@ -1335,10 +1443,10 @@ ROM_START( m4supbfa )
ROM_END
-GAME(199?, m4bucks, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Bucks Fizz Club (Barcrest) (MPU4) (BUF 1.2, set 1)",GAME_FLAGS )
-GAME(199?, m4bucksa, m4bucks, mod4yam_cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Bucks Fizz Club (Barcrest) (MPU4) (BUF 1.2, set 2)",GAME_FLAGS )
-GAME(199?, m4supbf, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Super Bucks Fizz Club (Barcrest) (MPU4) (SBF 2.0, set 1)",GAME_FLAGS )
-GAME(199?, m4supbfa, m4supbf, mod4yam_cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Super Bucks Fizz Club (Barcrest) (MPU4) (SBF 2.0, set 2)",GAME_FLAGS )
+GAME(199?, m4bucks, 0, cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>(R5R, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Bucks Fizz Club (Barcrest) (MPU4) (BUF 1.2, set 1)",GAME_FLAGS )
+GAME(199?, m4bucksa, m4bucks, cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>(R5R, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Bucks Fizz Club (Barcrest) (MPU4) (BUF 1.2, set 2)",GAME_FLAGS )
+GAME(199?, m4supbf, 0, cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>(R5R, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Super Bucks Fizz Club (Barcrest) (MPU4) (SBF 2.0, set 1)",GAME_FLAGS )
+GAME(199?, m4supbfa, m4supbf, cheatchr_pal<mpu4_characteriser_pal::bucksfizz_characteriser_prot>(R5R, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Super Bucks Fizz Club (Barcrest) (MPU4) (SBF 2.0, set 2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -1374,11 +1482,11 @@ ROM_START( m4calicld )
ROM_END
-GAME(199?, m4calicl, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CA2 1.0, set 1)",GAME_FLAGS )
-GAME(199?, m4calicla, m4calicl, mod4yam_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CA2 1.0, set 2)",GAME_FLAGS )
-GAME(199?, m4caliclb, m4calicl, mod4yam_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CA2 1.0, set 3)",GAME_FLAGS )
-GAME(199?, m4caliclc, m4calicl, mod4yam_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CAL 2.0, set 1)",GAME_FLAGS )
-GAME(199?, m4calicld, m4calicl, mod4yam_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CAL 2.0, set 2)",GAME_FLAGS )
+GAME(199?, m4calicl, 0, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CA2 1.0, set 1)",GAME_FLAGS )
+GAME(199?, m4calicla, m4calicl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CA2 1.0, set 2)",GAME_FLAGS )
+GAME(199?, m4caliclb, m4calicl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CA2 1.0, set 3)",GAME_FLAGS )
+GAME(199?, m4caliclc, m4calicl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CAL 2.0, set 1)",GAME_FLAGS )
+GAME(199?, m4calicld, m4calicl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","California Club (Barcrest) (MPU4) (CAL 2.0, set 2)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
*
@@ -1402,9 +1510,9 @@ ROM_START( m4sunsclb )
ROM_LOAD( "sc_xef__.3_3", 0x0000, 0x010000, CRC(8e7e1100) SHA1(7648ea860a546081388a213845e27312730f46d9) )
ROM_END
-GAME(199?, m4sunscl, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "BWB", "Sunset Club (BWB) (MPU4) (SSC 3.0, set 1)", GAME_FLAGS )
-GAME(199?, m4sunscla, m4sunscl, mod4yam_cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "BWB", "Sunset Club (BWB) (MPU4) (SSC 3.0, set 2)", GAME_FLAGS )
-GAME(199?, m4sunsclb, m4sunscl, mod4yam_cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "BWB", "Sunset Club (BWB) (MPU4) (SSC 3.0, set 3)", GAME_FLAGS )
+GAME(199?, m4sunscl, 0, cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "BWB", "Sunset Club (BWB) (MPU4) (SSC 3.0, set 1)", GAME_FLAGS )
+GAME(199?, m4sunscla, m4sunscl, cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "BWB", "Sunset Club (BWB) (MPU4) (SSC 3.0, set 2)", GAME_FLAGS )
+GAME(199?, m4sunsclb, m4sunscl, cheatchr_pal<mpu4_characteriser_pal::sunsetclub_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "BWB", "Sunset Club (BWB) (MPU4) (SSC 3.0, set 3)", GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -1439,11 +1547,11 @@ ROM_START( m4tropcld )
ROM_LOAD( "trod.p1", 0x0000, 0x010000, CRC(60c84612) SHA1(84dc8b34e41436331832c1a32ddac0fce269488a) )
ROM_END
-GAME(199?, m4tropcl, 0, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TRO 2.0, set 1)",GAME_FLAGS )
-GAME(199?, m4tropcld, m4tropcl, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TRO 2.0, set 2)",GAME_FLAGS )
-GAME(199?, m4tropcla, m4tropcl, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 1)",GAME_FLAGS )
-GAME(199?, m4tropclb, m4tropcl, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 2)",GAME_FLAGS )
-GAME(199?, m4tropclc, m4tropcl, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 3)",GAME_FLAGS )
+GAME(199?, m4tropcl, 0, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT2, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TRO 2.0, set 1)",GAME_FLAGS )
+GAME(199?, m4tropcld, m4tropcl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT2, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TRO 2.0, set 2)",GAME_FLAGS )
+GAME(199?, m4tropcla, m4tropcl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT2, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 1)",GAME_FLAGS )
+GAME(199?, m4tropclb, m4tropcl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT2, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 2)",GAME_FLAGS )
+GAME(199?, m4tropclc, m4tropcl, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R5R, RT2, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 3)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -1474,10 +1582,10 @@ ROM_START( m4nudshfc )
ROM_END
-GAME(199?, m4nudshf, 0, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 1)",GAME_FLAGS )
-GAME(199?, m4nudshfb, m4nudshf, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 2)",GAME_FLAGS )
-GAME(199?, m4nudshfc, m4nudshf, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 3)",GAME_FLAGS )
-GAME(199?, m4nudshfa, m4nudshf, mod4yam_alt_cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.0)",GAME_FLAGS )
+GAME(199?, m4nudshf, 0, cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>(R4, RT2), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 1)",GAME_FLAGS )
+GAME(199?, m4nudshfb, m4nudshf, cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>(R4, RT2), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 2)",GAME_FLAGS )
+GAME(199?, m4nudshfc, m4nudshf, cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>(R4, RT2), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 3)",GAME_FLAGS )
+GAME(199?, m4nudshfa, m4nudshf, cheatchr_pal<mpu4_characteriser_pal::nudshf_characteriser_prot>(R4, RT2), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Nudge Shuffle (Barcrest) (MPU4) (NUS 3.0)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -1503,9 +1611,9 @@ ROM_START( m4nspotb )
ROM_LOAD( "nits.p1", 0x0000, 0x010000, CRC(47c965e6) SHA1(41a337a9a367c4e704a60e32d56b262d03f97b59) )
ROM_END
-GAME(199?, m4nspot, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Night Spot Club (Barcrest) (MPU4) (NS2 2.2, set 1)",GAME_FLAGS )
-GAME(199?, m4nspota, m4nspot, mod4yam_cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Night Spot Club (Barcrest) (MPU4) (NS2 2.2, set 2)",GAME_FLAGS )
-GAME(199?, m4nspotb, m4nspot, mod4yam_cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default_five_rev_sextender, ROT0, "Barcrest","Night Spot Club (Barcrest) (MPU4) (NIT 1.1)",GAME_FLAGS )
+GAME(199?, m4nspot, 0, cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Night Spot Club (Barcrest) (MPU4) (NS2 2.2, set 1)",GAME_FLAGS )
+GAME(199?, m4nspota, m4nspot, cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Night Spot Club (Barcrest) (MPU4) (NS2 2.2, set 2)",GAME_FLAGS )
+GAME(199?, m4nspotb, m4nspot, cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>(R5R, RT1, LPS), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Night Spot Club (Barcrest) (MPU4) (NIT 1.1)",GAME_FLAGS )
/*****************************************************************************************************************************************************************************
@@ -1551,17 +1659,17 @@ ROM_START( m4addrd )
ROM_END
-GAME(198?, m4tst, 0, mod4yam_no_bacta, mpu4, mpu4mod4yam_machines_state, init_m4test4, ROT0,"Barcrest","MPU4 Unit Test (Program 4)",MACHINE_MECHANICAL )
+GAME(198?, m4tst, 0, no_bacta(R4, RT1, OVER), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0,"Barcrest","MPU4 Unit Test (Program 4)",MACHINE_MECHANICAL )
-GAME(199?, m4joljokd, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, "Barcrest","Jolly Joker (Barcrest) (Dutch) (MPU4) (DJJ 1.5)",GAME_FLAGS) // Geen Tubes
+GAME(199?, m4joljokd, 0, cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>(R4, RT1), mpu4, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Jolly Joker (Barcrest) (Dutch) (MPU4) (DJJ 1.5)",GAME_FLAGS) // Geen Tubes
-GAME(199?, m4clbshf, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>, mpu420p, mpu4mod4yam_machines_state, init_m4default, ROT0, "Barcrest","Club Shuffle (Barcrest) (MPU4) (CSS 1.0)",GAME_FLAGS) // set stake (runs if you do)
+GAME(199?, m4clbshf, 0, cheatchr_pal<mpu4_characteriser_pal::shuffle_characteriser_prot>(R4, RT1), mpu420p, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Club Shuffle (Barcrest) (MPU4) (CSS 1.0)",GAME_FLAGS) // set stake (runs if you do)
-GAME(199?, m4voodoo, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>, mpu4_dutch, mpu4mod4yam_machines_state, init_m4default_six, ROT0, "Barcrest","Voodoo 1000 (Barcrest) (Dutch) (MPU4) (DDO 3.2)",GAME_FLAGS ) // ROL F SETUP ALM
+GAME(199?, m4voodoo, 0, cheatchr_pal<mpu4_characteriser_pal::m435_characteriser_prot>(R6, RT1), mpu4_dutch, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Voodoo 1000 (Barcrest) (Dutch) (MPU4) (DDO 3.2)",GAME_FLAGS ) // ROL F SETUP ALM
-GAME(199?, m4magdrg, 0, mod4yam_7reel_cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>, mpu4_dutch, mpu4mod4yam_machines_state, init_m4default_seven, ROT0, "Barcrest","Magic Dragon (Barcrest) (MPU4) (DMD1.0)",GAME_FLAGS )
+GAME(199?, m4magdrg, 0, cheatchr_pal<mpu4_characteriser_pal::magicdragon_characteriser_prot>(R7, RT1), mpu4_dutch, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Magic Dragon (Barcrest) (MPU4) (DMD1.0)",GAME_FLAGS )
// non-standard protection
-GAME(199?, m4hslo, 0, mod4yam_bootleg_fixedret<0x56>, mpu4_70pc, mpu4mod4yam_machines_state, init_m4default, ROT0, "(bootleg)","Hot Slot (bootleg) (MPU4) (HOT 3.0)",GAME_FLAGS )
+GAME(199?, m4hslo, 0, bootleg_fixedret<0x56>(R4, RT1), mpu4_70pc, mpu4mod4yam_machines_state, init_m4, ROT0, "(bootleg)","Hot Slot (bootleg) (MPU4) (HOT 3.0)",GAME_FLAGS )
-GAME(199?, m4addrd, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::m470_characteriser_prot>, mpu4_dutch, mpu4mod4yam_machines_state, init_m4default_five_rev, ROT0, "Barcrest","Adders & Ladders (Barcrest) (Dutch) (MPU4) (DAL 1.2)",GAME_FLAGS )
+GAME(199?, m4addrd, 0, cheatchr_pal<mpu4_characteriser_pal::m470_characteriser_prot>(R5R, RT1), mpu4_dutch, mpu4mod4yam_machines_state, init_m4, ROT0, "Barcrest","Adders & Ladders (Barcrest) (Dutch) (MPU4) (DAL 1.2)",GAME_FLAGS )
diff --git a/src/mame/barcrest/mpu4plasma.cpp b/src/mame/barcrest/mpu4plasma.cpp
index dc64223601d..8a47b93a4a2 100644
--- a/src/mame/barcrest/mpu4plasma.cpp
+++ b/src/mame/barcrest/mpu4plasma.cpp
@@ -10,6 +10,7 @@
#include "mpu4.h"
#include "cpu/m68000/m68000.h"
+#include "emupal.h"
#include "screen.h"
namespace {
@@ -18,15 +19,23 @@ class mpu4plasma_state : public mpu4_state
{
public:
mpu4plasma_state(const machine_config &mconfig, device_type type, const char *tag)
- : mpu4_state(mconfig, type, tag),
- m_plasmaram(*this, "plasmaram")
+ : mpu4_state(mconfig, type, tag)
+ , m_plasmaram(*this, "plasmaram")
+ , m_palette(*this, "palette")
{
}
- void mpu4plasma(machine_config &config);
+ void mpu4plasma_f(machine_config &config);
+
+ template<typename... T>
+ auto mpu4plasma(T... traits)
+ {
+ return trait_wrapper(this, &mpu4plasma_state::mpu4plasma_f, traits...);
+ }
private:
required_shared_ptr<uint16_t> m_plasmaram;
+ required_device<palette_device> m_palette;
uint16_t mpu4plasma_unk_r()
{
@@ -80,9 +89,9 @@ uint32_t mpu4plasma_state::screen_update_mpu4plasma(screen_device &screen, bitma
}
-void mpu4plasma_state::mpu4plasma(machine_config &config)
+void mpu4plasma_state::mpu4plasma_f(machine_config &config)
{
- mod2(config);
+ mod2_f(config);
m68000_device &plasmacpu(M68000(config, "plasmacpu", 10000000));
plasmacpu.set_addrmap(AS_PROGRAM, &mpu4plasma_state::mpu4plasma_map);
plasmacpu.set_vblank_int("screen", FUNC(mpu4plasma_state::irq4_line_hold));
@@ -197,20 +206,22 @@ ROM_END
} // anonymous namespace
+using namespace mpu4_traits;
+
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
// 00 50 40 14 4c 80 34 44 5c 9c 9c 9c dc 9c dc 94 2c cc ec a8 ec a0 30 40 54 (m435)
-GAMEL(199?, m4bigchf, 0, mpu4plasma, mpu4, mpu4plasma_state, init_m4default, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
-GAMEL(199?, m4bigchfa, m4bigchf, mpu4plasma, mpu4, mpu4plasma_state, init_m4default, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
-GAMEL(199?, m4bigchfb, m4bigchf, mpu4plasma, mpu4, mpu4plasma_state, init_m4default, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
-GAMEL(199?, m4bigchfc, m4bigchf, mpu4plasma, mpu4, mpu4plasma_state, init_m4default, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
+GAMEL(199?, m4bigchf, 0, mpu4plasma(R4, RT1), mpu4, mpu4plasma_state, init_m4, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 1)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
+GAMEL(199?, m4bigchfa, m4bigchf, mpu4plasma(R4, RT1), mpu4, mpu4plasma_state, init_m4, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 2)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
+GAMEL(199?, m4bigchfb, m4bigchf, mpu4plasma(R4, RT1), mpu4, mpu4plasma_state, init_m4, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 3)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
+GAMEL(199?, m4bigchfc, m4bigchf, mpu4plasma(R4, RT1), mpu4, mpu4plasma_state, init_m4, ROT0, "Barcrest","Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 4)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
// 00 44 44 c4 70 04 c4 50 a4 d4 30 a0 54 20 64 40 64 e4 f4 14 80
-GAMEL(199?, m4click, 0, mpu4plasma, mpu4, mpu4plasma_state, init_m4default, ROT0, "Barcrest","Clickity Click (Barcrest) (MPU4 w/ Plasma DMD)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
+GAMEL(199?, m4click, 0, mpu4plasma(R4, RT1), mpu4, mpu4plasma_state, init_m4, ROT0, "Barcrest","Clickity Click (Barcrest) (MPU4 w/ Plasma DMD)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
// not confirmed to be plasma, is this an alt version of big chief? maybe it uses the same plasma roms?
// 00 24 24 2c 70 20 0c 60 3c 5c 5c 5c 7c 4c 68 40 34 38 7c 54 (m4duty sequence)
-GAMEL(199?, m4apach, 0, mpu4plasma, mpu4, mpu4plasma_state, init_m4default, ROT0, "Barcrest","Apache (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
+GAMEL(199?, m4apach, 0, mpu4plasma(R4, RT1), mpu4, mpu4plasma_state, init_m4, ROT0, "Barcrest","Apache (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
// not confirmed to be plasma, but acts like it
// 00 30 20 14 2c a0 54 24 3c 9c 9c 9c bc 94 6c 80 58 bc bc 98 9c 9c (m441)
-GAMEL(199?, m4elite, 0, mpu4plasma, mpu4, mpu4plasma_state, init_m4default, ROT0, "Barcrest","Elite (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
+GAMEL(199?, m4elite, 0, mpu4plasma(R4, RT1), mpu4, mpu4plasma_state, init_m4, ROT0, "Barcrest","Elite (Barcrest) (MPU4 w/ Plasma DMD?)", GAME_FLAGS|MACHINE_NO_SOUND,layout_mpu4plasma )
diff --git a/src/mame/barcrest/mpu4redpoint.cpp b/src/mame/barcrest/mpu4redpoint.cpp
new file mode 100644
index 00000000000..86be8c59161
--- /dev/null
+++ b/src/mame/barcrest/mpu4redpoint.cpp
@@ -0,0 +1,146 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+
+#include "emu.h"
+#include "mpu4.h"
+
+#include "sound/ymz280b.h"
+
+namespace {
+
+class mpu4redpoint_state : public mpu4_state
+{
+public:
+ mpu4redpoint_state(const machine_config &mconfig, device_type type, const char *tag)
+ : mpu4_state(mconfig, type, tag)
+ , m_ympcm(*this, "ympcm")
+ {
+ }
+
+ void base_f(machine_config &config);
+
+ template <typename... T>
+ auto base(T... traits)
+ {
+ return trait_wrapper(this, &mpu4redpoint_state::base_f, traits...);
+ }
+
+private:
+ void add_ympcm(machine_config &config);
+
+ void memmap_ympcm(address_map &map);
+
+ DECLARE_MACHINE_START(mpu4redpoint);
+
+ required_device<ymz280b_device> m_ympcm;
+};
+
+void mpu4redpoint_state::add_ympcm(machine_config &config)
+{
+ YMZ280B(config, m_ympcm, 16'934'400);
+ m_ympcm->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ m_ympcm->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+}
+
+void mpu4redpoint_state::memmap_ympcm(address_map &map)
+{
+ mpu4_memmap(map);
+ map(0x1100, 0x1101).rw(m_ympcm, FUNC(ymz280b_device::read), FUNC(ymz280b_device::write));
+}
+
+void mpu4redpoint_state::base_f(machine_config &config)
+{
+ mpu4base(config);
+ MCFG_MACHINE_START_OVERRIDE(mpu4redpoint_state,mpu4redpoint)
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &mpu4redpoint_state::memmap_ympcm);
+
+ add_ympcm(config);
+}
+
+MACHINE_START_MEMBER(mpu4redpoint_state,mpu4redpoint)
+{
+ mpu4_config_common();
+
+ m_link7a_connected=false;
+}
+
+} // anonymous namespace
+
+
+#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
+
+using namespace mpu4_traits;
+
+static INPUT_PORTS_START( m4cbing )
+ PORT_INCLUDE( mpu4 )
+
+ PORT_MODIFY("DIL1")
+ PORT_DIPNAME( 0x0f, 0x0f, "Percentage Key" ) PORT_DIPLOCATION("DIL1:01,02,03,04")
+ PORT_DIPSETTING( 0x00, "Invalid" )
+ PORT_DIPSETTING( 0x01, "76" )
+ PORT_DIPSETTING( 0x02, "77" )
+ PORT_DIPSETTING( 0x03, "78" )
+ PORT_DIPSETTING( 0x04, "79" )
+ PORT_DIPSETTING( 0x05, "80" )
+ PORT_DIPSETTING( 0x06, "81" )
+ PORT_DIPSETTING( 0x07, "82" )
+ PORT_DIPSETTING( 0x08, "83" )
+ PORT_DIPSETTING( 0x09, "84" )
+ PORT_DIPSETTING( 0x0a, "85" )
+ PORT_DIPSETTING( 0x0b, "86" )
+ PORT_DIPSETTING( 0x0c, "87" )
+ PORT_DIPSETTING( 0x0d, "88" )
+ PORT_DIPSETTING( 0x0e, "89" )
+ PORT_DIPSETTING( 0x0f, "90" )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DIL1:05")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DIL1:06")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DIL1:07")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIL1:08")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+
+ PORT_MODIFY("DIL2")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIL2:01,02")
+ PORT_DIPSETTING( 0x00, "2" )
+ PORT_DIPSETTING( 0x01, "5" )
+ PORT_DIPSETTING( 0x02, "10" )
+ PORT_DIPSETTING( 0x03, "20" )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DIL2:03")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DIL2:04")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DIL2:05")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DIL2:06")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIL2:07")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIL2:08")
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+ROM_START( m4cbing )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD( "cherrybingoprg.bin", 0x0000, 0x010000, CRC(00c1d4f3) SHA1(626df7f2f597ed13c32ce0fa8846f2e27ca68eae) )
+
+ ROM_REGION( 0x200000, "ympcm", 0 ) // not oki!
+ ROM_LOAD( "cherrybingosnd.p1", 0x000000, 0x100000, CRC(11bed9f9) SHA1(63ed45122dda8e412bb1eaeb967d8a0f925d4bde) )
+ ROM_LOAD( "cherrybingosnd.p2", 0x100000, 0x100000, CRC(b2a7ec28) SHA1(307f19ffb46f4a2e8e93923ddb666e50de43a00e) )
+ROM_END
+
+
+GAME( 1998, m4cbing, 0, base(R4, RT1), m4cbing, mpu4redpoint_state, init_m4, ROT0, "Redpoint Systems", "Cherry Bingo (Redpoint Systems) (MPU4)", GAME_FLAGS )
diff --git a/src/mame/barcrest/mpu4union.cpp b/src/mame/barcrest/mpu4union.cpp
index 2a052add3dd..c4da548a091 100644
--- a/src/mame/barcrest/mpu4union.cpp
+++ b/src/mame/barcrest/mpu4union.cpp
@@ -261,59 +261,60 @@ ROM_END
} // anonymous namespace
+using namespace mpu4_traits;
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
/* Union
these don't boot, at best you get a 'CLEAR' message */
-GAME(199?, m4cwalk, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Cake Walk (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4cwalk, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Cake Walk (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4eezee, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Eezee Fruits (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4eezee, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Eezee Fruits (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4frdrop, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Fruit Drop (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4frdrop, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Fruit Drop (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gobana, 0, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Go Bananas (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gobanaa, m4gobana, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Go Bananas (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gobanab, m4gobana, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Go Bananas (Union) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gobanac, m4gobana, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Go Bananas (Union) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gobanad, m4gobana, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Go Bananas (Union) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gobana, 0, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Go Bananas (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gobanaa, m4gobana, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Go Bananas (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gobanab, m4gobana, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Go Bananas (Union) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gobanac, m4gobana, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Go Bananas (Union) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gobanad, m4gobana, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Go Bananas (Union) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4lotty, 0, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Lotty Time (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4lotty, 0, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Lotty Time (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4maxmze, 0, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Maximize (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4maxmzea, m4maxmze, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Maximize (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4maxmzeb, m4maxmze, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Maximize (Union) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4maxmzec, m4maxmze, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Maximize (Union) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4maxmzed, m4maxmze, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Maximize (Union) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4maxmze, 0, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Maximize (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4maxmzea, m4maxmze, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Maximize (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4maxmzeb, m4maxmze, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Maximize (Union) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4maxmzec, m4maxmze, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Maximize (Union) (MPU4, set 4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4maxmzed, m4maxmze, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Maximize (Union) (MPU4, set 5)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4mecca, 0, mod2 ,mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Mecca Money (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4mecca, 0, mod2(R4, RT1),mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Mecca Money (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4purmad, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Pure Madness (Union)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4purmad, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Pure Madness (Union)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4revolv, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Revolva (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4revolv, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Revolva (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4rotex, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Rotex (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4rotex, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Rotex (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4select, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Select (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4select, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Select (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4supfru, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Supafruits (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4supfrua,m4supfru, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Supafruits (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4supfru, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Supafruits (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4supfrua,m4supfru, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Supafruits (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4trimad, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Triple Madness (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4trimad, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Triple Madness (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4unibox, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Unibox (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4uniboxa,m4unibox, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Unibox (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4unibox, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Unibox (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4uniboxa,m4unibox, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Unibox (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4unique, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Unique (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4uniquep,m4unique, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Unique (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4unique, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Unique (Union) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4uniquep,m4unique, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Unique (Union) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4crzbn, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union","Crazy Bingo (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4crzbn, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union","Crazy Bingo (Union) (MPU4)", GAME_FLAGS|MACHINE_NO_SOUND )
/* Union + Empire
same as Union above */
-GAME(199?, m4gvibes, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union / Empire","Good Vibrations (Union - Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4gvibesa, m4gvibes, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union / Empire","Good Vibrations (Union - Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gvibes, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union / Empire","Good Vibrations (Union - Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4gvibesa, m4gvibes, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union / Empire","Good Vibrations (Union - Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4rckrol, 0, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union / Empire","Rock 'n' Roll (Union - Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4rckrola, m4rckrol, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union / Empire","Rock 'n' Roll (Union - Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
-GAME(199?, m4rckrolb, m4rckrol, mod4oki, mpu4, mpu4union_machines_state, init_m4default, ROT0, "Union / Empire","Rock 'n' Roll (Union - Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4rckrol, 0, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union / Empire","Rock 'n' Roll (Union - Empire) (MPU4, set 1)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4rckrola, m4rckrol, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union / Empire","Rock 'n' Roll (Union - Empire) (MPU4, set 2)", GAME_FLAGS|MACHINE_NO_SOUND )
+GAME(199?, m4rckrolb, m4rckrol, mod4oki(R4, RT1), mpu4, mpu4union_machines_state, init_m4, ROT0, "Union / Empire","Rock 'n' Roll (Union - Empire) (MPU4, set 3)", GAME_FLAGS|MACHINE_NO_SOUND )
diff --git a/src/mame/barcrest/mpu4unsorted.cpp b/src/mame/barcrest/mpu4unsorted.cpp
index 8465d2bb67b..b42b9d28d9d 100644
--- a/src/mame/barcrest/mpu4unsorted.cpp
+++ b/src/mame/barcrest/mpu4unsorted.cpp
@@ -55,58 +55,6 @@ ROM_END
-#define M4LUCKWB_EXTRAS \
- ROM_REGION( 0x100000, "msm6376", 0 ) /* these are all different sound roms... */ \
- ROM_LOAD( "lwbs3.bin", 0x0000, 0x07dc89, CRC(ee102376) SHA1(3fed581a4654acf285dd430fbfbac33cd67411b8) ) \
- ROM_LOAD( "lwbs7.bin", 0x0000, 0x080000, CRC(5d4177c7) SHA1(e13f145885bb719b0021ae4ce289261a3eaa2e18) ) \
- ROM_LOAD( "lwbs8.bin", 0x0000, 0x080000, CRC(187cdf5b) SHA1(87ec189af27c95f278a7531ec13df53a08889af8) ) \
- ROM_LOAD( "lwbs9.bin", 0x0000, 0x080000, CRC(2e02b617) SHA1(2502a1d2cff155a7fc5148e23a4723d4d60e9d42) )
-
-ROM_START( m4luckwb )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "lwb10.bin", 0x0000, 0x010000, CRC(6d43a14e) SHA1(267aba1a01bfd5f0eaa7683d041d5fcb2d301934) )
- M4LUCKWB_EXTRAS
-ROM_END
-
-ROM_START( m4luckwba )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "lwb15.bin", 0x0000, 0x010000, CRC(b5af8cb2) SHA1(474975b83803627ad3ac4217d8cecb2d2db16fec) )
- M4LUCKWB_EXTRAS
-ROM_END
-
-ROM_START( m4luckwbb )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "lwb21.bin", 0x0000, 0x010000, CRC(6c570733) SHA1(7488318ca9689371e4f80be0a0fddd8ad141733e) )
- M4LUCKWB_EXTRAS
-ROM_END
-
-ROM_START( m4luckwbc )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "lwb22.bin", 0x0000, 0x010000, CRC(05b952a7) SHA1(952e328b280a18c1ffe253b6a56f2b5e893b1b72) )
- M4LUCKWB_EXTRAS
-ROM_END
-
-ROM_START( m4luckwbd )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "lwb27.bin", 0x0000, 0x010000, CRC(9d6b6637) SHA1(65bad12cd08de128ca31c9488e32e3cebfb8eedb) )
- M4LUCKWB_EXTRAS
-ROM_END
-
-ROM_START( m4luckwbe )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "lwb6.bin", 0x0000, 0x010000, CRC(8e7d4594) SHA1(4824a9a4628585a170c41e00f7b3fcb8a2330c02) )
- M4LUCKWB_EXTRAS
-ROM_END
-
-ROM_START( m4luckwbf )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "lwb7.bin", 0x0000, 0x010000, CRC(8e651705) SHA1(bd4d09d586d14759a17d4d7d4016c427f3eef015) )
- M4LUCKWB_EXTRAS
-ROM_END
-
-
-
-
@@ -128,38 +76,32 @@ ROM_END
-void mpu4unsorted_state::init_m4aao()
-{
- //Derived from Against_All_Odds_(Eurotek)_[C01_800_15jp].gam
- init_m4default();
- use_m4_hopper_duart_a();
- use_m4_standard_reels();
- //PCKEY =9
- //STKEY =0
- //JPKEY =0
- //JPSET =0
- //DIP1_0=true
- //DIP1_1=true
- //DIP1_2=true
- //DIP1_3=true
- //DIP1_4=true
- //DIP1_5=false
- //DIP1_6=false
- //DIP1_7=false
- //DIP2_0=false
- //DIP2_1=false
- //DIP2_2=false
- //DIP2_3=false
- //DIP2_4=false
- //DIP2_5=false
- //DIP2_6=false
- //DIP2_7=false
- //Sound barcrest1
- //Standard
- //Volume 0 Stereo= 0
- //Sample rate 16000
- //Front door code 255 Cash door code 255
-}
+//Derived from Against_All_Odds_(Eurotek)_[C01_800_15jp].gam
+//PCKEY =9
+//STKEY =0
+//JPKEY =0
+//JPSET =0
+//DIP1_0=true
+//DIP1_1=true
+//DIP1_2=true
+//DIP1_3=true
+//DIP1_4=true
+//DIP1_5=false
+//DIP1_6=false
+//DIP1_7=false
+//DIP2_0=false
+//DIP2_1=false
+//DIP2_2=false
+//DIP2_3=false
+//DIP2_4=false
+//DIP2_5=false
+//DIP2_6=false
+//DIP2_7=false
+//Sound barcrest1
+//Standard
+//Volume 0 Stereo= 0
+//Sample rate 16000
+//Front door code 255 Cash door code 255
ROM_START( m4aao )
ROM_REGION( 0x010000, "maincpu", 0 )
@@ -580,10 +522,10 @@ ROM_START( m4blkgd )
M4BLKGD_EXTRAS
ROM_END
-//Early rom banks empty? May need different loading
ROM_START( m4blkgda )
ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "blackgoldversion2.4.bin", 0x0000, 0x040000, CRC(fad4e360) SHA1(23c6a13e8d1ca307b0ef22edffed536675985aca) )
+ ROM_LOAD( "blackgoldversion2.4.bin", 0x0000, 0x020000, CRC(fad4e360) SHA1(23c6a13e8d1ca307b0ef22edffed536675985aca) )
+ ROM_CONTINUE( 0x0000, 0x020000 ) //Early rom banks empty
M4BLKGD_EXTRAS
ROM_END
@@ -715,22 +657,6 @@ ROM_START( m4booze )
ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 )
ROM_END
-ROM_START( m4cbing )
- ROM_REGION( 0x80000, "maincpu", 0 )
- ROM_LOAD( "cherrybingoprg.bin", 0x0000, 0x010000, CRC(00c1d4f3) SHA1(626df7f2f597ed13c32ce0fa8846f2e27ca68eae) )
- ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 ) // not oki!
- ROM_LOAD( "cherrybingosnd.p1", 0x000000, 0x100000, CRC(11bed9f9) SHA1(63ed45122dda8e412bb1eaeb967d8a0f925d4bde) )
- ROM_LOAD( "cherrybingosnd.p2", 0x100000, 0x100000, CRC(b2a7ec28) SHA1(307f19ffb46f4a2e8e93923ddb666e50de43a00e) )
-ROM_END
-
-
-ROM_START( m4nod )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "nod.bin", 0x0000, 0x010000, CRC(bc738af5) SHA1(8df436139554ccfb48c4db0a32e3333dbf3c4f46) )
- ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 ) //region was called "upd" but machine is mod4oki? Which one is correct?
- ROM_LOAD( "nodsnd.bin", 0x0000, 0x080000, CRC(2134494a) SHA1(3b665bf79567a71195b20e76c50b02707d15b78d) )
-ROM_END
-
ROM_START( m4aliz )
ROM_REGION( 0x40000, "maincpu", 0 )
@@ -759,12 +685,6 @@ ROM_START( m4coney )
ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 )
ROM_END
-ROM_START( m4funh )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "funhouse.bin", 0x00000, 0x10000, CRC(4e342025) SHA1(288125ff5e3da7249d89dfcc3cd0915f791f7d43) )
- ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 ) // no idea if it uses an OKI
-ROM_END
-
ROM_START( m4eaw51 ) \
@@ -774,184 +694,162 @@ ROM_END
} // anonymous namespace
+using namespace mpu4_traits;
+
#define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL)
// works. This is not a Barcrest game, but has a standard CHR check after you coin up for the first time, expecting the m4lv sequence back. Reports ILLEGAL SOFTWARE if it fails
-GAME(199?, m4bandgd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Eurogames","Bands Of Gold (Eurogames) (MPU4)",GAME_FLAGS )
+GAME(199?, m4bandgd, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Eurogames","Bands Of Gold (Eurogames) (MPU4)",GAME_FLAGS )
// ERROR CODE 2. as with m4bandgd this isn't a Barcrest, but does the standard CHR check and shows ILLEGAL SOFTWARE if check fails, assume it is also by Eurogames
-GAME(199?, m4matdr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>, mpu4, mpu4unsorted_state, init_m4default_six, ROT0, "Eurogames","Matador (Eurogames) (MPU4)",GAME_FLAGS )
+GAME(199?, m4matdr, 0, mod4oki_cheatchr_pal<mpu4_characteriser_pal::m4lv_characteriser_prot>(R6, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Eurogames","Matador (Eurogames) (MPU4)",GAME_FLAGS )
// works, not standard protection, but cheatchr works
-GAME(199?, m4bigben, 0, mod4oki_cheatchr, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 1)",GAME_FLAGS )
-GAME(199?, m4bigbena, m4bigben, mod4oki_cheatchr, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 2)",GAME_FLAGS )
-GAME(199?, m4bigbenb, m4bigben, mod4oki_cheatchr, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 3)",GAME_FLAGS )
-GAME(199?, m4bigbend, m4bigben, mod4oki_cheatchr, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 4)",GAME_FLAGS )
-GAME(199?, m4bigbene, m4bigben, mod4oki_cheatchr, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 5)",GAME_FLAGS )
+GAME(199?, m4bigben, 0, mod4oki_cheatchr(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 1)",GAME_FLAGS )
+GAME(199?, m4bigbena, m4bigben, mod4oki_cheatchr(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 2)",GAME_FLAGS )
+GAME(199?, m4bigbenb, m4bigben, mod4oki_cheatchr(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 3)",GAME_FLAGS )
+GAME(199?, m4bigbend, m4bigben, mod4oki_cheatchr(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 4)",GAME_FLAGS )
+GAME(199?, m4bigbene, m4bigben, mod4oki_cheatchr(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Big Ben (Coinworld) (MPU4, set 5)",GAME_FLAGS )
-GAME(199?, m4kqclub, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Newby","Kings & Queens Club (Newby) (MPU4)",GAME_FLAGS )
+GAME(199?, m4kqclub, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Newby","Kings & Queens Club (Newby) (MPU4)",GAME_FLAGS )
-GAME(199?, m4snookr, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Eurocoin","Snooker (Eurocoin) (MPU4)",GAME_FLAGS ) // works?
+GAME(199?, m4snookr, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Eurocoin","Snooker (Eurocoin) (MPU4)",GAME_FLAGS ) // works?
-GAME(199?, m4stakex, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Leisurama","Stake X (Leisurama) (MPU4, set 1)",GAME_FLAGS ) // has issues with coins in 'separate bank' (default) mode, reel issues
-GAME(199?, m4stakexa, m4stakex, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Leisurama","Stake X (Leisurama) (MPU4, set 2)",GAME_FLAGS ) // like above, but doesn't default to separate bank?
+GAME(199?, m4stakex, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Leisurama","Stake X (Leisurama) (MPU4, set 1)",GAME_FLAGS ) // has issues with coins in 'separate bank' (default) mode, reel issues
+GAME(199?, m4stakexa, m4stakex, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Leisurama","Stake X (Leisurama) (MPU4, set 2)",GAME_FLAGS ) // like above, but doesn't default to separate bank?
-GAME(199?, m4boltbl, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 1)",GAME_FLAGS ) // Reel 1 Fault
-GAME(199?, m4boltbla, m4boltbl, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 2)",GAME_FLAGS )
-GAME(199?, m4boltblb, m4boltbl, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 3)",GAME_FLAGS )
-GAME(199?, m4boltblc, m4boltbl, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 4)",GAME_FLAGS )
+GAME(199?, m4boltbl, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 1)",GAME_FLAGS ) // Reel 1 Fault
+GAME(199?, m4boltbla, m4boltbl, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 2)",GAME_FLAGS )
+GAME(199?, m4boltblb, m4boltbl, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 3)",GAME_FLAGS )
+GAME(199?, m4boltblc, m4boltbl, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE","Bolt From The Blue (DJE) (MPU4, set 4)",GAME_FLAGS )
-GAME(199?, m4stand2, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "DJE","Stand To Deliver (DJE) (MPU4)",GAME_FLAGS ) // Reel 1 Fault
+GAME(199?, m4stand2, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE","Stand To Deliver (DJE) (MPU4)",GAME_FLAGS ) // Reel 1 Fault
-GAME(199?, m4dblchn, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "DJE","Double Chance (DJE) (MPU4)",GAME_FLAGS ) // Reels spin forever
+GAME(199?, m4dblchn, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE","Double Chance (DJE) (MPU4)",GAME_FLAGS ) // Reels spin forever
// other issues, only plays an 'alarm' sound when there's money to payout? wrong sound ROM or something else?
-GAME(2001, m4casmul, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "DJE","Casino Multiplay (MPU4)",GAME_FLAGS ) // unprotected, copyright year / manufacturer found in ROM
+GAME(2001, m4casmul, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE","Casino Multiplay (MPU4)",GAME_FLAGS ) // unprotected, copyright year / manufacturer found in ROM
// has D.J.E 1999 copyright in ROM
-GAMEL(1999, m4aao, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4aao, ROT0, "DJE / Eurotek","Against All Odds (Eurotek) (MPU4)",GAME_FLAGS, layout_m4aao )
+GAMEL(1999, m4aao, 0, mod4oki(R4, RT1, HDA), mpu4, mpu4unsorted_state, init_m4, ROT0, "DJE / Eurotek","Against All Odds (Eurotek) (MPU4)",GAME_FLAGS, layout_m4aao )
/* Unknown stuff that looks like it might be MPU4, but needs further verification, some could be bad */
// PAL FAIL
-GAME(199?, m4barcrz, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Bar Crazy (unknown) (MPU4?)",GAME_FLAGS )
+GAME(199?, m4barcrz, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "<unknown>","Bar Crazy (unknown) (MPU4?)",GAME_FLAGS )
// gives an error
-GAME(199?, m4bonzbn, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Bingo Bonanza (unknown) (MPU4?)",GAME_FLAGS )
+GAME(199?, m4bonzbn, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "<unknown>","Bingo Bonanza (unknown) (MPU4?)",GAME_FLAGS )
/* *if* these are MPU4 they have a different sound system at least - The copyright strings in them are 'AET' tho (Ace?) - Could be related to the Crystal stuff? */
-GAME(199?, m4sbx, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 1)",GAME_FLAGS )
-GAME(199?, m4sbxa, m4sbx, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 2)",GAME_FLAGS )
-GAME(199?, m4sbxb, m4sbx, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 3)",GAME_FLAGS )
-GAME(199?, m4sbxc, m4sbx, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 4)",GAME_FLAGS )
-GAME(199?, m4sbxd, m4sbx, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 5)",GAME_FLAGS )
-GAME(199?, m4sbxe, m4sbx, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 6)",GAME_FLAGS )
+GAME(199?, m4sbx, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 1)",GAME_FLAGS )
+GAME(199?, m4sbxa, m4sbx, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 2)",GAME_FLAGS )
+GAME(199?, m4sbxb, m4sbx, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 3)",GAME_FLAGS )
+GAME(199?, m4sbxc, m4sbx, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 4)",GAME_FLAGS )
+GAME(199?, m4sbxd, m4sbx, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 5)",GAME_FLAGS )
+GAME(199?, m4sbxe, m4sbx, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Super Bear X (MPU4?) (set 6)",GAME_FLAGS )
-GAME(199?, m4bclimb, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Bear Climber (MPU4?)",GAME_FLAGS )
+GAME(199?, m4bclimb, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Bear Climber (MPU4?)",GAME_FLAGS )
-GAME(199?, m4captb, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Captain Bear (MPU4?)",GAME_FLAGS )
+GAME(199?, m4captb, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Captain Bear (MPU4?)",GAME_FLAGS )
-GAME(199?, m4jungj, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 1)",GAME_FLAGS )
-GAME(199?, m4jungja, m4jungj, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 2)",GAME_FLAGS )
-GAME(199?, m4jungjb, m4jungj, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 3)",GAME_FLAGS )
-GAME(199?, m4jungjc, m4jungj, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 4)",GAME_FLAGS )
+GAME(199?, m4jungj, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 1)",GAME_FLAGS )
+GAME(199?, m4jungja, m4jungj, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 2)",GAME_FLAGS )
+GAME(199?, m4jungjb, m4jungj, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 3)",GAME_FLAGS )
+GAME(199?, m4jungjc, m4jungj, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Jungle Japes (MPU4?) (set 4)",GAME_FLAGS )
-GAME(199?, m4fsx, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Fun Spot X (MPU4?) (set 1)",GAME_FLAGS )
-GAME(199?, m4fsxa, m4fsx, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Fun Spot X (MPU4?) (set 2)",GAME_FLAGS )
-GAME(199?, m4fsxb, m4fsx, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "AET/Coinworld","Fun Spot X (MPU4?) (set 3)",GAME_FLAGS )
+GAME(199?, m4fsx, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Fun Spot X (MPU4?) (set 1)",GAME_FLAGS )
+GAME(199?, m4fsxa, m4fsx, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Fun Spot X (MPU4?) (set 2)",GAME_FLAGS )
+GAME(199?, m4fsxb, m4fsx, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "AET/Coinworld","Fun Spot X (MPU4?) (set 3)",GAME_FLAGS )
// Error 42 then 52, 54
-GAME(199?, m4ccop, 0, mod4oki, mpu4_cw, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Cash Cops (MPU4?) (set 1)",GAME_FLAGS )
-GAME(199?, m4ccopa, m4ccop, mod4oki, mpu4_cw, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Cash Cops (MPU4?) (set 2)",GAME_FLAGS )
-GAME(199?, m4ccopb, m4ccop, mod4oki, mpu4_cw, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Cash Cops (MPU4?) (set 3)",GAME_FLAGS )
+GAME(199?, m4ccop, 0, mod4oki(R4, RT1), mpu4_cw, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Cash Cops (MPU4?) (set 1)",GAME_FLAGS )
+GAME(199?, m4ccopa, m4ccop, mod4oki(R4, RT1), mpu4_cw, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Cash Cops (MPU4?) (set 2)",GAME_FLAGS )
+GAME(199?, m4ccopb, m4ccop, mod4oki(R4, RT1), mpu4_cw, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Cash Cops (MPU4?) (set 3)",GAME_FLAGS )
// Error 72
-GAME(199?, m4ccc, 0, mod4oki, mpu4_cw, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Criss Cross Crazy (Coinworld) (MPU4?)",GAME_FLAGS )
+GAME(199?, m4ccc, 0, mod4oki(R4, RT1), mpu4_cw, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Criss Cross Crazy (Coinworld) (MPU4?)",GAME_FLAGS )
// PAL ERROR
-GAME(199?, m4treel, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Turbo Reels (unknown) (MPU4?) (set 1)",GAME_FLAGS )
-GAME(199?, m4treela, m4treel, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Turbo Reels (unknown) (MPU4?) (set 2)",GAME_FLAGS )
+GAME(199?, m4treel, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "<unknown>","Turbo Reels (unknown) (MPU4?) (set 1)",GAME_FLAGS )
+GAME(199?, m4treela, m4treel, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "<unknown>","Turbo Reels (unknown) (MPU4?) (set 2)",GAME_FLAGS )
// works
-GAME(199?, m4surf, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Gemini","Super Surfin' (Gemini) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4surfa, m4surf, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Gemini","Super Surfin' (Gemini) (MPU4) (set 2)",GAME_FLAGS )
-GAME(199?, m4surfb, m4surf, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Gemini","Super Surfin' (Gemini) (MPU4) (set 3)",GAME_FLAGS )
+GAME(199?, m4surf, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Gemini","Super Surfin' (Gemini) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4surfa, m4surf, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Gemini","Super Surfin' (Gemini) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4surfb, m4surf, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Gemini","Super Surfin' (Gemini) (MPU4) (set 3)",GAME_FLAGS )
// works
-GAME(199?, m4wife, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Gemini","Money Or Yer Wife (Gemini) (MPU4)",GAME_FLAGS )
+GAME(199?, m4wife, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Gemini","Money Or Yer Wife (Gemini) (MPU4)",GAME_FLAGS )
// works, error unless you set %
-GAME(199?, m4blkgd, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Gemini","Black Gold (Gemini) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4blkgd, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Gemini","Black Gold (Gemini) (MPU4) (set 1)",GAME_FLAGS )
// doesn't work, might be bad dump
-GAME(199?, m4blkgda, m4blkgd, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Gemini","Black Gold (Gemini) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4blkgda, m4blkgd, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Gemini","Black Gold (Gemini) (MPU4) (set 2)",GAME_FLAGS )
// runs, non-reel game?
-GAME(199?, m4zill, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Pure Leisure","Zillionare's Challenge (Pure Leisure) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4zilla, m4zill, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Pure Leisure","Zillionare's Challenge (Pure Leisure) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4zill, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Pure Leisure","Zillionare's Challenge (Pure Leisure) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4zilla, m4zill, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Pure Leisure","Zillionare's Challenge (Pure Leisure) (MPU4) (set 2)",GAME_FLAGS )
-// runs but corrupt VFD
-GAME(199?, m4hstr, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Happy Streak (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4hstra, m4hstr, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Happy Streak (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
-GAME(199?, m4hstrb, m4hstr, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Happy Streak (Coinworld) (MPU4) (set 3)",GAME_FLAGS )
+// ALARM S4
+GAME(199?, m4hstr, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Happy Streak (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4hstra, m4hstr, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Happy Streak (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4hstrb, m4hstr, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Happy Streak (Coinworld) (MPU4) (set 3)",GAME_FLAGS )
-// runs but corrupt VFD
-GAME(199?, m4hstrcs, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4hstrcsa, m4hstrcs, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
-GAME(199?, m4hstrcsb, m4hstrcs, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 3)",GAME_FLAGS )
-GAME(199?, m4hstrcsc, m4hstrcs, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 4)",GAME_FLAGS )
-GAME(199?, m4hstrcsd, m4hstrcs, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 5)",GAME_FLAGS )
+// "S4" error
+GAME(199?, m4hstrcs, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4hstrcsa, m4hstrcs, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4hstrcsb, m4hstrcs, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 3)",GAME_FLAGS )
+GAME(199?, m4hstrcsc, m4hstrcs, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 4)",GAME_FLAGS )
+GAME(199?, m4hstrcsd, m4hstrcs, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Casino Happy Streak (Coinworld) (MPU4) (set 5)",GAME_FLAGS )
// Error 1.8
-GAME(199?, m4ddb, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Ding Dong Bells (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4ddba, m4ddb, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Ding Dong Bells (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4ddb, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Ding Dong Bells (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4ddba, m4ddb, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Ding Dong Bells (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
-// runs but corrupt VFD
-GAME(199?, m4hapfrt, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Happy Fruits (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4hapfrta, m4hapfrt, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Happy Fruits (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
-GAME(199?, m4hapfrtb, m4hapfrt, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Coinworld","Happy Fruits (Coinworld) (MPU4) (set 3)",GAME_FLAGS )
+// "S4" error
+GAME(199?, m4hapfrt, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Happy Fruits (Coinworld) (MPU4) (set 1)",GAME_FLAGS )
+GAME(199?, m4hapfrta, m4hapfrt, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Happy Fruits (Coinworld) (MPU4) (set 2)",GAME_FLAGS )
+GAME(199?, m4hapfrtb, m4hapfrt, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Coinworld","Happy Fruits (Coinworld) (MPU4) (set 3)",GAME_FLAGS )
// backwards VFD
-GAME(199?, m4sunday, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Pcp","Sunday Sport (Pcp) (MPU4)",GAME_FLAGS )
+GAME(199?, m4sunday, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Pcp","Sunday Sport (Pcp) (MPU4)",GAME_FLAGS )
// HOPPER FAULT
-GAME(199?, m4jp777, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Cotswold Microsystems","Jackpot 777 (Cotswold Microsystems) (MPU4)",GAME_FLAGS ) /* Hopper Fault */
+GAME(199?, m4jp777, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Cotswold Microsystems","Jackpot 777 (Cotswold Microsystems) (MPU4)",GAME_FLAGS ) /* Hopper Fault */
// HOPPER FAULT
-GAME(199?, m4dnj, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Cotswold Microsystems","Double Nudge (Cotswold Microsystems) (MPU4) (set 1)",GAME_FLAGS ) /* Hopper Fault */
-GAME(199?, m4dnja, m4dnj, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Cotswold Microsystems","Double Nudge (Cotswold Microsystems) (MPU4) (set 2)",GAME_FLAGS ) /* Hopper Fault */
-GAME(199?, m4dnjb, m4dnj, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Cotswold Microsystems","Double Nudge (Cotswold Microsystems) (MPU4) (set 3)",GAME_FLAGS ) /* Hopper Fault */
+GAME(199?, m4dnj, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Cotswold Microsystems","Double Nudge (Cotswold Microsystems) (MPU4) (set 1)",GAME_FLAGS ) /* Hopper Fault */
+GAME(199?, m4dnja, m4dnj, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Cotswold Microsystems","Double Nudge (Cotswold Microsystems) (MPU4) (set 2)",GAME_FLAGS ) /* Hopper Fault */
+GAME(199?, m4dnjb, m4dnj, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Cotswold Microsystems","Double Nudge (Cotswold Microsystems) (MPU4) (set 3)",GAME_FLAGS ) /* Hopper Fault */
// PIC CHECK, backwards VFD
-GAME(199?, m4booze, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Extreme","Booze Cruise (Extreme) (MPU4)",GAME_FLAGS )
-
- // custom sound system
-GAME(199?, m4cbing, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Redpoint Systems","Cherry Bingo (Redpoint Systems) (MPU4)",GAME_FLAGS )
-
-// just spins wheels badly
-GAME( 199?, m4nod, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, 0, "Eurotech", "Nod And A Wink (Eurotech) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
+GAME(199?, m4booze, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "Extreme","Booze Cruise (Extreme) (MPU4)",GAME_FLAGS )
// LINKUP SUCHE
-GAME( 199?, m4aliz, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default_big, 0, "Qps", "AlizBaz (Qps) (German) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
+GAME( 199?, m4aliz, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4big, 0, "Qps", "AlizBaz (Qps) (German) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
// SHELF RESONSE
-GAME( 199?, m4coney, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, 0, "Qps", "Coney Island (Qps) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
+GAME( 199?, m4coney, 0, mod4oki(R4, RT1), mpu4, mpu4unsorted_state, init_m4, 0, "Qps", "Coney Island (Qps) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE)
// very similar to m4c2 behavior below, but no protection?
-GAME( 199?, m4crzjk, 0, mod2_alt, mpu4_invcoin, mpu4unsorted_state, init_m4default, 0, "Nova?", "Crazy Jokers (Nova?) (MPU4)",GAME_FLAGS )
+GAME( 199?, m4crzjk, 0, mod2(R4, RT2), mpu4_invcoin, mpu4unsorted_state, init_m4, 0, "Nova?", "Crazy Jokers (Nova?) (MPU4)",GAME_FLAGS )
// not standard protection, but cheatchr passes it, code crashes after a short time?
-GAME( 199?, m4c2, 0, mod4oki_alt_cheatchr, mpu4_invcoin, mpu4unsorted_state, init_m4default, 0, "Nova?", "Circus Circus 2 (Nova?) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE) // COIN ALM
-
-
-
-// no protection?
-GAME(198?, m4funh, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, 0, "<unknown>", "Fun House (unknown) (MPU4)", GAME_FLAGS ) // TUNE ALARM (was in the SC1 Fun House set)
+GAME( 199?, m4c2, 0, mod4oki_cheatchr(R4, RT2), mpu4_invcoin, mpu4unsorted_state, init_m4, 0, "Nova?", "Circus Circus 2 (Nova?) (MPU4)",GAME_FLAGS|MACHINE_MECHANICAL|MACHINE_SUPPORTS_SAVE) // COIN ALM
// REEL 1 FAULT
// Not the same as Barcrest Everyone's A Winner? has "(C) J.A. Brown 1991" in the ROM
-GAME(1991, m4eaw51, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "J.A. Brown", "Everyone's A Winner (J.A. Brown) (MPU4) (EAW 5.1)", GAME_FLAGS )
+GAME(1991, m4eaw51, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "J.A. Brown", "Everyone's A Winner (J.A. Brown) (MPU4) (EAW 5.1)", GAME_FLAGS )
// REEL 1 FAULT
// has "(C) J.A. Brown 1993" in the ROM
-GAME(1993, m4twist, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "J.A. Brown","Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 1)",GAME_FLAGS ) // REEL 1 FAULT
-GAME(1993, m4twista, m4twist, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "J.A. Brown","Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 2)",GAME_FLAGS ) // TA 9.6 REEL 1 FAULT
-GAME(1993, m4twistb, m4twist, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "J.A. Brown","Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 3)",GAME_FLAGS ) // TA 9.6 REEL 1 FAULT
+GAME(1993, m4twist, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "J.A. Brown","Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 1)",GAME_FLAGS ) // REEL 1 FAULT
+GAME(1993, m4twista, m4twist, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "J.A. Brown","Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 2)",GAME_FLAGS ) // TA 9.6 REEL 1 FAULT
+GAME(1993, m4twistb, m4twist, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "J.A. Brown","Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 3)",GAME_FLAGS ) // TA 9.6 REEL 1 FAULT
// REEL 1 FAULT
// has "(C) J. Brown 1988" in the ROM (assume same J.A. Brown as above)
-GAME(1988, m4wnud, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "J.A. Brown","unknown MPU4 'W Nudge' (J.A. Brown) (MPU4)",GAME_FLAGS )
-
-
-
-// corrupt VFD (many XX), doesn't use standard Barcrest protection, maybe Coinworld?
-// reads a jump offset from 0x800 (where protection would usually map)
-GAME(199?, m4luckwb, 0, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 1)",GAME_FLAGS )
-GAME(199?, m4luckwba, m4luckwb, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 2)",GAME_FLAGS )
-GAME(199?, m4luckwbb, m4luckwb, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 3)",GAME_FLAGS )
-GAME(199?, m4luckwbc, m4luckwb, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 4)",GAME_FLAGS )
-GAME(199?, m4luckwbd, m4luckwb, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 5)",GAME_FLAGS )
-GAME(199?, m4luckwbe, m4luckwb, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 6)",GAME_FLAGS )
-GAME(199?, m4luckwbf, m4luckwb, mod4oki, mpu4, mpu4unsorted_state, init_m4default, ROT0, "<unknown>","Lucky Wild Boar (MPU4) (set 7)",GAME_FLAGS )
-
+GAME(1988, m4wnud, 0, mod2(R4, RT1), mpu4, mpu4unsorted_state, init_m4, ROT0, "J.A. Brown","unknown MPU4 'W Nudge' (J.A. Brown) (MPU4)",GAME_FLAGS )
diff --git a/src/mame/barcrest/mpu4vid.cpp b/src/mame/barcrest/mpu4vid.cpp
index 857c8cbcf6d..a2e5b8135e3 100644
--- a/src/mame/barcrest/mpu4vid.cpp
+++ b/src/mame/barcrest/mpu4vid.cpp
@@ -191,12 +191,11 @@ TODO:
#include "sound/ay8910.h"
#include "sound/okim6376.h"
#include "sound/saa1099.h"
-#include "sound/upd7759.h"
-#include "sound/ymopl.h"
#include "video/ef9369.h"
#include "video/scn2674.h"
+#include "emupal.h"
#include "screen.h"
#include "speaker.h"
@@ -209,6 +208,9 @@ TODO:
#include "v4strike.lh"
+#define VIDEO_MASTER_CLOCK XTAL(10'000'000)
+
+
namespace {
class mpu4vid_state : public mpu4_state
@@ -227,6 +229,7 @@ public:
m_trackx_port(*this, "TRACKX"),
m_tracky_port(*this, "TRACKY"),
m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette"),
m_ef9369(*this, "ef9369")
{
}
@@ -285,6 +288,7 @@ private:
optional_ioport m_trackx_port;
optional_ioport m_tracky_port;
required_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
optional_device<ef9369_device> m_ef9369;
@@ -1865,7 +1869,6 @@ void mpu4vid_state::machine_start()
{
mpu4_config_common();
- m_mod_number=2;
/* setup communications */
m_link7a_connected = true;
}
@@ -8707,7 +8710,7 @@ the copyright dates recorded.
TODO: Sort these better given the wide variation in dates/versions/core code (SWP version id, for one thing).
*/
-GAME( 199?, v4bios, 0, mod2, mpu4vid, mpu4_state, init_m4default, ROT0, "Barcrest","MPU4 Video Firmware",MACHINE_IS_BIOS_ROOT )
+GAME( 199?, v4bios, 0, mod2(), mpu4vid, mpu4_state, init_m4, ROT0, "Barcrest","MPU4 Video Firmware",MACHINE_IS_BIOS_ROOT )
#define GAME_FLAGS MACHINE_NOT_WORKING
#define GAME_FLAGS_OK (MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/bondwell/bw12.cpp b/src/mame/bondwell/bw12.cpp
index 6ecf5fae5c2..be39a356ad7 100644
--- a/src/mame/bondwell/bw12.cpp
+++ b/src/mame/bondwell/bw12.cpp
@@ -32,6 +32,7 @@
#include "screen.h"
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
/*
diff --git a/src/mame/canon/canon_s80.cpp b/src/mame/canon/canon_s80.cpp
index 5a5000df2b9..86c5f5006b2 100644
--- a/src/mame/canon/canon_s80.cpp
+++ b/src/mame/canon/canon_s80.cpp
@@ -153,6 +153,7 @@ Notes:
#include "video/hd44780.h"
#include "emupal.h"
#include "screen.h"
+#include "utf8.h"
namespace {
diff --git a/src/mame/capcom/cps1.cpp b/src/mame/capcom/cps1.cpp
index a4eaa4cd140..626cd6aa653 100644
--- a/src/mame/capcom/cps1.cpp
+++ b/src/mame/capcom/cps1.cpp
@@ -10241,6 +10241,56 @@ ROM_START( sf2red )
ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
ROM_END
+// uses original Capcom 91635B-2 B-Board + Capcom 92631C-6 C-Board, has hacked program ROMs and an (undumped) PAL probably for addressing them
+// actually flashes 'Red Wave' during attract while sf2red doesn't
+ROM_START( sf2reda )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "stf champ wave rom 21.6f", 0x000000, 0x40000, CRC(04fff17b) SHA1(e133686f4795c85b531864ea17bf8b2715e2ed6b) )
+ ROM_CONTINUE( 0x0c0000, 0x40000 )
+ ROM_LOAD16_WORD_SWAP( "stf champ wave rom 23.8f", 0x080000, 0x40000, CRC(eb265dc7) SHA1(191748223aa8650f4ed6e7d1885fe8056c910720) )
+ ROM_CONTINUE( 0x140000, 0x40000 )
+ ROM_LOAD16_WORD_SWAP( "stf champ wave rom 22.7f", 0x100000, 0x40000, CRC(27e80cb1) SHA1(d32eba8c7c887d6149020ab103ecda13448e6608) )
+ ROM_CONTINUE( 0x040000, 0x40000 )
+
+ ROM_REGION( 0x600000, "gfx", 0 )
+ ROM_LOAD64_WORD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) )
+ ROM_LOAD64_WORD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) )
+ ROM_LOAD64_WORD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) )
+ ROM_LOAD64_WORD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) )
+ ROM_LOAD64_WORD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) )
+ ROM_LOAD64_WORD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) )
+ ROM_LOAD64_WORD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) )
+ ROM_LOAD64_WORD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) )
+ ROM_LOAD64_WORD( "s92-10m.3c", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) )
+ ROM_LOAD64_WORD( "s92-12m.5c", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) )
+ ROM_LOAD64_WORD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) )
+ ROM_LOAD64_WORD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "s92_18.bin", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) )
+ ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s9263b.1a", 0x0000, 0x0117, CRC(0a7ecfe0) SHA1(f75e7eed4604fcf68273197fe3dd7f0d7a313ada) )
+ ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ ROM_LOAD( "pw.11d", 0x0000, 0x0117, NO_DUMP )
+
+ ROM_REGION( 0x0200, "cboardplds", 0 )
+ ROM_LOAD( "ioc1.ic7", 0x0000, 0x0104, CRC(a399772d) SHA1(55471189db573dd61e3087d12c55564291672c77) )
+ ROM_LOAD( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) )
+ROM_END
+
ROM_START( sf2redp2 )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_WORD_SWAP( "sf2red.23", 0x000000, 0x80000, CRC(2d3c4f72) SHA1(79f5f953d2dbea72450dc1b18e1ce8c5e63c9370) )
@@ -14494,7 +14544,8 @@ GAME( 1992, sf2cebltw, sf2ce, cps1_12MHz, sf2bhh, cps_state, init_cps1,
GAME( 1992, sf2rb, sf2ce, cps1_12MHz, sf2rb, cps_state, init_sf2rb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
GAME( 1992, sf2rb2, sf2ce, cps1_12MHz, sf2rb, cps_state, init_sf2rb2, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
GAME( 1992, sf2rb3, sf2ce, cps1_12MHz, sf2rb, cps_state, init_cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
-GAME( 1992, sf2red, sf2ce, cps1_12MHz, sf2, cps_state, init_cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Red Wave, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2red, sf2ce, cps1_12MHz, sf2, cps_state, init_cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Red Wave, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2reda, sf2ce, cps1_12MHz, sf2, cps_state, init_cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Red Wave, bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
GAME( 1992?,sf2redp2, sf2ce, cps1_12MHz, sf2, cps_state, init_cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Red Wave PtII, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - further modification of sf2red program
GAME( 1992, sf2v004, sf2ce, cps1_12MHz, sf2, cps_state, init_cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (V004, bootleg)", MACHINE_SUPPORTS_SAVE ) // 102092 !!! - based on (heavily modified) World version
GAME( 1992, sf2acc, sf2ce, cps1_12MHz, sf2, cps_state, init_cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
diff --git a/src/mame/capcom/cps1_v.cpp b/src/mame/capcom/cps1_v.cpp
index 4b9ce0a3101..7aebc0a68d3 100644
--- a/src/mame/capcom/cps1_v.cpp
+++ b/src/mame/capcom/cps1_v.cpp
@@ -1866,6 +1866,7 @@ static const struct CPS1config cps1_config_table[]=
{"sf2rb2", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2rb3", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2red", CPS_B_21_DEF, mapper_S9263B, 0x36 },
+ {"sf2reda", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2redp2", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2v004", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2acc", CPS_B_21_DEF, mapper_S9263B, 0x36 },
diff --git a/src/mame/casio/pb1000.cpp b/src/mame/casio/pb1000.cpp
index e6e06a02817..9a4f9218ce6 100644
--- a/src/mame/casio/pb1000.cpp
+++ b/src/mame/casio/pb1000.cpp
@@ -36,6 +36,8 @@
#include "bus/generic/carts.h"
#include "bus/generic/slot.h"
+#include "utf8.h"
+
class pb1000_state : public driver_device
{
diff --git a/src/mame/chess/ave_arb.cpp b/src/mame/chess/ave_arb.cpp
index df7d53a447c..87ee5224580 100644
--- a/src/mame/chess/ave_arb.cpp
+++ b/src/mame/chess/ave_arb.cpp
@@ -83,7 +83,6 @@ public:
DECLARE_INPUT_CHANGED_MEMBER(halt_button) { m_maincpu->set_input_line(M6502_NMI_LINE, newval ? ASSERT_LINE : CLEAR_LINE); update_reset(); }
void update_reset();
- // machine configs
void arb(machine_config &config);
void v2(machine_config &config);
@@ -101,20 +100,14 @@ private:
optional_device<generic_slot_device> m_cart;
required_ioport_array<2> m_inputs;
- // address maps
void main_map(address_map &map);
void v2_map(address_map &map);
- // sensorboard
void init_board(int state);
bool m_altboard = false;
- // cartridge
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
- u8 cartridge_r(offs_t offset);
- u32 m_cart_mask;
- // I/O handlers
void update_display();
void leds_w(u8 data);
void control_w(u8 data);
@@ -174,8 +167,6 @@ void arb_state::init_board(int state)
DEVICE_IMAGE_LOAD_MEMBER(arb_state::cart_load)
{
u32 size = m_cart->common_get_size("rom");
- m_cart_mask = ((1 << (31 - count_leading_zeros_32(size))) - 1) & 0x7fff;
-
m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
@@ -192,11 +183,6 @@ DEVICE_IMAGE_LOAD_MEMBER(arb_state::cart_load)
return image_init_result::PASS;
}
-u8 arb_state::cartridge_r(offs_t offset)
-{
- return m_cart->read_rom(offset & m_cart_mask);
-}
-
// R6522 ports
@@ -255,7 +241,7 @@ u8 arb_state::input_r()
void arb_state::main_map(address_map &map)
{
// external slot is A0-A14, potential bus conflict with RAM/VIA
- map(0x0000, 0x7fff).mirror(0x8000).r(FUNC(arb_state::cartridge_r));
+ map(0x0000, 0x7fff).mirror(0x8000).r(m_cart, FUNC(generic_slot_device::read_rom));
map(0x0000, 0x07ff).mirror(0x1000).ram().share("nvram");
map(0x8000, 0x800f).mirror(0x1ff0).m(m_via, FUNC(via6522_device::map));
}
@@ -341,7 +327,7 @@ void arb_state::arb(machine_config &config)
m_via->irq_handler().set_inputline(m_maincpu, M6502_IRQ_LINE);
/* cartridge */
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "arb");
+ GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "arb");
m_cart->set_device_load(FUNC(arb_state::cart_load));
m_cart->set_must_be_loaded(true);
diff --git a/src/mame/cinematronics/leland.cpp b/src/mame/cinematronics/leland.cpp
index 19d0d31b9b7..4324878bffb 100644
--- a/src/mame/cinematronics/leland.cpp
+++ b/src/mame/cinematronics/leland.cpp
@@ -37,6 +37,146 @@
****************************************************************************
+Ivan 'Ironman' Stewart's Super Off-Road, Leland, 1989
+Hardware info by Guru
+---------------------
+
+Most of these Cinematronics/Leland games use the same main board with different game-specific top boards.
+
+Top PCB (for Off-Road)
+-------
+
+PCA # 81-18002-2
+PART # 80-18002-01
+|-\ /-----------------------------------|
+| \-------/ AD7524 LM324 J8 |
+| AD7524 AD7533 LM324 J7|
+| AD7524 J9 LM324 |
+| AD7524 LM339 |
+| AD7524 LM339 |
+| AD7524 J6|
+| U75 U82 |
+| U9 16MHz U44 76C88 U74 U81 |
+| 80186 U43 76C88 |
+| U8 U42 ADC0820 J5|
+| U7 U59 |
+| U6 71054 U58 |
+| U5 U15 U27 71054 U57 J4|
+| U4 U14 U26 U56 |
+| U3 U13 U25 |
+| U2 U12 U24 U55 U68 J3|
+| Z80(2)76C88 76C88 U54 Z80(1) |
+| J1 BATT DS1221 J2 |
+|-----------------------------------------------|
+Notes:
+ 80186 - Siemens SAB80186-1-N x86 CPU. Clock input 16MHz, runs at 8MHz with an internal /2 divider.
+ Z80 - Master(1) & Slave(2) Zilog Z0840006 CPU. Clock input 6.000MHz [both, 12/2]
+ 76C88 - Goldstar GM76C88-10 8kBx8-bit SRAM, equivalent to 6264 etc
+ BATT - 3.6V AA Lithium Battery. Connected to the 2x 76C88 SRAMs just above U59. Used to hold the book-keeping data and high scores.
+ Not required/essential for normal operation.
+ 71054 - NEC D71054 Programmable Timer. Compatible with Intel 8254
+ J1, J2 - 40 pin flat cable joining to bottom board
+ J3 - 10 pin connector (not used?)
+ J4 - 10 pin connector (not used?)
+ J5 - 12 pin connector for 3x foot pedals
+ J6 - 10 pin connector for 3x steering wheels
+ J7 - 10 pin connector for power output to bottom board. 5V also flows through the J1 & J2 cables.
+ J8 - 10 pin connector for DC power input
+ J9 - 2 pin connector for audio output from top board to bottom board
+ DS1221 - Dallas DS1221 Non-Volatile Controller / Battery Management IC
+ LM324 - ST Microelectronics LM324 Quad Operational Amplifier
+ LM339 - Samsung LM339 Quad Differential Comparator
+ AD7524 - Maxim AD7524 8-bit Multiplying D/A Converter. 6 chips: channel 0 U46 to channel 5 U51
+ AD7533 - Maxim AD7533 10-bit Multiplying D/A Converter
+ ADC0820 - Signetics ADC0820 8-bit A/D Converter
+ U56-U59 - 27C512 program ROMs for master Z80
+ U2-U8 - 27C512 program ROMs for slave Z80. U2 & U3 are empty but are used on the Track-Pak upgrade.
+ U24-U27 - 27C512 program ROMs for 80186 CPU
+ U12-U15 - 27C512 program ROMs for 80186 CPU
+ U9 - PAL20L10 labelled '38-01'
+ U42 - PAL16R6 labelled '37-01'
+ U43 - PAL16R4 labelled '36-01'
+ U44 - PAL16L8 labelled '35-01'
+ U54 - PAL16L8 labelled '41-02'
+ U55 - PLHS18P8 labelled '39-01'
+ U68 - PLHS18P8 labelled '40-01'
+ U74 - PAL16R6 labelled '19-01'
+ U75 - PAL16R6 labelled '18-01'
+ U82 - PAL16R6 labelled '21-01'
+ U81 - Socket not populated
+
+
+Bottom board
+------------
+
+CINEMATRONICS INC
+PCB 80-10000-01 REV A
+LELAND CORP 1985 MADE IN USA
+PCB: 80-10000-01
+ASSY: 81-12170-12
+|----------------------------------------------------------|
+| P1 2148 P2 7815 |
+| 2148 LM324 TDA2002 P3|
+| VOL |
+| 8912 SW1|
+| 6116 LS461 4464 4464 X 8910 6116 |
+| 6116 LS461 6116 P4|
+| U85 93C46.U120 |
+| U21 4464 4464 U96 |
+| P5|
+| U19 LS461 LS461 |
+| U95 LS154 |
+| U17 U43 U94 P6|
+| U42 U93 |
+| U16 LS461 |
+| U3 U70 U92 |
+| U27 U40 JP2 U69 U91 U101 |
+| JP1 U26 U68 U90 JP3 |
+| U1 14.31818MHz U67 U89 U99 12MHz |
+|----------------------------------------------------------|
+Notes:
+ U3 - 27C64 EPROM (first part of slave Z80 program)
+ U1/U99 - 40 pin flat cable joining to top board
+ U67-U70 - 27C128 EPROM (graphics). U68 & U70 not populated
+ U89-U92 - 27C128 EPROM (graphics). U89 & U91 not populated
+ U93-U95 - 27C256 EPROM (graphics)
+ JP1/1/2 - Jumpers all set to 1-2
+ LS461 - 74LS461 Octal Counter. These are said to be PALs programmed as LS461 but some appears to be actual LS461 logic chips.
+ LS154 - 74LS154 4-Line to 16-Line Decoder/Demultiplexer
+ 6116 - 2kBx8-bit SRAM. Chips near P1 are for the slave Z80 program RAM. Chips near P2 are for the master Z80 program RAM.
+ U101 - Empty socket
+ 4464 - 4464 64kBx4-bit DRAM (graphics RAM)
+ 2148 - 1kBx4-bit SRAM (color RAM)
+ 8910 - AY-3-8910 Programmable Sound Generator
+ 8912 - AY-3-8912 Programmable Sound Generator (not populated). The 8910 does not use the extra features so either this or the 8910 can be used.
+ X - 2 wires connected to pins 5 & 6 of the not-populated 8912 chip and joining to J9 on the top board
+ LM324 - ST Microelectronics LM324 Quad Operational Amplifier
+ VOL - Volume Pot
+ 7815 - ST L7815 Voltage Regulator
+ TDA2002 - ST TDA2002 Audio Power Amplifier
+ SW1 - Reset Switch
+ P1 - 10 pin connector for R,G,B and separate H & V sync outputs
+ P2 - 2 pin connector for audio output to speakers
+ P3 - 10 pin connector for power input from top board
+ P4 - 10 pin connector for coin/service
+ P5 - 10 pin connector for nitro buttons
+ P6 - 10 pin connector (not used?)
+ U96 - PAL16L8 labelled '01-01'
+ U85 - PAL16L8 labelled '02-22'
+ U16 - PAL16L8 labelled '03-01'
+ U17 - PAL16L8 labelled '04-01'
+ U21 - PAL20X10 labelled '05-01'
+ U19 - PAL20X10 labelled '06-01'
+ U43 - PAL16R8 labelled '07-01'
+ U42 - PAL16R4 labelled '08-01'
+ U40 - PAL16R8 labelled '09-01'
+ U26 - PAL16R8 labelled '10-01'
+ U27 - PAL16R8 labelled '11-01'
+ HSync - 16.8822kHz \
+ VSync - 65.9459Hz / Yes really.... not a typo ;-)
+
+****************************************************************************
+
To enter service mode in most games, press 1P start and then press
the service coin.
diff --git a/src/mame/commodore/cbm2.cpp b/src/mame/commodore/cbm2.cpp
index 5c9e7ee069e..52dbc52afdd 100644
--- a/src/mame/commodore/cbm2.cpp
+++ b/src/mame/commodore/cbm2.cpp
@@ -39,6 +39,8 @@
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
#define PLA1_TAG "u78"
#define PLA2_TAG "u88"
#define MOS6567_TAG "u23"
diff --git a/src/mame/comx/comx35.cpp b/src/mame/comx/comx35.cpp
index d2a440f744c..6aa3d71d827 100644
--- a/src/mame/comx/comx35.cpp
+++ b/src/mame/comx/comx35.cpp
@@ -21,6 +21,7 @@
#include "formats/imageutl.h"
#include "screen.h"
#include "softlist_dev.h"
+#include "utf8.h"
/***************************************************************************
PARAMETERS
diff --git a/src/mame/dataeast/deco_ace.h b/src/mame/dataeast/deco_ace.h
index 9493b5111ef..e79680aae98 100644
--- a/src/mame/dataeast/deco_ace.h
+++ b/src/mame/dataeast/deco_ace.h
@@ -43,7 +43,7 @@ protected:
virtual void device_post_load() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 2048 * 2; }
+ virtual uint32_t palette_entries() const noexcept override { return 2048 * 2; }
private:
// internal state
diff --git a/src/mame/dataeast/decrmc3.h b/src/mame/dataeast/decrmc3.h
index 72f14a0c9c7..aa5da4e3982 100644
--- a/src/mame/dataeast/decrmc3.h
+++ b/src/mame/dataeast/decrmc3.h
@@ -87,8 +87,8 @@ protected:
virtual void device_start() override;
// device_palette_interface overrides
- virtual u32 palette_entries() const override { return m_entries; }
- virtual u32 palette_indirect_entries() const override { return m_indirect_entries; }
+ virtual u32 palette_entries() const noexcept override { return m_entries; }
+ virtual u32 palette_indirect_entries() const noexcept override { return m_indirect_entries; }
private:
void update_for_write(offs_t byte_offset, int bytes_modified, bool indirect = false);
diff --git a/src/mame/ddr/huebler.cpp b/src/mame/ddr/huebler.cpp
index 02651a584f8..a6984ac46fc 100644
--- a/src/mame/ddr/huebler.cpp
+++ b/src/mame/ddr/huebler.cpp
@@ -39,6 +39,7 @@ Cassette considerations
#include "huebler.h"
#include "speaker.h"
#include "screen.h"
+#include "utf8.h"
/* Keyboard */
diff --git a/src/mame/ddr/jtc.cpp b/src/mame/ddr/jtc.cpp
index 6dee793afa4..312b83e0497 100644
--- a/src/mame/ddr/jtc.cpp
+++ b/src/mame/ddr/jtc.cpp
@@ -28,6 +28,7 @@ To Do:
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
#define UB8830D_TAG "ub8830d"
#define CENTRONICS_TAG "centronics"
diff --git a/src/mame/epson/hx20.cpp b/src/mame/epson/hx20.cpp
index e578ad7f989..22297641210 100644
--- a/src/mame/epson/hx20.cpp
+++ b/src/mame/epson/hx20.cpp
@@ -43,6 +43,7 @@
#include "screen.h"
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
//**************************************************************************
diff --git a/src/mame/epson/px8.cpp b/src/mame/epson/px8.cpp
index 04314f805f7..4da56549a01 100644
--- a/src/mame/epson/px8.cpp
+++ b/src/mame/epson/px8.cpp
@@ -40,6 +40,8 @@
#include "px8.lh"
+#include "utf8.h"
+
/***************************************************************************
CONSTANTS
diff --git a/src/mame/gaelco/gaelco2_m.cpp b/src/mame/gaelco/gaelco2_m.cpp
index 86010953b73..cb2223358ca 100644
--- a/src/mame/gaelco/gaelco2_m.cpp
+++ b/src/mame/gaelco/gaelco2_m.cpp
@@ -261,11 +261,6 @@ void gaelco2_state::init_snowboar()
save_item(NAME(m_snowboard_latch));
}
-static u32 rol(u32 x, u8 c)
-{
- return (x << c) | (x >> (32 - c));
-}
-
static u16 get_lo(u32 x)
{
return ((x & 0x00000010) << 1) |
@@ -273,7 +268,7 @@ static u16 get_lo(u32 x)
((x & 0x40000000) >> 27) |
((x & 0x00000005) << 6) |
((x & 0x00000008) << 8) |
- rol(x & 0x00800040, 9) |
+ rotl_32(x & 0x00800040, 9) |
((x & 0x04000000) >> 16) |
((x & 0x00008000) >> 14) |
((x & 0x00002000) >> 11) |
diff --git a/src/mame/grundy/newbrain.cpp b/src/mame/grundy/newbrain.cpp
index 4613b6d0a33..65b220b3ed3 100644
--- a/src/mame/grundy/newbrain.cpp
+++ b/src/mame/grundy/newbrain.cpp
@@ -53,6 +53,8 @@
#include "speaker.h"
#include "screen.h"
+#include "utf8.h"
+
#include "newbrain.lh"
#include "newbraina.lh"
diff --git a/src/mame/handheld/gmaster.cpp b/src/mame/handheld/gmaster.cpp
index 0a7f77ba3ac..f40c3ce96a1 100644
--- a/src/mame/handheld/gmaster.cpp
+++ b/src/mame/handheld/gmaster.cpp
@@ -114,6 +114,7 @@ u32 gmaster_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, co
template<int N>
SED1520_UPDATE_CB(gmaster_state::screen_update_cb)
{
+ // LCD #0: top half, LCD #1: bottom half
rectangle clip = m_screen->visible_area();
if (N == 1)
clip.min_y = 32;
diff --git a/src/mame/handheld/hh_cops1.cpp b/src/mame/handheld/hh_cops1.cpp
index 62134295653..2cd2aaf0699 100644
--- a/src/mame/handheld/hh_cops1.cpp
+++ b/src/mame/handheld/hh_cops1.cpp
@@ -25,6 +25,8 @@ TODO:
#include "speaker.h"
+#include "utf8.h"
+
// internal artwork
#include "cambrp.lh"
#include "mbaskb.lh"
diff --git a/src/mame/handheld/hh_rw5000.cpp b/src/mame/handheld/hh_rw5000.cpp
index 0424ccad720..eb85d570585 100644
--- a/src/mame/handheld/hh_rw5000.cpp
+++ b/src/mame/handheld/hh_rw5000.cpp
@@ -27,6 +27,8 @@ ROM source notes when dumped from another model, but confident it's the same:
#include "speaker.h"
+#include "utf8.h"
+
// internal artwork
#include "autorace.lh"
#include "gravity.lh"
diff --git a/src/mame/handheld/hh_tms1k.cpp b/src/mame/handheld/hh_tms1k.cpp
index f73c36bef23..63927be59e7 100644
--- a/src/mame/handheld/hh_tms1k.cpp
+++ b/src/mame/handheld/hh_tms1k.cpp
@@ -24,6 +24,7 @@ not for newer ones (rev. E or TMS1400 MCUs). TMS0970/0980 osc. is on-die.
ROM source notes when dumped from another publisher, but confident it's the same:
- arrball: Tandy Zingo
- bcheetah: Fundimensions Incredible Brain Buggy
+- cchime: Videomaster Door Tunes
- cmsport: Conic Basketball
- cnbaskb: Cardinal Electronic Basketball
- cnfball: Elecsonic Football
@@ -67,7 +68,7 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
--------------------------------------------------------------------
@CP0904A TMS0970 1977, Milton Bradley Comp IV
@MP0905B TMS0970 1977, Parker Brothers Codename Sector
- *MP0027 TMS1000 1977, Texas Instruments OEM melody chip (used in eg. Chromatronics Chroma-Chime)
+ @MP0027A TMS1000 1977, Texas Instruments OEM melody chip (used in eg. Chromatronics Chroma-Chime)
*MP0057 TMS1000 1978, APH Student Speech+ (same ROM contents as TSI Speech+?)
*MP0121 TMS1000 1979, Waddingtons Compute-A-Tune
@MP0154 TMS1000 1979, Fonas 2 Player Baseball
@@ -221,6 +222,8 @@ on Joerg Woerner's datamath.org: http://www.datamath.org/IC_List.htm
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
// internal artwork
#include "t7in1ss.lh"
#include "alphie.lh"
@@ -1454,6 +1457,183 @@ ROM_END
/***************************************************************************
+ Chromatronics Chroma-Chime
+ * PCB label: DESIGNED BY CHROMATRONICS, 118-2-003
+ * TMS1000NL MP0027A (die label: 1000B, MP0027A)
+ * 1-bit sound with volume decay
+
+ It was sold as a kit (so, the buyer had to assemble the PCB themselves).
+ Chromatronics claims it's the first ever processor-based musical doorbell.
+ It's likely they asked TI for a generic melody chip. It would be odd for
+ a UK product to play the US anthem (B2) much longer than the UK one (B1).
+
+ known releases:
+ - UK(1): Chroma-Chime, published by Chromatronics
+ - UK(2): Door Tunes, published by Videomaster (Chromatronics PCB, not a kit)
+
+ The MCU was also used in Bell-Fruit Oranges and Lemons (slot machine).
+
+***************************************************************************/
+
+class cchime_state : public hh_tms1k_state
+{
+public:
+ cchime_state(const machine_config &mconfig, device_type type, const char *tag) :
+ hh_tms1k_state(mconfig, type, tag),
+ m_volume(*this, "volume"),
+ m_tempo_timer(*this, "tempo")
+ { }
+
+ void cchime(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+
+private:
+ required_device<filter_volume_device> m_volume;
+ required_device<timer_device> m_tempo_timer;
+
+ virtual void write_o(u16 data);
+ virtual void write_r(u32 data);
+ virtual u8 read_k();
+
+ TIMER_DEVICE_CALLBACK_MEMBER(speaker_decay_sim);
+ double m_speaker_volume = 0.0;
+};
+
+void cchime_state::machine_start()
+{
+ hh_tms1k_state::machine_start();
+ save_item(NAME(m_speaker_volume));
+}
+
+// handlers
+
+TIMER_DEVICE_CALLBACK_MEMBER(cchime_state::speaker_decay_sim)
+{
+ m_volume->flt_volume_set_volume(m_speaker_volume);
+
+ // volume decays when speaker is off, decay scale is determined by tone knob
+ const double step = (1.005 - 1.0005) / 100.0; // approximation
+ m_speaker_volume /= 1.005 - (double)(u8)m_inputs[4]->read() * step;
+}
+
+void cchime_state::write_r(u32 data)
+{
+ // R9: trigger tempo knob timer
+ if (m_r & ~data & 0x200)
+ {
+ const double step = 50 / 100.0; // approximation
+ m_tempo_timer->adjust(attotime::from_msec(50 + (u8)m_inputs[3]->read() * step));
+ }
+
+ // R10: power off when low (combined with doorbell)
+ if (~data & 0x400 && !m_inputs[2]->read())
+ power_off();
+
+ m_r = data;
+}
+
+void cchime_state::write_o(u16 data)
+{
+ // O6+O7: speaker out
+ m_speaker->level_w(BIT(~data, 6) & BIT(~data, 7));
+
+ // O2: trigger speaker on
+ if (~m_o & data & 4)
+ m_volume->flt_volume_set_volume(m_speaker_volume = 1.0);
+
+ m_o = data;
+}
+
+u8 cchime_state::read_k()
+{
+ u8 inp = 0;
+
+ // R0-R7 + K1-K4: selected tune
+ u8 rs = m_inputs[0]->read();
+ u8 ks = m_inputs[1]->read();
+ inp |= (m_r & rs) ? ks : 0;
+
+ // K4: rear doorbell
+ inp |= m_inputs[2]->read() << 1 & 4;
+
+ // K8: tempo knob state
+ if (m_tempo_timer->enabled())
+ inp |= 8;
+
+ return inp;
+}
+
+// config
+
+static INPUT_PORTS_START( cchime )
+ PORT_START("IN.0") // R0-R7
+ PORT_CONFNAME( 0xff, 0x01, "Switch 1")
+ PORT_CONFSETTING( 0x01, "A" )
+ PORT_CONFSETTING( 0x02, "B" )
+ PORT_CONFSETTING( 0x04, "C" )
+ PORT_CONFSETTING( 0x08, "D" )
+ PORT_CONFSETTING( 0x10, "E" )
+ PORT_CONFSETTING( 0x20, "F" )
+ PORT_CONFSETTING( 0x40, "G" )
+ PORT_CONFSETTING( 0x80, "H" )
+
+ PORT_START("IN.1") // K1-K4
+ PORT_CONFNAME( 0x07, 0x01, "Switch 2")
+ PORT_CONFSETTING( 0x01, "1" )
+ PORT_CONFSETTING( 0x02, "2" )
+ PORT_CONFSETTING( 0x04, "3" )
+
+ PORT_START("IN.2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Front Doorbell") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Rear Doorbell") PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, power_button, true)
+
+ PORT_START("IN.3")
+ PORT_ADJUSTER(50, "Tempo Knob")
+
+ PORT_START("IN.4")
+ PORT_ADJUSTER(50, "Tone Knob")
+INPUT_PORTS_END
+
+void cchime_state::cchime(machine_config &config)
+{
+ // basic machine hardware
+ TMS1000(config, m_maincpu, 400000); // approximation - RC osc. R=39K, C=47pF
+ m_maincpu->read_k().set(FUNC(cchime_state::read_k));
+ m_maincpu->write_o().set(FUNC(cchime_state::write_o));
+ m_maincpu->write_r().set(FUNC(cchime_state::write_r));
+
+ TIMER(config, "tempo").configure_generic(nullptr);
+
+ // no visual feedback!
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "volume", 0.25);
+ FILTER_VOLUME(config, m_volume).add_route(ALL_OUTPUTS, "mono", 1.0);
+
+ TIMER(config, "speaker_decay").configure_periodic(FUNC(cchime_state::speaker_decay_sim), attotime::from_msec(1));
+}
+
+// roms
+
+ROM_START( cchime )
+ ROM_REGION( 0x0400, "maincpu", 0 )
+ ROM_LOAD( "mp0027a.n1", 0x0000, 0x0400, CRC(8b5e2c4d) SHA1(5364d2836e9daefee2529a20c022e811bb3c7d89) )
+
+ ROM_REGION( 867, "maincpu:mpla", 0 )
+ ROM_LOAD( "tms1000_common2_micro.pla", 0, 867, CRC(d33da3cf) SHA1(13c4ebbca227818db75e6db0d45b66ba5e207776) )
+ ROM_REGION( 365, "maincpu:opla", 0 )
+ ROM_LOAD( "tms1000_cchime_output.pla", 0, 365, CRC(75d68c56) SHA1(85abde0ca0bcc605720551bea360498db350a7af) )
+ROM_END
+
+
+
+
+
+/***************************************************************************
+
Coleco Amaze-A-Tron, by Ralph Baer
* TMS1100 MCU, label MP3405 (die label same)
* 2-digit 7seg LED display + 2 LEDs(one red, one green), 1-bit sound
@@ -5263,7 +5443,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mmarvin_state::speaker_decay_sim)
m_volume->flt_volume_set_volume(m_speaker_volume);
// volume decays when speaker is off, decay scale is determined by tone knob
- double step = (1.01 - 1.003) / 100.0; // approximation
+ const double step = (1.01 - 1.003) / 100.0; // approximation
m_speaker_volume /= 1.01 - (double)(u8)m_inputs[5]->read() * step;
}
@@ -5279,9 +5459,9 @@ void mmarvin_state::write_r(u32 data)
m_inp_mux = data >> 2 & 0xf;
// R6: trigger speed knob timer
- if (m_r & 0x40 && ~data & 0x40)
+ if (m_r & ~data & 0x40)
{
- double step = (2100 - 130) / 100.0; // duration range is around 0.13s to 2.1s
+ const double step = (2100 - 130) / 100.0; // duration range is around 0.13s to 2.1s
m_speed_timer->adjust(attotime::from_msec(2100 - (u8)m_inputs[4]->read() * step));
}
@@ -5289,7 +5469,7 @@ void mmarvin_state::write_r(u32 data)
m_speaker->level_w(BIT(m_r, 10));
// R9: trigger speaker on
- if (m_r & 0x200 && ~data & 0x200)
+ if (m_r & ~data & 0x200)
m_volume->flt_volume_set_volume(m_speaker_volume = 1.0);
// R0,R1: digit/led select
@@ -5308,7 +5488,7 @@ void mmarvin_state::write_o(u16 data)
u8 mmarvin_state::read_k()
{
// K1-K4: multiplexed inputs
- // K8: speed dial state
+ // K8: speed knob state
return (read_inputs(4) & 7) | (m_speed_timer->enabled() ? 0 : 8);
}
@@ -14750,6 +14930,8 @@ CONS( 1981, tc7atc, 0, 0, tc7atc, tc7atc, tc7atc_state, emp
COMP( 1977, palmf31, 0, 0, palmf31, palmf31, palmf31_state, empty_init, "Canon", "Palmtronic F-31", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
COMP( 1977, palmmd8, 0, 0, palmmd8, palmmd8, palmmd8_state, empty_init, "Canon", "Palmtronic MD-8 (Multi 8)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+SYST( 1977, cchime, 0, 0, cchime, cchime, cchime_state, empty_init, "Chromatronics", "Chroma-Chime", MACHINE_SUPPORTS_SAVE )
+
CONS( 1978, amaztron, 0, 0, amaztron, amaztron, amaztron_state, empty_init, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // ***
COMP( 1979, zodiac, 0, 0, zodiac, zodiac, zodiac_state, empty_init, "Coleco", "Zodiac - The Astrology Computer", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
CONS( 1978, cqback, 0, 0, cqback, cqback, cqback_state, empty_init, "Coleco", "Electronic Quarterback", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/isc/compucolor.cpp b/src/mame/isc/compucolor.cpp
index e7a4d303c94..f355adff500 100644
--- a/src/mame/isc/compucolor.cpp
+++ b/src/mame/isc/compucolor.cpp
@@ -31,6 +31,7 @@
#include "emupal.h"
#include "screen.h"
#include "softlist_dev.h"
+#include "utf8.h"
#define I8080_TAG "ua2"
#define TMS5501_TAG "ud2"
diff --git a/src/mame/kaneko/kaneko_grap2.h b/src/mame/kaneko/kaneko_grap2.h
index 1c62c11f62b..967732d954e 100644
--- a/src/mame/kaneko/kaneko_grap2.h
+++ b/src/mame/kaneko/kaneko_grap2.h
@@ -74,7 +74,7 @@ protected:
virtual void rom_bank_updated() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return PALETTE_SIZE; }
+ virtual uint32_t palette_entries() const noexcept override { return PALETTE_SIZE; }
};
diff --git a/src/mame/konami/xmen.cpp b/src/mame/konami/xmen.cpp
index 8766e88d712..9ee01cd69b1 100644
--- a/src/mame/konami/xmen.cpp
+++ b/src/mame/konami/xmen.cpp
@@ -1,5 +1,6 @@
// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria
+// copyright-holders: Nicola Salmoria
+
/***************************************************************************
X-Men
@@ -16,26 +17,329 @@ but in-game is not. Buffer the left screen and then in-game is correct,
but the intro is not.
The board only has one of each gfx chip, the only additional chip not found
-on the 2/4p board is 053253. This chip is also on Run n Gun which is
+on the 2/4p board is 053253. This chip is also on Run n Gun which is
likewise a 2 screen game.
***************************************************************************/
#include "emu.h"
-#include "xmen.h"
+
+#include "k052109.h"
+#include "k053246_k053247_k055673.h"
+#include "k053251.h"
+#include "konami_helper.h"
#include "konamipt.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/eepromser.h"
+#include "machine/gen_latch.h"
+#include "machine/k054321.h"
+#include "machine/timer.h"
#include "machine/watchdog.h"
+#include "sound/k054539.h"
+#include "sound/okim6295.h"
#include "sound/ymopm.h"
+
#include "emupal.h"
+#include "screen.h"
#include "speaker.h"
#include "layout/generic.h"
+// configurable logging
+#define LOG_EEPROMW (1U << 1)
+#define LOG_SOUNDIRQ (1U << 2)
+#define LOG_OKI (1U << 3)
+
+//#define VERBOSE (LOG_GENERAL | LOG_EEPROMW | LOG_SOUNDIRQ | LOG_OKI)
+
+#include "logmacro.h"
+
+#define LOGEEPROMW(...) LOGMASKED(LOG_EEPROMW, __VA_ARGS__)
+#define LOGSOUNDIRQ(...) LOGMASKED(LOG_SOUNDIRQ, __VA_ARGS__)
+#define LOGOKI(...) LOGMASKED(LOG_OKI, __VA_ARGS__)
+
+
+namespace {
+
+class xmen_state : public driver_device
+{
+public:
+ xmen_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu"),
+ m_k052109(*this, "k052109"),
+ m_k053246(*this, "k053246"),
+ m_k053251(*this, "k053251"),
+ m_screen(*this, "screen"),
+ m_z80bank(*this, "z80bank"),
+ m_okibank(*this, "okibank"),
+ m_eeprom_out(*this, "EEPROMOUT")
+ { }
+
+ void xmen(machine_config &config);
+ void xmenabl(machine_config &config);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ // video-related
+ uint8_t m_layer_colorbase[3]{};
+ uint8_t m_sprite_colorbase = 0;
+ int m_layerpri[3]{};
+ bool m_tilemap_select;
+
+ // devices
+ required_device<cpu_device> m_maincpu;
+ optional_device<cpu_device> m_audiocpu;
+ required_device<k052109_device> m_k052109;
+ required_device<k053247_device> m_k053246;
+ required_device<k053251_device> m_k053251;
+ required_device<screen_device> m_screen;
+
+ void eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+ void _18fa00_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
+
+ void base(machine_config &config);
+ void sound_hardware(machine_config &config);
+
+private:
+ optional_memory_bank m_z80bank;
+ optional_memory_bank m_okibank;
+
+ required_ioport m_eeprom_out;
+
+ // misc
+ uint8_t m_vblank_irq_mask = 0;
+
+ void sound_bankswitch_w(uint8_t data);
+
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline);
+ K052109_CB_MEMBER(tile_callback);
+ K053246_CB_MEMBER(sprite_callback);
+
+ void base_main_map(address_map &map);
+ void bootleg_main_map(address_map &map);
+ void main_map(address_map &map);
+ void oki_map(address_map &map);
+ void sound_map(address_map &map);
+
+ void bootleg_sound_hardware(machine_config &config);
+};
+
+class xmen6p_state : public xmen_state
+{
+public:
+ xmen6p_state(const machine_config &mconfig, device_type type, const char *tag) :
+ xmen_state(mconfig, type, tag),
+ m_spriteram(*this, "spriteram%u", 0),
+ m_tilemap(*this, "tilemap%u", 0)
+ { }
+
+ void xmen6p(machine_config &config);
+
+ DECLARE_READ_LINE_MEMBER(frame_r);
+
+protected:
+ virtual void video_start() override;
+
+private:
+ std::unique_ptr<bitmap_ind16> m_screen_bitmap[2]; // 0 left screen, 1 right screen
+ required_shared_ptr_array<uint16_t, 2> m_spriteram;
+ required_shared_ptr_array<uint16_t, 4> m_tilemap;
+ uint16_t *m_k053247_ram;
+
+ template <uint8_t Which> uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_WRITE_LINE_MEMBER(screen_vblank);
+
+ void main_map(address_map &map);
+};
+
+
+// video
+
+/***************************************************************************
+
+ Callbacks for the K052109
+
+***************************************************************************/
+
+K052109_CB_MEMBER(xmen_state::tile_callback)
+{
+ // (color & 0x02) is flip y handled internally by the 052109
+ if (layer == 0)
+ *color = m_layer_colorbase[layer] + ((*color & 0xf0) >> 4);
+ else
+ *color = m_layer_colorbase[layer] + ((*color & 0x7c) >> 2);
+}
+
+/***************************************************************************
+
+ Callbacks for the K053247
+
+***************************************************************************/
+
+K053246_CB_MEMBER(xmen_state::sprite_callback)
+{
+ int const pri = (*color & 0x00e0) >> 4; // ???????
+
+ if (pri <= m_layerpri[2])
+ *priority_mask = 0;
+ else if (pri > m_layerpri[2] && pri <= m_layerpri[1])
+ *priority_mask = 0xf0;
+ else if (pri > m_layerpri[1] && pri <= m_layerpri[0])
+ *priority_mask = 0xf0 | 0xcc;
+ else
+ *priority_mask = 0xf0 | 0xcc | 0xaa;
+
+ *color = m_sprite_colorbase + (*color & 0x001f);
+}
+
+
+
+/***************************************************************************
+
+ Start the video hardware emulation.
+
+***************************************************************************/
+
+void xmen6p_state::video_start()
+{
+ m_k053246->k053247_get_ram(&m_k053247_ram);
+
+ m_screen_bitmap[0] = std::make_unique<bitmap_ind16>(64 * 8, 32 * 8);
+ m_screen_bitmap[1] = std::make_unique<bitmap_ind16>(64 * 8, 32 * 8);
+
+ save_item(NAME(*m_screen_bitmap[0]));
+ save_item(NAME(*m_screen_bitmap[1]));
+}
+
+
+/***************************************************************************
+
+ Display refresh
+
+***************************************************************************/
+
+uint32_t xmen_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ int const bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
+ m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
+ m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3);
+ m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0);
+ m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2);
+
+ m_k052109->tilemap_update();
+
+ int layer[3];
+
+ layer[0] = 0;
+ m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3);
+ layer[1] = 1;
+ m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0);
+ layer[2] = 2;
+ m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2);
+
+ konami_sortlayers3(layer, m_layerpri);
+
+ screen.priority().fill(0, cliprect);
+ // note the '+1' in the background color!!!
+ bitmap.fill(16 * bg_colorbase + 1, cliprect);
+ m_k052109->tilemap_draw(screen, bitmap, cliprect, layer[0], 0, 1);
+ m_k052109->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
+ m_k052109->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
+
+ /* this isn't supported anymore and it is unsure if still needed; keeping here for reference
+ pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
+ m_k053246->k053247_sprites_draw(bitmap, cliprect);
+ return 0;
+}
+
+
+template <uint8_t Which>
+uint32_t xmen6p_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ for (int y = 0; y < 32 * 8; y++)
+ {
+ uint16_t *const line_dest = &bitmap.pix(y);
+ uint16_t const *const line_src = &m_screen_bitmap[Which]->pix(y);
+
+ for (int x = 12 * 8; x < 52 * 8; x++)
+ line_dest[x] = line_src[x];
+ }
+
+ return 0;
+}
+
+// my lefts and rights are mixed up in several places..
+WRITE_LINE_MEMBER(xmen6p_state::screen_vblank)
+{
+ // rising edge
+ if (state)
+ {
+ rectangle cliprect;
+
+ // const rectangle *visarea = m_screen->visible_area();
+ // cliprect = *visarea;
+ cliprect.set(0, 64 * 8 - 1, 2 * 8, 30 * 8 - 1);
+
+ int index = m_screen->frame_number() & 1;
+ bitmap_ind16 *renderbitmap = m_screen_bitmap[index].get();
+
+ // copy the desired spritelist to the chip
+ memcpy(m_k053247_ram, m_spriteram[index], 0x1000);
+
+ /* we write the entire content of the tileram to the chip to ensure
+ everything gets marked as dirty and the desired tilemap is rendered
+ this is not very efficient!
+ */
+ index += m_tilemap_select ? 2 : 0;
+ for (int offset = 0; offset < (0xc000 / 2); offset++)
+ {
+ if (index == 0 || (offset != 0x1c80 && offset != 0x1e80))
+ m_k052109->write(offset, m_tilemap[index][offset] & 0x00ff);
+ }
+
+ int const bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
+ m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
+ m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3);
+ m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0);
+ m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2);
+
+ m_k052109->tilemap_update();
+
+ int layer[3];
+
+ m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3);
+ layer[0] = 0;
+ m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0);
+ layer[1] = 1;
+ m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2);
+ layer[2] = 2;
+
+ konami_sortlayers3(layer, m_layerpri);
+
+ m_screen->priority().fill(0, cliprect);
+ // note the '+1' in the background color!!!
+ renderbitmap->fill(16 * bg_colorbase + 1, cliprect);
+ m_k052109->tilemap_draw(*m_screen, *renderbitmap, cliprect, layer[0], 0, 1);
+ m_k052109->tilemap_draw(*m_screen, *renderbitmap, cliprect, layer[1], 0, 2);
+ m_k052109->tilemap_draw(*m_screen, *renderbitmap, cliprect, layer[2], 0, 4);
+
+ /* this isn't supported anymore and it is unsure if still needed; keeping here for reference
+ pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
+ m_k053246->k053247_sprites_draw(*renderbitmap, cliprect);
+ }
+}
+
+
+// machine
+
/***************************************************************************
EEPROM
@@ -44,40 +348,42 @@ likewise a 2 screen game.
void xmen_state::eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- logerror("%06x: write %04x to 108000\n", m_maincpu->pc(),data);
+ LOGEEPROMW("%06x: write %04x to 108000\n", m_maincpu->pc(), data);
if (ACCESSING_BITS_0_7)
{
- /* bit 0 = coin counter */
+ // bit 0 = coin counter
machine().bookkeeping().coin_counter_w(0, data & 0x01);
- /* bit 2 is data */
- /* bit 3 is clock (active high) */
- /* bit 4 is cs (active low) */
- ioport("EEPROMOUT")->write(data, 0xff);
+ // bit 2 is data
+ // bit 3 is clock (active high)
+ // bit 4 is cs (active low)
+ m_eeprom_out->write(data, 0xff);
- /* bit 5 is enabled in IRQ3, disabled in IRQ5 (sprite DMA start?) */
- /* bit 7 used in xmen6p to select other tilemap bank (see halfway level 5) */
- m_xmen6p_tilemap_select = BIT(data, 7);
+ // bit 5 is enabled in IRQ3, disabled in IRQ5 (sprite DMA start?)
+ // bit 7 used in xmen6p to select other tilemap bank (see halfway level 5)
+ m_tilemap_select = BIT(data, 7);
}
if (ACCESSING_BITS_8_15)
{
- /* bit 8 = enable sprite ROM reading */
- m_k053246->k053246_set_objcha_line( (data & 0x0100) ? ASSERT_LINE : CLEAR_LINE);
- /* bit 9 = enable char ROM reading through the video RAM */
- /* bit 10 = sound irq, but with some kind of hold */
+ // bit 8 = enable sprite ROM reading
+ m_k053246->k053246_set_objcha_line((data & 0x0100) ? ASSERT_LINE : CLEAR_LINE);
+ // bit 9 = enable char ROM reading through the video RAM
+ // bit 10 = sound irq, but with some kind of hold
m_k052109->set_rmrd_line((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
- if(data & 0x400) {
- logerror("tick!\n");
- m_audiocpu->set_input_line(0, HOLD_LINE);
+ if (data & 0x400)
+ {
+ LOGSOUNDIRQ("tick!\n");
+ if (m_audiocpu)
+ m_audiocpu->set_input_line(0, HOLD_LINE);
}
}
}
-void xmen_state::xmen_18fa00_w(offs_t offset, uint16_t data, uint16_t mem_mask)
+void xmen_state::_18fa00_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
- if(ACCESSING_BITS_0_7)
+ if (ACCESSING_BITS_0_7)
{
- /* bit 2 is interrupt enable */
+ // bit 2 is interrupt enable
m_vblank_irq_mask = data & 0x04;
}
}
@@ -88,60 +394,79 @@ void xmen_state::sound_bankswitch_w(uint8_t data)
}
-void xmen_state::main_map(address_map &map)
+void xmen_state::base_main_map(address_map &map)
{
- map(0x000000, 0x03ffff).rom();
- map(0x080000, 0x0fffff).rom();
+ map(0x000000, 0x0fffff).rom();
map(0x100000, 0x100fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w));
map(0x101000, 0x101fff).ram();
map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
map(0x108000, 0x108001).w(FUNC(xmen_state::eeprom_w));
map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_w));
- map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::write)).umask16(0x00ff);
map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
map(0x10a002, 0x10a003).portr("P1_P3");
map(0x10a004, 0x10a005).portr("EEPROM");
map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_r));
- map(0x110000, 0x113fff).ram(); /* main RAM */
+ map(0x110000, 0x113fff).ram(); // main RAM
map(0x18c000, 0x197fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write)).umask16(0x00ff);
- map(0x18fa00, 0x18fa01).w(FUNC(xmen_state::xmen_18fa00_w));
+ map(0x18fa00, 0x18fa01).w(FUNC(xmen_state::_18fa00_w));
+}
+
+void xmen_state::main_map(address_map &map)
+{
+ base_main_map(map);
+
+ map(0x108040, 0x10805f).m("k054321", FUNC(k054321_device::main_map)).umask16(0x00ff);
+}
+
+void xmen_state::bootleg_main_map(address_map &map)
+{
+ base_main_map(map);
+
+ // map(0x103ffe, 0x103fff) // sound related, too?
+ map(0x10804d, 0x10804d).lw8(NAME([this] (uint8_t data) { m_okibank->set_entry(data & 0x0f); LOGOKI("oki bank :%02x\n", data); })); // TODO: verify once oki ROM 1 is redumped / confirmed
+ map(0x10804f, 0x10804f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
}
void xmen_state::sound_map(address_map &map)
{
map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("z80bank");
+ map(0x8000, 0xbfff).bankr(m_z80bank);
map(0xc000, 0xdfff).ram();
- map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write));
+ map(0xe000, 0xe22f).rw("k054539", FUNC(k054539_device::read), FUNC(k054539_device::write));
map(0xe800, 0xe801).mirror(0x0400).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
- map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map));
+ map(0xf000, 0xf003).m("k054321", FUNC(k054321_device::sound_map));
map(0xf800, 0xf800).w(FUNC(xmen_state::sound_bankswitch_w));
}
+void xmen_state::oki_map(address_map &map)
+{
+ map(0x00000, 0x2ffff).rom();
+ map(0x30000, 0x3ffff).bankr(m_okibank);
+}
-void xmen_state::_6p_main_map(address_map &map)
+void xmen6p_state::main_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x080000, 0x0fffff).rom();
- map(0x100000, 0x100fff).ram().share("spriteram0"); // left screen
+ map(0x100000, 0x100fff).ram().share(m_spriteram[0]); // left screen
map(0x101000, 0x101fff).ram();
- map(0x102000, 0x102fff).ram().share("spriteram1"); // right screen
- map(0x103000, 0x103fff).ram(); /* 6p - a buffer? */
+ map(0x102000, 0x102fff).ram().share(m_spriteram[1]); // right screen
+ map(0x103000, 0x103fff).ram(); // 6p - a buffer?
map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette");
- map(0x108000, 0x108001).w(FUNC(xmen_state::eeprom_w));
- map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_w)); /* sprites */
- map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff);
+ map(0x108000, 0x108001).w(FUNC(xmen6p_state::eeprom_w));
+ map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_w)); // sprites
+ map(0x108040, 0x10805f).m("k054321", FUNC(k054321_device::main_map)).umask16(0x00ff);
map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::write)).umask16(0x00ff);
map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w));
map(0x10a002, 0x10a003).portr("P1_P3");
map(0x10a004, 0x10a005).portr("EEPROM");
map(0x10a006, 0x10a007).portr("P5_P6");
- map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_r)); /* sprites */
- map(0x110000, 0x113fff).ram(); /* main RAM */
-/* map(0x18c000, 0x197fff).w("k052109", FUNC(k052109_device:write)).umask16(0x00ff).share("tilemapleft"); */
- map(0x18c000, 0x197fff).ram().share("tilemap0"); // left screen
- map(0x18fa00, 0x18fa01).w(FUNC(xmen_state::xmen_18fa00_w));
+ map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_r)); // sprites
+ map(0x110000, 0x113fff).ram(); // main RAM
+// map(0x18c000, 0x197fff).w("k052109", FUNC(k052109_device:write)).umask16(0x00ff).share("tilemapleft");
+ map(0x18c000, 0x197fff).ram().share(m_tilemap[0]); // left screen
+ map(0x18fa00, 0x18fa01).w(FUNC(xmen6p_state::_18fa00_w));
/*
map(0x1ac000, 0x1af7ff).readonly();
map(0x1ac000, 0x1af7ff).writeonly();
@@ -152,9 +477,9 @@ void xmen_state::_6p_main_map(address_map &map)
map(0x1b4000, 0x1b77ff).readonly();
map(0x1b4000, 0x1b77ff).writeonly();
*/
- map(0x1ac000, 0x1b7fff).ram().share("tilemap1"); // right screen
+ map(0x1ac000, 0x1b7fff).ram().share(m_tilemap[1]); // right screen
- /* what are the regions below buffers? (used by hw or software?) */
+ // what are the regions below buffers? (used by hw or software?)
/*
map(0x1cc000, 0x1cf7ff).readonly();
map(0x1cc000, 0x1cf7ff).writeonly();
@@ -162,9 +487,9 @@ void xmen_state::_6p_main_map(address_map &map)
map(0x1d0000, 0x1d37ff).readonly();
map(0x1d0000, 0x1d37ff).writeonly();
*/
- map(0x1cc000, 0x1d7fff).ram().share("tilemap2"); // left screen
+ map(0x1cc000, 0x1d7fff).ram().share(m_tilemap[2]); // left screen
- /* whats the stuff below, buffers? */
+ // whats the stuff below, buffers?
/*
map(0x1ec000, 0x1ef7ff).readonly();
map(0x1ec000, 0x1ef7ff).writeonly();
@@ -173,7 +498,7 @@ void xmen_state::_6p_main_map(address_map &map)
map(0x1f4000, 0x1f77ff).readonly();
map(0x1f4000, 0x1f77ff).writeonly();
*/
- map(0x1ec000, 0x1f7fff).ram().share("tilemap3"); // right screen
+ map(0x1ec000, 0x1f7fff).ram().share(m_tilemap[3]); // right screen
}
@@ -187,16 +512,16 @@ static INPUT_PORTS_START( xmen )
KONAMI16_MSB_UDLR(4, IPT_BUTTON3, IPT_COIN4 )
PORT_START("EEPROM")
- PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
+ PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START4 )
- PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
+ PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_SERVICE_NO_TOGGLE( 0x4000, IP_ACTIVE_LOW )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_START( "EEPROMOUT" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
@@ -216,16 +541,16 @@ static INPUT_PORTS_START( xmen2p )
PORT_START("EEPROM")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE2 )
- PORT_BIT( 0x003c, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
+ PORT_BIT( 0x003c, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
+ PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_SERVICE_NO_TOGGLE( 0x4000, IP_ACTIVE_LOW )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_START( "EEPROMOUT" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
@@ -233,7 +558,7 @@ static INPUT_PORTS_START( xmen2p )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
INPUT_PORTS_END
-READ_LINE_MEMBER(xmen_state::xmen_frame_r)
+READ_LINE_MEMBER(xmen6p_state::frame_r)
{
return m_screen->frame_number() & 1;
}
@@ -252,17 +577,17 @@ static INPUT_PORTS_START( xmen6p )
KONAMI16_MSB_UDLR(6, IPT_BUTTON3, IPT_COIN6 )
PORT_START("EEPROM")
- PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */
+ PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused?
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START4 )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_START5 ) /* not verified */
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_START6 ) /* not verified */
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_START5 ) // not verified
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_START6 ) // not verified
PORT_SERVICE_NO_TOGGLE( 0x4000, IP_ACTIVE_LOW )
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(xmen_state, xmen_frame_r) // screen indicator?
+ PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(xmen6p_state, frame_r) // screen indicator?
PORT_START( "EEPROMOUT" )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
@@ -273,14 +598,23 @@ INPUT_PORTS_END
void xmen_state::machine_start()
{
- m_z80bank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
- m_z80bank->set_entry(0);
+ if (m_z80bank)
+ {
+ m_z80bank->configure_entries(0, 8, memregion("audiocpu")->base(), 0x4000);
+ m_z80bank->set_entry(0);
+ }
+
+ if (m_okibank)
+ {
+ m_okibank->configure_entries(0, 16, memregion("oki")->base(), 0x10000);
+ m_okibank->set_entry(0);
+ }
save_item(NAME(m_sprite_colorbase));
save_item(NAME(m_layer_colorbase));
save_item(NAME(m_layerpri));
save_item(NAME(m_vblank_irq_mask));
- save_item(NAME(m_xmen6p_tilemap_select));
+ save_item(NAME(m_tilemap_select));
}
void xmen_state::machine_reset()
@@ -295,39 +629,64 @@ void xmen_state::machine_reset()
m_vblank_irq_mask = 0;
}
-TIMER_DEVICE_CALLBACK_MEMBER(xmen_state::xmen_scanline)
+TIMER_DEVICE_CALLBACK_MEMBER(xmen_state::scanline)
{
- int scanline = param;
+ int const scanline = param;
- if(scanline == 240 && m_vblank_irq_mask) // vblank-out irq
+ if (scanline == 240 && m_vblank_irq_mask) // vblank-out irq
m_maincpu->set_input_line(3, HOLD_LINE);
- if(scanline == 0) // sprite DMA irq?
+ if (scanline == 0) // sprite DMA irq?
m_maincpu->set_input_line(5, HOLD_LINE);
}
-void xmen_state::xmen(machine_config &config)
+void xmen_state::sound_hardware(machine_config &config)
{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000)); /* verified on pcb */
- m_maincpu->set_addrmap(AS_PROGRAM, &xmen_state::main_map);
+ Z80(config, m_audiocpu, XTAL(16'000'000) / 2); // verified on PCB
+ m_audiocpu->set_addrmap(AS_PROGRAM, &xmen_state::sound_map);
- TIMER(config, "scantimer").configure_scanline(FUNC(xmen_state::xmen_scanline), "screen", 0, 1);
+ // sound hardware
+ SPEAKER(config, "lspeaker").front_left();
+ SPEAKER(config, "rspeaker").front_right();
- Z80(config, m_audiocpu, XTAL(16'000'000)/2); /* verified on pcb */
- m_audiocpu->set_addrmap(AS_PROGRAM, &xmen_state::sound_map);
+ K054321(config, "k054321", "lspeaker", "rspeaker");
+
+ YM2151(config, "ymsnd", XTAL(16'000'000) / 4).add_route(0, "lspeaker", 0.20).add_route(1, "rspeaker", 0.20); // verified on PCB
+
+ k054539_device &k054539(K054539(config, "k054539", XTAL(18'432'000)));
+ k054539.add_route(0, "rspeaker", 1.00);
+ k054539.add_route(1, "lspeaker", 1.00);
+}
+
+void xmen_state::bootleg_sound_hardware(machine_config &config)
+{
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+
+ okim6295_device &oki(OKIM6295(config, "oki", 1'000'000, okim6295_device::PIN7_HIGH)); // clock and pin7 not verified
+ oki.set_addrmap(0, &xmen_state::oki_map);
+ oki.add_route(ALL_OUTPUTS, "mono", 1.0);
+}
+
+void xmen_state::base(machine_config &config)
+{
+ // basic machine hardware
+ M68000(config, m_maincpu, XTAL(16'000'000)); // verified on PCB
+ m_maincpu->set_addrmap(AS_PROGRAM, &xmen_state::main_map);
+
+ TIMER(config, "scantimer").configure_scanline(FUNC(xmen_state::scanline), "screen", 0, 1);
EEPROM_ER5911_8BIT(config, "eeprom");
WATCHDOG_TIMER(config, "watchdog");
- /* video hardware */
+ // video hardware
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(59.17); /* verified on pcb */
+ m_screen->set_refresh_hz(59.17); // verified on PCB
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(64*8, 32*8);
- m_screen->set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1 ); /* correct, same issue of tmnt2 */
- m_screen->set_screen_update(FUNC(xmen_state::screen_update_xmen));
+ m_screen->set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1 ); // correct, same issue of tmnt2
+ m_screen->set_screen_update(FUNC(xmen_state::screen_update));
m_screen->set_palette("palette");
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048).enable_shadows();
@@ -343,45 +702,40 @@ void xmen_state::xmen(machine_config &config)
m_k053246->set_palette("palette");
K053251(config, m_k053251, 0);
+}
- /* sound hardware */
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- K054321(config, m_k054321, "lspeaker", "rspeaker");
-
- YM2151(config, "ymsnd", XTAL(16'000'000)/4).add_route(0, "lspeaker", 0.20).add_route(1, "rspeaker", 0.20); /* verified on pcb */
+void xmen_state::xmen(machine_config &config)
+{
+ base(config);
- K054539(config, m_k054539, XTAL(18'432'000));
- m_k054539->add_route(0, "rspeaker", 1.00);
- m_k054539->add_route(1, "lspeaker", 1.00);
+ sound_hardware(config);
}
-void xmen_state::xmen6p(machine_config &config)
+void xmen_state::xmenabl(machine_config &config)
{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(16'000'000));
- m_maincpu->set_addrmap(AS_PROGRAM, &xmen_state::_6p_main_map);
+ base(config);
- TIMER(config, "scantimer").configure_scanline(FUNC(xmen_state::xmen_scanline), "screen", 0, 1);
+ m_maincpu->set_addrmap(AS_PROGRAM, &xmen_state::bootleg_main_map);
- Z80(config, m_audiocpu, XTAL(16'000'000)/2);
- m_audiocpu->set_addrmap(AS_PROGRAM, &xmen_state::sound_map);
+ bootleg_sound_hardware(config);
+}
- EEPROM_ER5911_8BIT(config, "eeprom");
+void xmen6p_state::xmen6p(machine_config &config)
+{
+ xmen(config);
- WATCHDOG_TIMER(config, "watchdog");
+ // basic machine hardware
+ m_maincpu->set_addrmap(AS_PROGRAM, &xmen6p_state::main_map);
- /* video hardware */
- PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048).enable_shadows();
+ // video hardware
config.set_default_layout(layout_dualhsxs);
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ SCREEN(config.replace(), m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(64*8, 32*8);
m_screen->set_visarea(12*8, 48*8-1, 2*8, 30*8-1);
- m_screen->set_screen_update(FUNC(xmen_state::screen_update_xmen6p_left));
+ m_screen->set_screen_update(FUNC(xmen6p_state::screen_update<0>));
m_screen->set_palette("palette");
screen_device &screen2(SCREEN(config, "screen2", SCREEN_TYPE_RASTER));
@@ -389,36 +743,11 @@ void xmen_state::xmen6p(machine_config &config)
screen2.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen2.set_size(64*8, 32*8);
screen2.set_visarea(16*8, 52*8-1, 2*8, 30*8-1);
- screen2.set_screen_update(FUNC(xmen_state::screen_update_xmen6p_right));
- screen2.screen_vblank().set(FUNC(xmen_state::screen_vblank_xmen6p));
+ screen2.set_screen_update(FUNC(xmen6p_state::screen_update<1>));
+ screen2.screen_vblank().set(FUNC(xmen6p_state::screen_vblank));
screen2.set_palette("palette");
- MCFG_VIDEO_START_OVERRIDE(xmen_state,xmen6p)
-
- K052109(config, m_k052109, 0);
- m_k052109->set_palette("palette");
- m_k052109->set_screen(nullptr);
- m_k052109->set_tile_callback(FUNC(xmen_state::tile_callback));
-
- K053246(config, m_k053246, 0);
- m_k053246->set_sprite_callback(FUNC(xmen_state::sprite_callback));
- m_k053246->set_config(NORMAL_PLANE_ORDER, 53, -2);
m_k053246->set_screen(m_screen);
- m_k053246->set_palette("palette");
-
- K053251(config, m_k053251, 0);
-
- K054321(config, m_k054321, "lspeaker", "rspeaker");
-
- /* sound hardware */
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- YM2151(config, "ymsnd", XTAL(16'000'000)/4).add_route(0, "lspeaker", 0.20).add_route(1, "rspeaker", 0.20);
-
- K054539(config, m_k054539, XTAL(18'432'000));
- m_k054539->add_route(0, "rspeaker", 1.00);
- m_k054539->add_route(1, "lspeaker", 1.00);
}
@@ -480,7 +809,7 @@ void xmen_state::xmen6p(machine_config &config)
ROM_START( xmen )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-eba04.10d", 0x00000, 0x20000, CRC(3588c5ec) SHA1(7966e7259038468845dafd19e5f7fc576c2901fa) ) /* Europe 4 Player version */
+ ROM_LOAD16_BYTE( "065-eba04.10d", 0x00000, 0x20000, CRC(3588c5ec) SHA1(7966e7259038468845dafd19e5f7fc576c2901fa) ) // Europe 4 Player version
ROM_LOAD16_BYTE( "065-eba05.10f", 0x00001, 0x20000, CRC(79ce32f8) SHA1(1a21b38d4a82103d78e246aca68ed3e4afaf60f3) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -488,17 +817,17 @@ ROM_START( xmen )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -507,7 +836,7 @@ ROM_END
ROM_START( xmenu )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-ubb04.10d", 0x00000, 0x20000, CRC(f896c93b) SHA1(0bee89fe4d36a9b2ded864770198eb2df6903580) ) /* US 4 Player version */
+ ROM_LOAD16_BYTE( "065-ubb04.10d", 0x00000, 0x20000, CRC(f896c93b) SHA1(0bee89fe4d36a9b2ded864770198eb2df6903580) ) // US 4 Player version
ROM_LOAD16_BYTE( "065-ubb05.10f", 0x00001, 0x20000, CRC(e02e5d64) SHA1(9838c1cf9862db3ca70a23ef5f3c5883729c4e0c) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -515,17 +844,17 @@ ROM_START( xmenu )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -534,7 +863,7 @@ ROM_END
ROM_START( xmenua )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-ueb04.10d", 0x00000, 0x20000, CRC(eee4e7ef) SHA1(72fe588bc58c692e7f9891f3e89c7d6fcc28c480) ) /* US 4 Player version */
+ ROM_LOAD16_BYTE( "065-ueb04.10d", 0x00000, 0x20000, CRC(eee4e7ef) SHA1(72fe588bc58c692e7f9891f3e89c7d6fcc28c480) ) // US 4 Player version
ROM_LOAD16_BYTE( "065-ueb05.10f", 0x00001, 0x20000, CRC(c3b2ffde) SHA1(27b32429c8c35cf15d1e5437535c4c335eee2118) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -542,17 +871,17 @@ ROM_START( xmenua )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -561,7 +890,7 @@ ROM_END
ROM_START( xmenj )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-jba04.10d", 0x00000, 0x20000, CRC(d86cf5eb) SHA1(8bf67eb6cdb7187142557c27b058282886984a61) ) /* Japan 4 Player version */
+ ROM_LOAD16_BYTE( "065-jba04.10d", 0x00000, 0x20000, CRC(d86cf5eb) SHA1(8bf67eb6cdb7187142557c27b058282886984a61) ) // Japan 4 Player version
ROM_LOAD16_BYTE( "065-jba05.10f", 0x00001, 0x20000, CRC(abbc8126) SHA1(482a3c9be45b9d77460bd3df94e3c6cf285e63a2) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -569,17 +898,17 @@ ROM_START( xmenj )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -588,7 +917,7 @@ ROM_END
ROM_START( xmenja )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-jea04.10d", 0x00000, 0x20000, CRC(655a61d6) SHA1(30a50b0a13205252d1cec6b6a6300e25c2f376c6) ) /* Japan 4 Player version */
+ ROM_LOAD16_BYTE( "065-jea04.10d", 0x00000, 0x20000, CRC(655a61d6) SHA1(30a50b0a13205252d1cec6b6a6300e25c2f376c6) ) // Japan 4 Player version
ROM_LOAD16_BYTE( "065-jea05.10f", 0x00001, 0x20000, CRC(7ea9fc84) SHA1(767f957c0c2f6a2d938d9e37388a17a6bce01dd8) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -596,17 +925,17 @@ ROM_START( xmenja )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -615,7 +944,7 @@ ROM_END
ROM_START( xmena )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-aea04.10d", 0x00000, 0x20000, CRC(0e8d2e98) SHA1(f58613bd8719566ae04d4b5f03864524a7c86a65) ) /* Asia 4 Player version */
+ ROM_LOAD16_BYTE( "065-aea04.10d", 0x00000, 0x20000, CRC(0e8d2e98) SHA1(f58613bd8719566ae04d4b5f03864524a7c86a65) ) // Asia 4 Player version
ROM_LOAD16_BYTE( "065-aea05.10f", 0x00001, 0x20000, CRC(0b742a4e) SHA1(ed9c986261e72af7a80b44f9c2c576c265807e90) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -623,17 +952,17 @@ ROM_START( xmena )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -642,7 +971,7 @@ ROM_END
ROM_START( xmenaa )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-ada04.10d", 0x00000, 0x20000, CRC(b8276624) SHA1(5b601393faa4bf578d84b590eb2360ad400368a5) ) /* Asia 4 Player version */
+ ROM_LOAD16_BYTE( "065-ada04.10d", 0x00000, 0x20000, CRC(b8276624) SHA1(5b601393faa4bf578d84b590eb2360ad400368a5) ) // Asia 4 Player version
ROM_LOAD16_BYTE( "065-ada05.10f", 0x00001, 0x20000, CRC(c68582ad) SHA1(d2ca23cc0ad08e7f3d5c533f6fe43d4c215c114e) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -650,17 +979,17 @@ ROM_START( xmenaa )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -669,7 +998,7 @@ ROM_END
ROM_START( xmen2pe )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-eaa04.10d", 0x00000, 0x20000, CRC(502861e7) SHA1(f96aab2d2006703065de5bd7e341f929d04f5f60) ) /* Europe 2 Player version */
+ ROM_LOAD16_BYTE( "065-eaa04.10d", 0x00000, 0x20000, CRC(502861e7) SHA1(f96aab2d2006703065de5bd7e341f929d04f5f60) ) // Europe 2 Player version
ROM_LOAD16_BYTE( "065-eaa05.10f", 0x00001, 0x20000, CRC(ca6071bf) SHA1(454ddc3b598389e960e87e577a01a7de71d1f591) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -677,17 +1006,17 @@ ROM_START( xmen2pe )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -696,7 +1025,7 @@ ROM_END
ROM_START( xmen2pu )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-uab04.10d", 0x00000, 0x20000, CRC(ff003db1) SHA1(b8aeb98dc0a38f0bda152d893fb60679bbdbadb3) ) /* US 2 Player version */
+ ROM_LOAD16_BYTE( "065-uab04.10d", 0x00000, 0x20000, CRC(ff003db1) SHA1(b8aeb98dc0a38f0bda152d893fb60679bbdbadb3) ) // US 2 Player version
ROM_LOAD16_BYTE( "065-uab05.10f", 0x00001, 0x20000, CRC(4e99a943) SHA1(66b47de497a116b2002cc5496c1a3f4173a55bc5) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -704,17 +1033,17 @@ ROM_START( xmen2pu )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -723,7 +1052,7 @@ ROM_END
ROM_START( xmen2pj )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-jaa04.10d", 0x00000, 0x20000, CRC(66746339) SHA1(8cc5f5deb4178b0444ffc5974940a30cb003114e) ) /* Japan 2 Player version */
+ ROM_LOAD16_BYTE( "065-jaa04.10d", 0x00000, 0x20000, CRC(66746339) SHA1(8cc5f5deb4178b0444ffc5974940a30cb003114e) ) // Japan 2 Player version
ROM_LOAD16_BYTE( "065-jaa05.10f", 0x00001, 0x20000, CRC(1215b706) SHA1(b746dedab9c509b5cd941f0f4ddd3709e8a58cce) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -731,17 +1060,17 @@ ROM_START( xmen2pj )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -750,7 +1079,7 @@ ROM_END
ROM_START( xmen2pa )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-aaa04.10d", 0x00000, 0x20000, CRC(7f8b27c2) SHA1(052db1f47671564a440544a41fc397a19d1aff3a) ) /* Asia 2 Player version */
+ ROM_LOAD16_BYTE( "065-aaa04.10d", 0x00000, 0x20000, CRC(7f8b27c2) SHA1(052db1f47671564a440544a41fc397a19d1aff3a) ) // Asia 2 Player version
ROM_LOAD16_BYTE( "065-aaa05.10f", 0x00001, 0x20000, CRC(841ed636) SHA1(33f96022ce3dae9b49eb51fd4e8f7387a1777002) )
ROM_LOAD16_BYTE( "065-a02.9d", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.9f", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -758,17 +1087,17 @@ ROM_START( xmen2pa )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.6f", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1f", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -831,7 +1160,7 @@ ROM_END
ROM_START( xmen6p )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-ecb04.18g", 0x00000, 0x20000, CRC(258eb21f) SHA1(f1a22a880245f28195e5b6519822c0aa3b166541) ) /* Euro 6 Player version */
+ ROM_LOAD16_BYTE( "065-ecb04.18g", 0x00000, 0x20000, CRC(258eb21f) SHA1(f1a22a880245f28195e5b6519822c0aa3b166541) ) // Euro 6 Player version
ROM_LOAD16_BYTE( "065-ecb05.18j", 0x00001, 0x20000, CRC(25997bcd) SHA1(86fb1c64e133b7ca59ffb3910b62b61ee372c71a) )
ROM_LOAD16_BYTE( "065-a02.17g", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.17j", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -839,17 +1168,17 @@ ROM_START( xmen6p )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.7b", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.1l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.1h", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.12l", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.12l", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.17l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.22h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.22l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1d", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
@@ -858,7 +1187,7 @@ ROM_END
ROM_START( xmen6pu )
ROM_REGION( 0x100000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "065-ucb04.18g", 0x00000, 0x20000, CRC(0f09b8e0) SHA1(79f4d86d8ec45b39e34ddf45860bea0c74dae183) ) /* US 6 Player version */
+ ROM_LOAD16_BYTE( "065-ucb04.18g", 0x00000, 0x20000, CRC(0f09b8e0) SHA1(79f4d86d8ec45b39e34ddf45860bea0c74dae183) ) // US 6 Player version
ROM_LOAD16_BYTE( "065-ucb05.18j", 0x00001, 0x20000, CRC(867becbf) SHA1(3f81f4dbd289f98b78d7821a8925598c771f01ef) )
ROM_LOAD16_BYTE( "065-a02.17g", 0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
ROM_LOAD16_BYTE( "065-a03.17j", 0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
@@ -866,23 +1195,54 @@ ROM_START( xmen6pu )
ROM_REGION( 0x20000, "audiocpu", 0 )
ROM_LOAD( "065-a01.7b", 0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
- ROM_REGION( 0x200000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles
ROM_LOAD32_WORD( "065-a08.1l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
ROM_LOAD32_WORD( "065-a07.1h", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
- ROM_REGION( 0x400000, "k053246", 0 ) /* graphics (addressable by the main CPU) */
- ROM_LOAD64_WORD( "065-a09.12l", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) /* sprites */
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU)
+ ROM_LOAD64_WORD( "065-a09.12l", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
ROM_LOAD64_WORD( "065-a10.17l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
ROM_LOAD64_WORD( "065-a12.22h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
ROM_LOAD64_WORD( "065-a11.22l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
- ROM_REGION( 0x200000, "k054539", 0 ) /* samples for the 054539 */
+ ROM_REGION( 0x200000, "k054539", 0 ) // samples
ROM_LOAD( "065-a06.1d", 0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
ROM_REGION( 0x80, "eeprom", 0 )
ROM_LOAD( "xmen_ucb.nv", 0x0000, 0x0080, CRC(f3d0f682) SHA1(b0d4655c651238ae028ffb59a704acba798f93f8) )
ROM_END
+// PCB with no Konami custom chips but 4x TPC1020AFN instead. Has M6295 instead of Z80 + YM2151 + K054539. All labels peeled off / unreadable. GFX ROMs are identical to the original.
+ROM_START( xmenabl )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "rom1", 0x00000, 0x80000, CRC(c895fdc1) SHA1(e7e6908374310ef0e71d9541402a18818ea10134) )
+ ROM_LOAD16_BYTE( "rom2", 0x00001, 0x80000, CRC(50d56da7) SHA1(7ae0748f65d9de62be8c0cd1b41dceb1ea91ba3e) )
+
+ ROM_REGION( 0x200000, "k052109", 0 ) // tiles, k052109 non really present
+ ROM_LOAD32_WORD( "gfx15l", 0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )
+ ROM_LOAD32_WORD( "gfx16l", 0x000002, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
+
+ ROM_REGION( 0x400000, "k053246", 0 ) // graphics (addressable by the main CPU), k053246 non really present
+ ROM_LOAD64_WORD( "gfx2h", 0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) ) // sprites
+ ROM_LOAD64_WORD( "gfx2l", 0x000002, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
+ ROM_LOAD64_WORD( "gfx1h", 0x000004, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
+ ROM_LOAD64_WORD( "gfx1l", 0x000006, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
+
+ ROM_REGION( 0x100000, "oki", 0 )
+ ROM_LOAD( "oki1", 0x00000, 0x80000, CRC(ded562e0) SHA1(e67daae3e8e4a3a4979d3debf085f9c332404dd4) ) // xx1xxxxxxxxxxxxxxxx = 0xFF
+ ROM_LOAD( "oki2", 0x80000, 0x80000, CRC(74a12d1e) SHA1(b5e23e8efea2cf19385c081cfe8088bead132c21) )
+
+ ROM_REGION( 0x80, "eeprom", 0 )
+ ROM_LOAD( "xmen_aea.nv", 0x0000, 0x0080, CRC(d73d4f20) SHA1(b39906eb59ecf8f1e8141b467021e0a581186d47) )
+
+ ROM_REGION( 0x400, "plds", 0 )
+ ROM_LOAD( "gal16v8b", 0x000, 0x117, NO_DUMP ) // near the sprite hw and ROMs
+ ROM_LOAD( "gal16v8d", 0x200, 0x117, NO_DUMP ) // near the M6295
+ROM_END
+
+} // anonymous namespace
+
+
/*
Second "version" letter denotes cabinet type:
@@ -895,18 +1255,19 @@ E = 4 players, 2 coin slots, can set coin/credit by coin slot, FREE PLAY option,
*/
-GAME( 1992, xmen, 0, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver EBA)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmenu, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver UBB)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmenua, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver UEB)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmenj, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver JBA)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmenja, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver JEA)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmena, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver AEA)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmenaa, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver ADA)", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1992, xmen2pe, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver EAA)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmen2pu, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver UAB)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmen2pj, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver JAA)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmen2pa, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver AAA)", MACHINE_SUPPORTS_SAVE )
-
-GAME( 1992, xmen6p, xmen, xmen6p, xmen6p, xmen_state, empty_init, ROT0, "Konami", "X-Men (6 Players ver ECB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1992, xmen6pu, xmen, xmen6p, xmen6p, xmen_state, empty_init, ROT0, "Konami", "X-Men (6 Players ver UCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmen, 0, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver EBA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmenu, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver UBB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmenua, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver UEB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmenj, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver JBA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmenja, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver JEA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmena, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver AEA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmenaa, xmen, xmen, xmen, xmen_state, empty_init, ROT0, "Konami", "X-Men (4 Players ver ADA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmenabl, xmen, xmenabl, xmen, xmen_state, empty_init, ROT0, "bootleg", "X-Men (4 Players ver AEA, bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // sprites are wrong, one oki ROM may be bad or the banking not correct (or both)
+
+GAME( 1992, xmen2pe, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver EAA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmen2pu, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver UAB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmen2pj, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver JAA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmen2pa, xmen, xmen, xmen2p, xmen_state, empty_init, ROT0, "Konami", "X-Men (2 Players ver AAA)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, xmen6p, xmen, xmen6p, xmen6p, xmen6p_state, empty_init, ROT0, "Konami", "X-Men (6 Players ver ECB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, xmen6pu, xmen, xmen6p, xmen6p, xmen6p_state, empty_init, ROT0, "Konami", "X-Men (6 Players ver UCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/konami/xmen.h b/src/mame/konami/xmen.h
deleted file mode 100644
index 8bd55ce3a17..00000000000
--- a/src/mame/konami/xmen.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria
-#ifndef MAME_INCLUDES_XMEN_H
-#define MAME_INCLUDES_XMEN_H
-
-#pragma once
-
-#include "machine/gen_latch.h"
-#include "machine/timer.h"
-#include "sound/k054539.h"
-#include "k053246_k053247_k055673.h"
-#include "k053251.h"
-#include "k052109.h"
-#include "konami_helper.h"
-#include "machine/k054321.h"
-#include "screen.h"
-
-class xmen_state : public driver_device
-{
-public:
- xmen_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_xmen6p_spriteram(*this, "spriteram%u", 0),
- m_xmen6p_tilemap(*this, "tilemap%u", 0),
- m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu"),
- m_k054539(*this, "k054539"),
- m_k052109(*this, "k052109"),
- m_k053246(*this, "k053246"),
- m_k053251(*this, "k053251"),
- m_screen(*this, "screen"),
- m_k054321(*this, "k054321"),
- m_z80bank(*this, "z80bank")
- { }
-
- void xmen(machine_config &config);
- void xmen6p(machine_config &config);
-
- DECLARE_READ_LINE_MEMBER(xmen_frame_r);
-
-private:
- /* video-related */
- int m_layer_colorbase[3]{};
- int m_sprite_colorbase = 0;
- int m_layerpri[3]{};
-
- /* for xmen6p */
- std::unique_ptr<bitmap_ind16> m_screen_right;
- std::unique_ptr<bitmap_ind16> m_screen_left;
- optional_shared_ptr_array<uint16_t, 2> m_xmen6p_spriteram;
- optional_shared_ptr_array<uint16_t, 4> m_xmen6p_tilemap;
- uint16_t * m_k053247_ram;
- bool m_xmen6p_tilemap_select;
-
- /* misc */
- uint8_t m_vblank_irq_mask = 0;
-
- /* devices */
- required_device<cpu_device> m_maincpu;
- required_device<cpu_device> m_audiocpu;
- required_device<k054539_device> m_k054539;
- required_device<k052109_device> m_k052109;
- required_device<k053247_device> m_k053246;
- required_device<k053251_device> m_k053251;
- required_device<screen_device> m_screen;
- required_device<k054321_device> m_k054321;
-
- required_memory_bank m_z80bank;
- void eeprom_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void xmen_18fa00_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void sound_bankswitch_w(uint8_t data);
-
- virtual void machine_start() override;
- virtual void machine_reset() override;
- DECLARE_VIDEO_START(xmen6p);
- uint32_t screen_update_xmen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_xmen6p_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- uint32_t screen_update_xmen6p_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_WRITE_LINE_MEMBER(screen_vblank_xmen6p);
- TIMER_DEVICE_CALLBACK_MEMBER(xmen_scanline);
- K052109_CB_MEMBER(tile_callback);
- K053246_CB_MEMBER(sprite_callback);
-
- void _6p_main_map(address_map &map);
- void main_map(address_map &map);
- void sound_map(address_map &map);
-};
-
-#endif // MAME_INCLUDES_XMEN_H
diff --git a/src/mame/konami/xmen_v.cpp b/src/mame/konami/xmen_v.cpp
deleted file mode 100644
index 198b1d1f755..00000000000
--- a/src/mame/konami/xmen_v.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Nicola Salmoria
-#include "emu.h"
-#include "xmen.h"
-
-
-/***************************************************************************
-
- Callbacks for the K052109
-
-***************************************************************************/
-
-K052109_CB_MEMBER(xmen_state::tile_callback)
-{
- /* (color & 0x02) is flip y handled internally by the 052109 */
- if (layer == 0)
- *color = m_layer_colorbase[layer] + ((*color & 0xf0) >> 4);
- else
- *color = m_layer_colorbase[layer] + ((*color & 0x7c) >> 2);
-}
-
-/***************************************************************************
-
- Callbacks for the K053247
-
-***************************************************************************/
-
-K053246_CB_MEMBER(xmen_state::sprite_callback)
-{
- int pri = (*color & 0x00e0) >> 4; /* ??????? */
-
- if (pri <= m_layerpri[2])
- *priority_mask = 0;
- else if (pri > m_layerpri[2] && pri <= m_layerpri[1])
- *priority_mask = 0xf0;
- else if (pri > m_layerpri[1] && pri <= m_layerpri[0])
- *priority_mask = 0xf0 | 0xcc;
- else
- *priority_mask = 0xf0 | 0xcc | 0xaa;
-
- *color = m_sprite_colorbase + (*color & 0x001f);
-}
-
-
-
-/***************************************************************************
-
- Start the video hardware emulation.
-
-***************************************************************************/
-
-VIDEO_START_MEMBER(xmen_state,xmen6p)
-{
- m_k053246->k053247_get_ram( &m_k053247_ram);
-
- m_screen_left = std::make_unique<bitmap_ind16>(64 * 8, 32 * 8);
- m_screen_right = std::make_unique<bitmap_ind16>(64 * 8, 32 * 8);
-
- save_item(NAME(*m_screen_left));
- save_item(NAME(*m_screen_right));
-}
-
-
-/***************************************************************************
-
- Display refresh
-
-***************************************************************************/
-
-uint32_t xmen_state::screen_update_xmen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int layer[3], bg_colorbase;
-
- bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
- m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
- m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3);
- m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0);
- m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2);
-
- m_k052109->tilemap_update();
-
- layer[0] = 0;
- m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3);
- layer[1] = 1;
- m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0);
- layer[2] = 2;
- m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2);
-
- konami_sortlayers3(layer, m_layerpri);
-
- screen.priority().fill(0, cliprect);
- /* note the '+1' in the background color!!! */
- bitmap.fill(16 * bg_colorbase + 1, cliprect);
- m_k052109->tilemap_draw(screen, bitmap, cliprect, layer[0], 0, 1);
- m_k052109->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
- m_k052109->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
-
- /* this isn't supported anymore and it is unsure if still needed; keeping here for reference
- pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
- m_k053246->k053247_sprites_draw( bitmap, cliprect);
- return 0;
-}
-
-
-uint32_t xmen_state::screen_update_xmen6p_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- for(int y = 0; y < 32 * 8; y++)
- {
- uint16_t *const line_dest = &bitmap.pix(y);
- uint16_t const *const line_src = &m_screen_left->pix(y);
-
- for (int x = 12 * 8; x < 52 * 8; x++)
- line_dest[x] = line_src[x];
- }
-
- return 0;
-}
-
-uint32_t xmen_state::screen_update_xmen6p_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- for(int y = 0; y < 32 * 8; y++)
- {
- uint16_t *const line_dest = &bitmap.pix(y);
- uint16_t const *const line_src = &m_screen_right->pix(y);
-
- for (int x = 12 * 8; x < 52 * 8; x++)
- line_dest[x] = line_src[x];
- }
-
- return 0;
-}
-
-/* my lefts and rights are mixed up in several places.. */
-WRITE_LINE_MEMBER(xmen_state::screen_vblank_xmen6p)
-{
- // rising edge
- if (state)
- {
- int layer[3], bg_colorbase;
- bitmap_ind16 * renderbitmap;
- rectangle cliprect;
-
- // const rectangle *visarea = m_screen->visible_area();
- // cliprect = *visarea;
- cliprect.set(0, 64 * 8 - 1, 2 * 8, 30 * 8 - 1);
-
- int index = m_screen->frame_number() & 1;
- renderbitmap = index ? m_screen_right.get() : m_screen_left.get();
-
- /* copy the desired spritelist to the chip */
- memcpy(m_k053247_ram, m_xmen6p_spriteram[index], 0x1000);
-
- /* we write the entire content of the tileram to the chip to ensure
- everything gets marked as dirty and the desired tilemap is rendered
- this is not very efficient!
- */
- index += m_xmen6p_tilemap_select ? 2 : 0;
- for (int offset = 0; offset < (0xc000 / 2); offset++)
- {
- if (index == 0 || (offset != 0x1c80 && offset != 0x1e80))
- m_k052109->write(offset, m_xmen6p_tilemap[index][offset] & 0x00ff);
- }
-
- bg_colorbase = m_k053251->get_palette_index(k053251_device::CI4);
- m_sprite_colorbase = m_k053251->get_palette_index(k053251_device::CI1);
- m_layer_colorbase[0] = m_k053251->get_palette_index(k053251_device::CI3);
- m_layer_colorbase[1] = m_k053251->get_palette_index(k053251_device::CI0);
- m_layer_colorbase[2] = m_k053251->get_palette_index(k053251_device::CI2);
-
- m_k052109->tilemap_update();
-
- layer[0] = 0;
- m_layerpri[0] = m_k053251->get_priority(k053251_device::CI3);
- layer[1] = 1;
- m_layerpri[1] = m_k053251->get_priority(k053251_device::CI0);
- layer[2] = 2;
- m_layerpri[2] = m_k053251->get_priority(k053251_device::CI2);
-
- konami_sortlayers3(layer, m_layerpri);
-
- m_screen->priority().fill(0, cliprect);
- /* note the '+1' in the background color!!! */
- renderbitmap->fill(16 * bg_colorbase + 1, cliprect);
- m_k052109->tilemap_draw(*m_screen, *renderbitmap, cliprect, layer[0], 0, 1);
- m_k052109->tilemap_draw(*m_screen, *renderbitmap, cliprect, layer[1], 0, 2);
- m_k052109->tilemap_draw(*m_screen, *renderbitmap, cliprect, layer[2], 0, 4);
-
- /* this isn't supported anymore and it is unsure if still needed; keeping here for reference
- pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
- m_k053246->k053247_sprites_draw(*renderbitmap, cliprect);
- }
-}
diff --git a/src/mame/kyocera/kyocera.cpp b/src/mame/kyocera/kyocera.cpp
index b7e8f4981a8..efe7eb4030d 100644
--- a/src/mame/kyocera/kyocera.cpp
+++ b/src/mame/kyocera/kyocera.cpp
@@ -61,9 +61,12 @@
#include "emu.h"
#include "kyocera.h"
+
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
/* Read/Write Handlers */
uint8_t pc8201_state::bank_r()
diff --git a/src/mame/layout/connect4.lay b/src/mame/layout/connect4.lay
index 404a84c1010..1a04ceb4529 100644
--- a/src/mame/layout/connect4.lay
+++ b/src/mame/layout/connect4.lay
@@ -789,10 +789,10 @@ license:CC0
<element name="lamp121" ref="pass" state="0">
<bounds x="40" y="140" width="28" height="14"/>
</element>
- <element name="lamp123" ref="select" state="0">
+ <element name="lamp120" ref="select" state="0">
<bounds x="0" y="90" width="28" height="14"/>
</element>
- <element name="lamp120" ref="drop" state="0">
+ <element name="lamp123" ref="drop" state="0">
<bounds x="30" y="90" width="28" height="14"/>
</element>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 27cb904762b..10c4326bed8 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -2459,6 +2459,7 @@ magibombc // (c) 2001 Astro Corp.
magibombd // (c) 2005 Astro Corp.
magibombe // (c) 2001? Astro Corp.
magibombf // (c) 2002 Astro Corp.
+magibombg // (c) 2004 Astro Corp.
showhanc // (c) 2000 Astro Corp.
showhand // (c) 2000 Astro Corp.
skilldrp // (c) 2002 Astro Corp.
@@ -11096,6 +11097,7 @@ sf2rb2 // hack
sf2rb3 // hack
sf2re // bootleg
sf2red // hack
+sf2reda // bootleg
sf2redp2 // hack
sf2rk // bootleg
sf2rules // bootleg
@@ -16805,6 +16807,7 @@ bigtrak // Milton Bradley
blastit // Entex
bship // Milton Bradley
bshipb // Milton Bradley
+cchime // Chromatronics
cmsport // Conic
cnbaskb // Conic
cnfball // Conic
@@ -24567,7 +24570,6 @@ m4booze // Booze Cruise
m4c2 // Circus Circus 2 (Nova)
m4captb // Captain Bear
m4casmul // Casino Multiplay (Barcrest)
-m4cbing // Cherry Bingo
m4ccc //
m4ccop //
m4ccopa //
@@ -24584,7 +24586,6 @@ m4eaw51 // Everyone's A Winner?
m4fsx // Fun Spot X
m4fsxa //
m4fsxb //
-m4funh // Fun House
m4hapfrt // Happy Fruits (Coinworld)
m4hapfrta //
m4hapfrtb //
@@ -24602,15 +24603,7 @@ m4jungja //
m4jungjb //
m4jungjc //
m4kqclub // Kings & Queens Club (Newby)
-m4luckwb // Lucky Wild Boar (Barcrest)
-m4luckwba //
-m4luckwbb //
-m4luckwbc //
-m4luckwbd //
-m4luckwbe //
-m4luckwbf //
m4matdr // Matador (unknown)
-m4nod //
m4sbx // Super Bear X
m4sbxa //
m4sbxb //
@@ -26170,6 +26163,7 @@ m4frtlnk // Fruit Link Club (Barcrest)
m4frtlnka //
m4frtprs // Fruit Preserve (Barcrest)
m4frtprsa //
+m4funh // Fun House
m4giant // Giant (Barcrest)
m4gldgat // Golden Gate (Barcrest)
m4gldstr // Gold Strike (Barcrest)
@@ -28030,6 +28024,13 @@ m4luckst__w //
m4luckst__x //
m4luckst__y //
m4luckst__z //
+m4luckwb // Lucky Wild Boar
+m4luckwba //
+m4luckwbb //
+m4luckwbc //
+m4luckwbd //
+m4luckwbe //
+m4luckwbf //
m4luxor // Luxor (Barcrest)
m4luxor__a //
m4luxor__b //
@@ -28312,6 +28313,7 @@ m4nnwwc__w //
m4nnwwc__x //
m4nnwwc__y //
m4nnwwc__z //
+m4nod // Nod And A Wink (Eurotech)
m4oadrac // Ooh Aah Dracula (BWB)
m4oadrac__a //
m4oadrac__b //
@@ -30175,6 +30177,9 @@ m4bigchfc //
m4click // Clickity Click (Barcrest)
m4elite // Elite (Barcrest)
+@source:barcrest/mpu4redpoint.cpp
+m4cbing // Cherry Bingo
+
@source:barcrest/mpu4vid.cpp
v4addlad // Adders and Ladders
v4addladd //
@@ -44363,6 +44368,7 @@ xmen6p // GX065 (c) 1992 (World)
xmen6pu // GX065 (c) 1992 (US)
xmena // GX065 (c) 1992 (Asia)
xmenaa // GX065 (c) 1992 (Asia)
+xmenabl // bootleg
xmenj // GX065 (c) 1992 (Japan)
xmenja // GX065 (c) 1992 (Japan)
xmenu // GX065 (c) 1992 (US)
diff --git a/src/mame/matsushita/jr100.cpp b/src/mame/matsushita/jr100.cpp
index 0680cff4eb8..a19c8fe71ab 100644
--- a/src/mame/matsushita/jr100.cpp
+++ b/src/mame/matsushita/jr100.cpp
@@ -54,16 +54,20 @@ TODO:
****************************************************************************/
#include "emu.h"
+
#include "cpu/m6800/m6800.h"
#include "imagedev/cassette.h"
#include "imagedev/snapquik.h"
#include "machine/6522via.h"
#include "machine/timer.h"
#include "sound/spkrdev.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
namespace {
diff --git a/src/mame/matsushita/jr200.cpp b/src/mame/matsushita/jr200.cpp
index 0babb34d2d6..5a17659fbc9 100644
--- a/src/mame/matsushita/jr200.cpp
+++ b/src/mame/matsushita/jr200.cpp
@@ -57,12 +57,16 @@ TODO:
****************************************************************************/
#include "emu.h"
+
#include "cpu/m6800/m6800.h"
#include "sound/beep.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
class jr200_state : public driver_device
{
diff --git a/src/mame/memotech/mtx.cpp b/src/mame/memotech/mtx.cpp
index a78e8f4776e..1ce110d434e 100644
--- a/src/mame/memotech/mtx.cpp
+++ b/src/mame/memotech/mtx.cpp
@@ -29,6 +29,8 @@
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
/***************************************************************************
MEMORY MAPS
diff --git a/src/mame/misc/astrcorp.cpp b/src/mame/misc/astrcorp.cpp
index 4abadbf51f6..c4a004a6936 100644
--- a/src/mame/misc/astrcorp.cpp
+++ b/src/mame/misc/astrcorp.cpp
@@ -14,22 +14,23 @@ OTHER: EEPROM, Battery
512 sprites, each made of N x M tiles. Tiles are 16x16x8 (16x32x8 in Stone Age)
-------------------------------------------------------------------------------------------------------------------------------
-Year + Game PCB ID CPU Video Chips Notes
-------------------------------------------------------------------------------------------------------------------------------
-00 Show Hand CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016-60LJ, ASTRO 0001B MCU? (28 pins)
-00 Wangpai Duijue CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016, MDT2020AP MCU (28 pins)
-01 Magic Bomb (NB4.5) None ASTRO V03 ASTRO V02 pLSI1016 Encrypted
-02 Skill Drop GA None JX-1689F1028N ASTRO V02 pLSI1016-60LJ
-02? Keno 21 ? ASTRO V102? ASTRO V05 ASTRO F02? not dumped
-03 Speed Drop None JX-1689HP ASTRO V05 pLSI1016-60LJ
-04 Zoo M1.1 ASTRO V102PX-005? ASTRO V06 ASTRO F02 2005-02-18 Encrypted
-05 Dino Dino T-3802A ASTRO V102PX-010? ASTRO V05 ASTRO F02 2003-03-12 Encrypted
-05 Stone Age L1 ASTRO V102PX-012? ASTRO V05(x2) ASTRO F02 2004-09-04 Encrypted
-05? Hacher (hack) M1.2 ? ? ASTRO F02 2005-02-18 Encrypted
-06 Win Win Bingo M1.2 ASTRO V102PX-006? ASTRO V06 ASTRO F02 2005-09-17 Encrypted
-07? Western Venture O (CS350P032) ASTRO V102? ASTRO V07 ASTRO F01 2007-06-03 Encrypted
-------------------------------------------------------------------------------------------------------------------------------
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+Year + Game PCB ID CPU Video Chips Notes
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------
+00 Show Hand CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016-60LJ, ASTRO 0001B MCU? (28 pins)
+00 Wangpai Duijue CHE-B50-4002A MC68HC000FN12 ASTRO V01 pLSI1016, MDT2020AP MCU (28 pins)
+01 Magic Bomb (NB4.5) None ASTRO V03 ASTRO V02 pLSI1016 Encrypted
+02 Skill Drop GA None JX-1689F1028N ASTRO V02 pLSI1016-60LJ
+02? Keno 21 ? ASTRO V102? ASTRO V05 ASTRO F02? not dumped
+03 Speed Drop None JX-1689HP ASTRO V05 pLSI1016-60LJ
+04 Zoo M1.1 ASTRO V102PX-005? ASTRO V06 ASTRO F02 2005-02-18 Encrypted
+04 Magic Bomb (NB6.1) J (CS350P001 + CS350P033) ASTRO V102PX-014? ASTRO V07 ?, Encrypted, select CGA / VGA via jumper
+05 Dino Dino T-3802A ASTRO V102PX-010? ASTRO V05 ASTRO F02 2003-03-12 Encrypted
+05 Stone Age L1 ASTRO V102PX-012? ASTRO V05(x2) ASTRO F02 2004-09-04 Encrypted
+05? Hacher (hack) M1.2 ? ? ASTRO F02 2005-02-18 Encrypted
+06 Win Win Bingo M1.2 ASTRO V102PX-006? ASTRO V06 ASTRO F02 2005-09-17 Encrypted
+07? Western Venture O (CS350P032) ASTRO V102? ASTRO V07 ASTRO F01 2007-06-03 Encrypted
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------
- astoneag, magibomb, winbingo, etc.: to initialize EEPROM (and self test in some games), keep keyout (W) pressed during boot.
Needs ticket (or reserve switch) and hopper lines to be 0 though (disconnected?).
@@ -54,6 +55,7 @@ TODO:
- magibomba, westvent: need a redump of one of the program ROMs.
- magibombd, hacher: need a redump of the sprite ROMs.
- astoneag, dinodino, magibombd: exiting from test menu goes haywire (requires a soft-reset with F3).
+- magibombg: needs RE of the CPU code and correct EEPROM.
*************************************************************************************************************/
@@ -278,12 +280,14 @@ public:
void hacher(machine_config &config);
void dinodino(machine_config &config);
void magibombd(machine_config &config);
+ void magibombg(machine_config &config);
void winbingo(machine_config &config);
void zoo(machine_config &config);
void init_dinodino();
void init_hacher();
void init_magibombd();
+ void init_magibombg();
void init_winbingo();
void init_winbingoa();
void init_zoo();
@@ -319,6 +323,7 @@ private:
void dinodino_map(address_map &map);
void hacher_map(address_map &map);
void magibombd_map(address_map &map);
+ void magibombg_map(address_map &map);
void winbingo_map(address_map &map);
void zoo_map(address_map &map);
@@ -795,6 +800,23 @@ void zoo_state::magibombd_map(address_map &map)
// map(0x??0001, 0x??0001).w(FUNC(zoo_state::screen_enable_w)); // unknown location
}
+void zoo_state::magibombg_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom().mirror(0x800000); // POST checks for ROM checksum at mirror
+ map(0xa00000, 0xa00fff).ram().share("spriteram");
+ map(0xa02000, 0xa02001).nopr().w(FUNC(zoo_state::draw_sprites_w));
+ map(0xa04000, 0xa04001).portr("INPUTS");
+ map(0xa08001, 0xa08001).w(FUNC(zoo_state::eeprom_w));
+ map(0xa0a000, 0xa0a001).w(FUNC(zoo_state::magibomb_outputs_w));
+ map(0xa0e000, 0xa0e001).portr("EEPROM_IN");
+ map(0xb80000, 0xb80001).portr("CPUCODE_IN");
+ map(0xc00000, 0xc03fff).ram().share("nvram"); // battery
+ map(0xd00000, 0xd001ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xd80000, 0xd80000).w(FUNC(zoo_state::oki_bank_w));
+ map(0xe00001, 0xe00001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+// map(0x??0001, 0x??0001).w(FUNC(zoo_state::screen_enable_w)); // unknown location
+}
+
void zoo_state::winbingo_map(address_map &map)
{
map(0x000000, 0x03ffff).rom().mirror(0x800000); // POST checks for ROM checksum at mirror
@@ -1221,6 +1243,13 @@ void zoo_state::magibombd(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &zoo_state::magibombd_map);
}
+void zoo_state::magibombg(machine_config &config)
+{
+ zoo(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &zoo_state::magibombg_map);
+ TIMER(config.replace(), "scantimer").configure_scanline(FUNC(zoo_state::irq_2_4_scanline_cb), "screen", 0, 1);
+}
+
void zoo_state::winbingo(machine_config &config)
{
zoo(config);
@@ -1628,6 +1657,25 @@ ROM_START( magibombf )
ROM_LOAD( "93c46.u6", 0x00, 0x80, CRC(a01e5ce7) SHA1(77213c0b426ca1806bb8a4c55e9e7f4f2db66962) ) // factory default
ROM_END
+ROM_START( magibombg )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "1 magic bomb nb.6.1.u20", 0x00000, 0x10000, CRC(8aaa14c3) SHA1(44ade91596b8cd907c7556f3c5f977e2c7b4029d) )
+ ROM_LOAD16_BYTE( "2 magic bomb nb.6.1.u19", 0x00001, 0x10000, CRC(d371c3ab) SHA1(3f63883ad2735a772e9dbc958346b692420667dc) )
+ ROM_FILL( 0x20000, 0x20000, 0xff )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "mx29f1610mc.u26", 0x000000, 0x200000, BAD_DUMP CRC(042f7992) SHA1(2e175994d0b14200a92bdb46e82847b1a1c88265) ) // wasn't dumped, different from the Ver. A3.1 set!
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "5 magic bomb", 0x00000, 0x80000, CRC(c9edbf1b) SHA1(8e3a96a38aea23950d6add66a5a3d079013bc217) )
+
+ ROM_REGION16_LE( 0x80, "eeprom", 0 )
+ ROM_LOAD( "93c46.u10", 0x00, 0x80, BAD_DUMP CRC(a01e5ce7) SHA1(77213c0b426ca1806bb8a4c55e9e7f4f2db66962) ) // TODO: this is correct for magibombf, create good one
+
+ ROM_REGION16_LE( 0x02, "astro_cpucode", ROMREGION_ERASE00 )
+ ROM_LOAD( "magibombg_cpucode.key", 0x00, 0x02, NO_DUMP ) // TODO: RE correct one
+ROM_END
+
/***************************************************************************
Western Venture
@@ -2185,6 +2233,22 @@ void zoo_state::init_magibombd()
#endif
}
+void zoo_state::init_magibombg()
+{
+ decrypt_rom(magibombd_table);
+#if 1
+ // TODO: There's more stuff happening for addresses < 0x400...
+ // override reset vector for now
+ u16 * const rom = (u16 *)memregion("maincpu")->base();
+ rom[0x00004/2] = 0x0000;
+ rom[0x00006/2] = 0x043e;
+
+ rom[0x00400/2] = 0x4e75; // overlay!?
+
+ rom[0x00f26/2] = 0x4e75; // Mirror ROM word checksum (it expects 0)
+#endif
+}
+
const zoo_state::decryption_info zoo_state::winbingo_table = {
{
{
@@ -2439,6 +2503,7 @@ GAMEL( 2004, zoo, 0, zoo, magibombd, zoo_state, init_z
GAMEL( 2005, dinodino, 0, dinodino, dinodino, zoo_state, init_dinodino, ROT0, "Astro Corp.", "Dino Dino (Ver. A1.1, 01/13/2005)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION, layout_dinodino ) // 13/01.2005 10:59
GAMEL( 2005, astoneag, 0, astoneag, astoneag, astoneag_state, init_astoneag, ROT0, "Astro Corp.", "Stone Age (Astro, Ver. EN.03.A, 2005/02/21)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION, layout_astoneag )
GAMEL( 2005, magibombd, magibomb, magibombd, magibombd, zoo_state, init_magibombd, ROT0, "Astro Corp.", "Magic Bomb (Ver. AA.72.D, 14/11/05)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_magibombb ) // 15/11/05 09:31. Undumped sprite ROM
+GAMEL( 2004, magibombg, magibomb, magibombg, magibombd, zoo_state, init_magibombg, ROT0, "Astro Corp.", "Magic Bomb (Ver. NB6.1, 26/04/04)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_magibomb ) // 26/04/04. Undumped sprite ROM
GAMEL( 2006, winbingo, 0, winbingo, winbingo, zoo_state, init_winbingo, ROT0, "Astro Corp.", "Win Win Bingo (Ver. GM.03.3, Feb 23 2006)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION, layout_winbingo ) // 15:47:48 Feb 23 2006
GAMEL( 2006, winbingoa, winbingo, winbingo, winbingo, zoo_state, init_winbingoa, ROT0, "Astro Corp.", "Win Win Bingo (Ver. GM.05.1, May 11 2006)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_winbingo ) // 11:02:07 May 11 2006. Undumped sprite ROMs
GAMEL( 2005, hacher, winbingo, hacher, winbingo, zoo_state, init_hacher, ROT0, "bootleg (Gametron)", "Hacher (hack of Win Win Bingo EN.01.6)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS, layout_winbingo ) // 14:25:46 Mar 10 2005. One bad sprite ROM
diff --git a/src/mame/misc/mtu130.cpp b/src/mame/misc/mtu130.cpp
index 5a89d8c1d1e..59594ad7efa 100644
--- a/src/mame/misc/mtu130.cpp
+++ b/src/mame/misc/mtu130.cpp
@@ -22,11 +22,8 @@
// - PROGRAMMOVER, a z80-based board
// - MultI-O, an i/o board
-// Sequencer PROM added, ID prom being studied.
-
// Probable bug somewhere making the BASIC (light pen, game) demos
-// fail in the demonstration disk, possibly in the customized 6502
-// core.
+// fail in the demonstration disk.
#include "emu.h"
#include "cpu/m6502/m6502.h"
@@ -42,6 +39,7 @@
#include "sound/dac.h"
#include "emupal.h"
#include "screen.h"
+#include "softlist_dev.h"
#include "speaker.h"
@@ -98,6 +96,7 @@ public:
m_romdata(*this, "romdata"),
m_ipl(*this, "ipl"),
m_sequencer(*this, "sequencer"),
+ m_id(*this, "id"),
m_keyboard(*this, "K%X", 0L),
m_keyboard_meta(*this, "KM"),
m_jumpers(*this, "jumpers")
@@ -163,6 +162,7 @@ private:
required_memory_region m_ipl;
required_region_ptr<u8> m_sequencer;
+ required_region_ptr<u8> m_id;
required_ioport_array<16> m_keyboard;
required_ioport m_keyboard_meta;
required_ioport m_jumpers;
@@ -172,7 +172,7 @@ private:
uint16_t m_dma_adr;
u8 m_keyboard_col;
u8 m_dac_level;
- u8 m_cpuid;
+ u8 m_id_adr;
bool m_dma_direction;
bool m_video_unblank;
bool m_video_bw;
@@ -196,8 +196,8 @@ private:
void sys1_ca2_w(int line);
void sys2_pa_w(u8 data);
- void cpuid_reset_w(u8);
- u8 cpuid_r();
+ void id_reset_w(u8);
+ u8 id_r();
void io_enable_w(u8);
void io_disable_w(u8);
@@ -341,7 +341,7 @@ void mtu130_state::machine_start()
m_dma_direction = false;
m_keyboard_col = 0;
m_dac_level = 0x80;
- m_cpuid = 0;
+ m_id_adr = 0;
m_video_unblank = true;
m_video_bw = true;
m_fdc_irq_enabled = false;
@@ -350,7 +350,7 @@ void mtu130_state::machine_start()
save_item(NAME(m_dma_direction));
save_item(NAME(m_keyboard_col));
save_item(NAME(m_dac_level));
- save_item(NAME(m_cpuid));
+ save_item(NAME(m_id_adr));
save_item(NAME(m_video_unblank));
save_item(NAME(m_video_bw));
save_item(NAME(m_fdc_irq_enabled));
@@ -461,21 +461,15 @@ WRITE_LINE_MEMBER(mtu130_state::dma_drq_w)
}
}
-void mtu130_state::cpuid_reset_w(u8)
+void mtu130_state::id_reset_w(u8)
{
- m_cpuid = 0;
+ m_id_adr = 0;
}
-u8 mtu130_state::cpuid_r()
+u8 mtu130_state::id_r()
{
- static u8 cpuid[] = { 0,
- 0, 0, 0, 0, 0, // Vendor
- 0, 0, 0, 0, 0, // Group
- 0, 0, 1, 7, 5, // User, BASIC and others tend to check that one
- };
- u8 res = cpuid[m_cpuid & 15];
- m_cpuid++;
- return res;
+ m_id_adr = (m_id_adr + 1) & 0xf;
+ return m_id[m_id_adr];
}
void mtu130_state::user_cb2_w(int line)
@@ -569,9 +563,9 @@ void mtu130_state::map(address_map &map)
map(0x0be00, 0x0bfff).view(m_io_view); // I/O dynamically overrides part of the main ram
m_io_view[1](0x0be00, 0x0bfff).unmaprw(); // Fully mask out the ram when active
- m_io_view[1](0x0bfc3, 0x0bfc3).r(FUNC(mtu130_state::cpuid_r));
+ m_io_view[1](0x0bfc3, 0x0bfc3).r(FUNC(mtu130_state::id_r));
m_io_view[1](0x0bfc5, 0x0bfc5).w(FUNC(mtu130_state::keyboard_col_clear_w));
- m_io_view[1](0x0bfc7, 0x0bfc7).w(FUNC(mtu130_state::cpuid_reset_w));
+ m_io_view[1](0x0bfc7, 0x0bfc7).w(FUNC(mtu130_state::id_reset_w));
m_io_view[1](0x0bfc8, 0x0bfcb).rw(m_acia, FUNC(mos6551_device::read), FUNC(mos6551_device::write));
m_io_view[1](0x0bfd0, 0x0bfdf).m(m_user_6522, FUNC(via6522_device::map));
m_io_view[1](0x0bfe0, 0x0bfef).m(m_sys1_6522, FUNC(via6522_device::map));
@@ -680,6 +674,8 @@ void mtu130_state::mtu130(machine_config &config)
MTU130_ROM(config, m_roms[1], m_romdata, 0x2000);
MTU130_ROM(config, m_roms[2], m_romdata, 0x1000);
MTU130_ROM(config, m_roms[3], m_romdata, 0x0000);
+
+ SOFTWARE_LIST(config, "flop_list").set_original("mtu130_flop");
}
@@ -693,7 +689,7 @@ static INPUT_PORTS_START(mtu130)
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("RIGHT SHIFT")
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("LEFT SHIFT")
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_TOGGLE
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_NAME("CTRL")
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("REPEAT")
@@ -831,6 +827,13 @@ ROM_START(mtu130)
ROM_REGION(0x100, "sequencer", 0) // 4-bit prom
ROM_LOAD("6301.u55", 0, 0x100, CRC(1541eb91) SHA1(78ab124865dc6ffd646abd2fcab5b881edd619c1))
+ ROM_REGION(0x100, "id", 0) // 4-bit prom, only first 16 nibbles reachable, rest all f
+ // address 1 unused f
+ // address 2-6 vendor 00102
+ // address 7-b group 00000
+ // address c-f,0 user 00175 (used by BASIC 1.5 for system-locking)
+
+ ROM_LOAD("6301.u24", 0, 0x100, CRC(7ebc5451) SHA1(402bd7bf343d995bc9c857fe4f3a23e0a8e7bd1c))
ROM_END
COMP(1981, mtu130, 0, 0, mtu130, mtu130, mtu130_state, empty_init, "Micro Technology Unlimited", "MTU-130", MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/misc/neoprint.cpp b/src/mame/misc/neoprint.cpp
index 2ef9d10163e..27eec4dd9c0 100644
--- a/src/mame/misc/neoprint.cpp
+++ b/src/mame/misc/neoprint.cpp
@@ -33,6 +33,8 @@
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
namespace {
diff --git a/src/mame/namco/namco_c116.h b/src/mame/namco/namco_c116.h
index c9688479d2f..1fed49db5f4 100644
--- a/src/mame/namco/namco_c116.h
+++ b/src/mame/namco/namco_c116.h
@@ -34,8 +34,8 @@ protected:
virtual void device_start() override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 0x2000; }
- virtual bool palette_shadows_enabled() const override { return m_enable_shadows; }
+ virtual uint32_t palette_entries() const noexcept override { return 0x2000; }
+ virtual bool palette_shadows_enabled() const noexcept override { return m_enable_shadows; }
private:
// internal state
diff --git a/src/mame/namco/ygv608.h b/src/mame/namco/ygv608.h
index 99ade70c34c..0e96f289c1f 100644
--- a/src/mame/namco/ygv608.h
+++ b/src/mame/namco/ygv608.h
@@ -103,7 +103,7 @@ protected:
virtual space_config_vector memory_space_config() const override;
- virtual uint32_t palette_entries() const override { return 256; }
+ virtual uint32_t palette_entries() const noexcept override { return 256; }
TIMER_CALLBACK_MEMBER(update_vblank_flag);
TIMER_CALLBACK_MEMBER(update_raster_flag);
diff --git a/src/mame/nec/pc8001.cpp b/src/mame/nec/pc8001.cpp
index 93b690da374..6c9a8c7aefb 100644
--- a/src/mame/nec/pc8001.cpp
+++ b/src/mame/nec/pc8001.cpp
@@ -42,6 +42,7 @@
#include "screen.h"
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
WRITE_LINE_MEMBER( pc8001_base_state::crtc_reverse_w )
{
diff --git a/src/mame/nec/pc8401a.cpp b/src/mame/nec/pc8401a.cpp
index 4a57f8726f4..c7cb1c4ea27 100644
--- a/src/mame/nec/pc8401a.cpp
+++ b/src/mame/nec/pc8401a.cpp
@@ -35,6 +35,8 @@
#include "bus/rs232/rs232.h"
+#include "utf8.h"
+
/* Fake Keyboard */
void pc8401a_state::scan_keyboard()
diff --git a/src/mame/nec/pc8801.cpp b/src/mame/nec/pc8801.cpp
index ebb81447def..44e73160b56 100644
--- a/src/mame/nec/pc8801.cpp
+++ b/src/mame/nec/pc8801.cpp
@@ -108,6 +108,8 @@
#include "softlist_dev.h"
+#include "utf8.h"
+
#define PC8801FH_OSC1 XTAL(28'636'363)
#define PC8801FH_OSC2 XTAL(42'105'200)
diff --git a/src/mame/nokia/mm1kb.cpp b/src/mame/nokia/mm1kb.cpp
index 9b7c2080223..0f08c79ffa2 100644
--- a/src/mame/nokia/mm1kb.cpp
+++ b/src/mame/nokia/mm1kb.cpp
@@ -10,6 +10,7 @@
#include "mm1kb.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
diff --git a/src/mame/osborne/vixen.cpp b/src/mame/osborne/vixen.cpp
index 2be61dd5cfa..96b04d48b01 100644
--- a/src/mame/osborne/vixen.cpp
+++ b/src/mame/osborne/vixen.cpp
@@ -70,6 +70,7 @@ Notes:
#include "screen.h"
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
namespace {
diff --git a/src/mame/pc/europc_kbd.cpp b/src/mame/pc/europc_kbd.cpp
index a1b0d3030f0..c76a97dfccf 100644
--- a/src/mame/pc/europc_kbd.cpp
+++ b/src/mame/pc/europc_kbd.cpp
@@ -24,6 +24,8 @@
#include "cpu/m6805/m68705.h"
+#include "utf8.h"
+
//**************************************************************************
// LLE KEYBOARD DEVICE
//**************************************************************************
diff --git a/src/mame/pc/kb_poisk1.h b/src/mame/pc/kb_poisk1.h
index 21e206059f0..9481b4d304d 100644
--- a/src/mame/pc/kb_poisk1.h
+++ b/src/mame/pc/kb_poisk1.h
@@ -10,6 +10,8 @@
* F12 - XXX
*/
+#include "utf8.h"
+
INPUT_PORTS_START( poisk1_keyboard_v89 )
PORT_START("Y1")
PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') // scancode 0x55
diff --git a/src/mame/positron/positron.cpp b/src/mame/positron/positron.cpp
index 17ec3eeb60f..5342979ee2c 100644
--- a/src/mame/positron/positron.cpp
+++ b/src/mame/positron/positron.cpp
@@ -40,6 +40,8 @@
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
// Debugging
#define VERBOSE 0
diff --git a/src/mame/psion/psion5.cpp b/src/mame/psion/psion5.cpp
index 64b58cc3f1c..bb99adbc767 100644
--- a/src/mame/psion/psion5.cpp
+++ b/src/mame/psion/psion5.cpp
@@ -18,6 +18,8 @@
#include "psion5.h"
+#include "utf8.h"
+
#define LOG_UNKNOWNS (1 << 0)
#define LOG_IRQ (1 << 1)
#define LOG_DISPLAY (1 << 2)
diff --git a/src/mame/samsung/spc1500.cpp b/src/mame/samsung/spc1500.cpp
index e109d8ab2d4..4c52b8116b7 100644
--- a/src/mame/samsung/spc1500.cpp
+++ b/src/mame/samsung/spc1500.cpp
@@ -239,6 +239,8 @@ TODO:
#include "formats/spc1000_cas.h"
+#include "utf8.h"
+
namespace {
diff --git a/src/mame/sanyo/mbc55x_kbd.cpp b/src/mame/sanyo/mbc55x_kbd.cpp
index cf530d64e41..a3c56f46417 100644
--- a/src/mame/sanyo/mbc55x_kbd.cpp
+++ b/src/mame/sanyo/mbc55x_kbd.cpp
@@ -22,6 +22,8 @@
#include "cpu/mcs48/mcs48.h"
#include "machine/keyboard.ipp"
+#include "utf8.h"
+
//**************************************************************************
// DEVICE TYPE DEFINITION
//**************************************************************************
diff --git a/src/mame/sanyo/phc25.cpp b/src/mame/sanyo/phc25.cpp
index 78c310bbabd..1fa46b65554 100644
--- a/src/mame/sanyo/phc25.cpp
+++ b/src/mame/sanyo/phc25.cpp
@@ -45,6 +45,8 @@ RUN
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
/* Read/Write Handlers */
diff --git a/src/mame/sega/model3.cpp b/src/mame/sega/model3.cpp
index a9548f0caec..41d93e0c251 100644
--- a/src/mame/sega/model3.cpp
+++ b/src/mame/sega/model3.cpp
@@ -5934,12 +5934,10 @@ ROM_START( magtruck ) /* Step 2.1, Sega game ID# is 833-13601-01 (Export), ROM
ROM_REGION64_BE( 0x8800000, "user1", 0 ) /* program + data ROMs */
// CROM
- // Marked as BAD_DUMP because a single instruction appears to be faulty (a bit is flipped) requiring a patch in the SuperModel emulator to run
- // It is possible only one of these is faulty, but at a minimum these 4 should be redumped, and ideally the whole set should be checked.
- ROM_LOAD64_WORD_SWAP( "epr-21435.17", 0x000006, 0x200000, BAD_DUMP CRC(9b169446) SHA1(285cbe5afd439d83c50f0499a878f71b8e5b94e5) )
- ROM_LOAD64_WORD_SWAP( "epr-21433.18", 0x000004, 0x200000, BAD_DUMP CRC(60aa9d76) SHA1(b27741568a4fd0494b2254e468faea569e2d9fef) )
- ROM_LOAD64_WORD_SWAP( "epr-21436.19", 0x000002, 0x200000, BAD_DUMP CRC(22bcbca3) SHA1(fe9c46ad5b01f9f8d19854e59e229d07c0649e8c) )
- ROM_LOAD64_WORD_SWAP( "epr-21434.20", 0x000000, 0x200000, BAD_DUMP CRC(e028d7ca) SHA1(7e5d1cef6d9ef767f07320e9c099004e081f52dd) )
+ ROM_LOAD64_WORD_SWAP( "epr-21435.17", 0x000006, 0x200000, CRC(9b169446) SHA1(285cbe5afd439d83c50f0499a878f71b8e5b94e5) )
+ ROM_LOAD64_WORD_SWAP( "epr-21433.18", 0x000004, 0x200000, CRC(b3b124fa) SHA1(cb7fcfa0cd64180c07cb351c84140c654b008705) )
+ ROM_LOAD64_WORD_SWAP( "epr-21436.19", 0x000002, 0x200000, CRC(22bcbca3) SHA1(fe9c46ad5b01f9f8d19854e59e229d07c0649e8c) )
+ ROM_LOAD64_WORD_SWAP( "epr-21434.20", 0x000000, 0x200000, CRC(18f8626a) SHA1(4e087381b7eaf850aa86e7d7f92bdcc7edc0ed57) )
// CROM0
ROM_LOAD64_WORD_SWAP( "mpr-21423.1", 0x800006, 0x400000, CRC(4ee0060a) SHA1(61e155ea382f2c79ece78eeba12129645ea260f1) )
@@ -5968,13 +5966,13 @@ ROM_START( magtruck ) /* Step 2.1, Sega game ID# is 833-13601-01 (Export), ROM
ROM_LOAD_VROM( "mpr-21422.41", 0x00000c, 0x400000, CRC(feca77a5) SHA1(e475a96fa3d2efae65f29266ff2322cc23392ac8) )
ROM_REGION( 0x080000, "audiocpu", 0 ) /* 68000 code */
- ROM_LOAD16_WORD_SWAP( "epr-21438.21", 0x000000, 0x080000, CRC(6815af9e) SHA1(f956b5c5519a94cc60e31a2bd391949109908239) )
+ ROM_LOAD16_WORD_SWAP( "epr-21438.21", 0x000000, 0x080000, CRC(6815af9e) SHA1(f956b5c5519a94cc60e31a2bd391949109908239) ) // Japan - epr-21437
ROM_REGION16_BE( 0x1000000, "samples", 0 ) /* SCSP samples */
ROM_LOAD16_WORD_SWAP( "mpr-21427.22", 0x000000, 0x400000, CRC(884566f6) SHA1(02b7243890e25ccb364a7ad3e8d61f8defeaf039) )
ROM_LOAD16_WORD_SWAP( "mpr-21428.24", 0x400000, 0x400000, CRC(162d1e43) SHA1(0221e5126459d9277d75c7560a251381cea72b37) )
- ROM_LOAD16_WORD_SWAP( "mpr-21431.23", 0x800000, 0x400000, CRC(0ef8f7bb) SHA1(748949b2730dc002b76947d67d7ee3663b96b700) )
- ROM_LOAD16_WORD_SWAP( "mpr-21432.25", 0xc00000, 0x400000, CRC(59c0f6df) SHA1(ab1c6fbcb1244c2b56b6967018fceb82d8c5414c) )
+ ROM_LOAD16_WORD_SWAP( "mpr-21431.23", 0x800000, 0x400000, CRC(0ef8f7bb) SHA1(748949b2730dc002b76947d67d7ee3663b96b700) ) // Japan - mpr-21429
+ ROM_LOAD16_WORD_SWAP( "mpr-21432.25", 0xc00000, 0x400000, CRC(59c0f6df) SHA1(ab1c6fbcb1244c2b56b6967018fceb82d8c5414c) ) // Japan - mpr-21430
ROM_REGION( 0x20000, "cpu2", 0 ) /* Z80 code */
ROM_FILL( 0x000000, 0x20000, 0x0000 )
@@ -6835,7 +6833,7 @@ GAME( 1998, swtrilgya, swtrilgy, model3_21_5881, swtrilgy, model3_state, init_s
GAME( 1998, swtrilgyp, swtrilgy, model3_21, swtrilgy, model3_state, init_swtrilgp, ROT0, "Sega / LucasArts", "Star Wars Trilogy Arcade (location test, 16.09.98)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Japan, USA, Australia, Korea, Export
GAME( 1998, spikeout, 0, model3_21_5881, model3, model3_state, init_spikeout, ROT0, "Sega", "Spikeout (Export, Revision C)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, spikeofe, 0, model3_21_5881, model3, model3_state, init_spikeofe, ROT0, "Sega", "Spikeout Final Edition (Export)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1998, magtruck, 0, model3_21_5881, eca, model3_state, init_magtruck, ROT0, "Sega", "Magical Truck Adventure (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, magtruck, 0, model3_21_5881, eca, model3_state, init_magtruck, ROT0, "Sega", "Magical Truck Adventure (Export)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, eca, 0, model3_21_5881, eca, model3_state, init_eca, ROT0, "Sega", "Emergency Call Ambulance (Export)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, ecaj, eca, model3_21_5881, eca, model3_state, init_eca, ROT0, "Sega", "Emergency Call Ambulance (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
GAME( 1999, ecau, eca, model3_21_5881, eca, model3_state, init_eca, ROT0, "Sega", "Emergency Call Ambulance (USA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/seibu/r2crypt.cpp b/src/mame/seibu/r2crypt.cpp
index dbf40ce8439..23f434c8fa7 100644
--- a/src/mame/seibu/r2crypt.cpp
+++ b/src/mame/seibu/r2crypt.cpp
@@ -191,11 +191,6 @@ static const uint16_t x11_zt[512] = {
};
-static uint32_t yrot(uint32_t v, int r)
-{
- return (v << r) | (v >> (32-r));
-}
-
static uint16_t gm(int i4)
{
uint16_t x=0;
@@ -212,7 +207,7 @@ static uint16_t gm(int i4)
static uint32_t core_decrypt(uint32_t ciphertext, int i1, int i2, int i3, int i4,
const uint8_t *rotate, const uint8_t *x5, const uint16_t *x11, uint32_t preXor, uint32_t carryMask, uint32_t postXor)
{
- uint32_t v1 = bitswap<32>(yrot(ciphertext, rotate[i1]), 25,28,15,19, 6,0,3,24, 11,1,2,30, 16,7,22,17, 31,14,23,9, 27,18,4,10, 13,20,5,12, 8,29,26,21);
+ uint32_t v1 = bitswap<32>(rotl_32(ciphertext, rotate[i1]), 25,28,15,19, 6,0,3,24, 11,1,2,30, 16,7,22,17, 31,14,23,9, 27,18,4,10, 13,20,5,12, 8,29,26,21);
uint16_t x1Low = (x5[i2]<<11) ^ x11[i3] ^ gm(i4);
uint32_t x1 = x1Low | (bitswap<16>(x1Low, 0,8,1,9, 2,10,3,11, 4,12,5,13, 6,14,7,15)<<16);
diff --git a/src/mame/sgi/sgi_xmap2.h b/src/mame/sgi/sgi_xmap2.h
index 01bc35c48b7..ab58f727354 100644
--- a/src/mame/sgi/sgi_xmap2.h
+++ b/src/mame/sgi/sgi_xmap2.h
@@ -18,7 +18,7 @@ public:
virtual void device_reset() override;
// device_palette_interface overrides
- virtual u32 palette_entries() const override { return 4096 + 16; }
+ virtual u32 palette_entries() const noexcept override { return 4096 + 16; }
u8 reg_r(offs_t offset);
void reg_w(offs_t offset, u8 data);
diff --git a/src/mame/shared/alpha68k_palette.h b/src/mame/shared/alpha68k_palette.h
index 1149a9404c6..cc97e643c49 100644
--- a/src/mame/shared/alpha68k_palette.h
+++ b/src/mame/shared/alpha68k_palette.h
@@ -45,7 +45,7 @@ protected:
virtual void device_start() override;
virtual void device_reset() override;
- virtual uint32_t palette_entries() const override { return m_entries; }
+ virtual uint32_t palette_entries() const noexcept override { return m_entries; }
private:
std::vector<uint16_t> m_paletteram;
u32 m_entries = 0;
diff --git a/src/mame/shared/mega32x.h b/src/mame/shared/mega32x.h
index 5d07d35df4d..14a952117e5 100644
--- a/src/mame/shared/mega32x.h
+++ b/src/mame/shared/mega32x.h
@@ -107,7 +107,7 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
// device_palette_interface overrides
- virtual uint32_t palette_entries() const override { return 32*32*32/**2*/; }
+ virtual uint32_t palette_entries() const noexcept override { return 32*32*32/**2*/; }
// device_sound_interface overrides
virtual void sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) override;
diff --git a/src/mame/sharp/mz2000.cpp b/src/mame/sharp/mz2000.cpp
index cbb5a6e4aa6..b2e44400696 100644
--- a/src/mame/sharp/mz2000.cpp
+++ b/src/mame/sharp/mz2000.cpp
@@ -37,6 +37,8 @@
#include "formats/2d_dsk.h"
#include "formats/mz_cas.h"
+#include "utf8.h"
+
#define MASTER_CLOCK 17.73447_MHz_XTAL / 5 /* TODO: was 4 MHz, but otherwise cassette won't work due of a bug with MZF support ... */
diff --git a/src/mame/siemens/pcd_kbd.cpp b/src/mame/siemens/pcd_kbd.cpp
index 83e8adb303e..356dfdc26b4 100644
--- a/src/mame/siemens/pcd_kbd.cpp
+++ b/src/mame/siemens/pcd_kbd.cpp
@@ -7,6 +7,8 @@
#include "sound/spkrdev.h"
#include "speaker.h"
+#include "utf8.h"
+
DEFINE_DEVICE_TYPE(PCD_KEYBOARD, pcd_keyboard_device, "pcd_kbd", "Siemens PC-D Keyboard")
ROM_START( pcd_keyboard )
diff --git a/src/mame/sinclair/ql.cpp b/src/mame/sinclair/ql.cpp
index 1a443e048d1..8b1d6081713 100644
--- a/src/mame/sinclair/ql.cpp
+++ b/src/mame/sinclair/ql.cpp
@@ -89,6 +89,8 @@
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
#define SCREEN_TAG "screen"
diff --git a/src/mame/skeleton/aaa.cpp b/src/mame/skeleton/aaa.cpp
index c69323d927d..83fc4b23bac 100644
--- a/src/mame/skeleton/aaa.cpp
+++ b/src/mame/skeleton/aaa.cpp
@@ -7,14 +7,18 @@ Skeleton driver for Ann Arbor Ambassador terminal.
************************************************************************************************************************************/
#include "emu.h"
+
#include "bus/rs232/rs232.h"
#include "cpu/z80/z80.h"
#include "machine/74259.h"
#include "machine/input_merger.h"
#include "machine/scn_pci.h"
#include "machine/nvram.h"
+
#include "screen.h"
+#include "utf8.h"
+
class aaa_state : public driver_device
{
public:
diff --git a/src/mame/skeleton/blw700i.cpp b/src/mame/skeleton/blw700i.cpp
index 496b2e78055..62feb52b936 100644
--- a/src/mame/skeleton/blw700i.cpp
+++ b/src/mame/skeleton/blw700i.cpp
@@ -14,12 +14,16 @@
****************************************************************************/
#include "emu.h"
+
#include "cpu/h8/h83003.h"
-#include "machine/nvram.h"
#include "machine/at28c16.h"
+#include "machine/nvram.h"
+#include "machine/timer.h"
+
#include "screen.h"
#include "speaker.h"
-#include "machine/timer.h"
+
+#include "utf8.h"
class lw700i_state : public driver_device
{
diff --git a/src/mame/skeleton/eurit.cpp b/src/mame/skeleton/eurit.cpp
index 1bb12cfc320..8fe65e434d8 100644
--- a/src/mame/skeleton/eurit.cpp
+++ b/src/mame/skeleton/eurit.cpp
@@ -7,12 +7,16 @@
****************************************************************************/
#include "emu.h"
+
#include "cpu/m37710/m37710.h"
#include "machine/am79c30.h"
#include "video/hd44780.h"
+
#include "emupal.h"
#include "screen.h"
+#include "utf8.h"
+
class eurit_state : public driver_device
{
public:
diff --git a/src/mame/skeleton/gm1000.cpp b/src/mame/skeleton/gm1000.cpp
index a7fa3a80860..76e2c75b6a0 100644
--- a/src/mame/skeleton/gm1000.cpp
+++ b/src/mame/skeleton/gm1000.cpp
@@ -13,6 +13,7 @@
#include "video/hd44780.h"
#include "emupal.h"
#include "screen.h"
+#include "utf8.h"
namespace {
diff --git a/src/mame/skeleton/itt3030.cpp b/src/mame/skeleton/itt3030.cpp
index 358bfcc453c..d0d53336263 100644
--- a/src/mame/skeleton/itt3030.cpp
+++ b/src/mame/skeleton/itt3030.cpp
@@ -192,6 +192,7 @@ Beeper Circuit, all ICs shown:
#include "emu.h"
+
#include "cpu/mcs48/mcs48.h" //Keyboard MCU ... talks to the 8278 on the keyboard circuit
#include "cpu/z80/z80.h"
#include "imagedev/floppy.h"
@@ -200,12 +201,15 @@ Beeper Circuit, all ICs shown:
#include "machine/wd_fdc.h"
#include "sound/beep.h"
#include "video/tms9927.h" //Display hardware
+
#include "emupal.h"
#include "screen.h"
#include "softlist_dev.h"
#include "speaker.h"
+
#include "formats/itt3030_dsk.h"
-#include "debugger.h"
+
+#include "utf8.h"
#define MAIN_CLOCK XTAL_4.194MHz
diff --git a/src/mame/skeleton/shine.cpp b/src/mame/skeleton/shine.cpp
index 4299785e21f..6218cac3b0d 100644
--- a/src/mame/skeleton/shine.cpp
+++ b/src/mame/skeleton/shine.cpp
@@ -19,6 +19,7 @@ but the syntax has yet to be worked out. BAUD [0-9] is allowed but what is it do
************************************************************************************/
#include "emu.h"
+
#include "cpu/m6502/m6502.h"
#include "imagedev/cassette.h"
#include "imagedev/floppy.h"
@@ -29,10 +30,13 @@ but the syntax has yet to be worked out. BAUD [0-9] is allowed but what is it do
#include "sound/spkrdev.h"
#include "video/mc6847.h"
#include "bus/centronics/ctronics.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
class shine_state : public driver_device
{
diff --git a/src/mame/skeleton/squale.cpp b/src/mame/skeleton/squale.cpp
index 1f3fc1d60fe..19695481447 100644
--- a/src/mame/skeleton/squale.cpp
+++ b/src/mame/skeleton/squale.cpp
@@ -95,6 +95,8 @@ TODO
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
#define MAIN_CLOCK 14_MHz_XTAL
#define AY_CLOCK MAIN_CLOCK / 8 /* 1.75 Mhz */
diff --git a/src/mame/svi/svi318.cpp b/src/mame/svi/svi318.cpp
index 12b095ac0c3..b79938c7dec 100644
--- a/src/mame/svi/svi318.cpp
+++ b/src/mame/svi/svi318.cpp
@@ -27,6 +27,8 @@
#include "formats/svi_cas.h"
+#include "utf8.h"
+
//**************************************************************************
// CONSTANTS & MACROS
diff --git a/src/mame/ta/alphatpc16.cpp b/src/mame/ta/alphatpc16.cpp
index 12de988b9bd..781bbec942d 100644
--- a/src/mame/ta/alphatpc16.cpp
+++ b/src/mame/ta/alphatpc16.cpp
@@ -58,10 +58,13 @@ via the PC 16 Terminal, operates independently after programming), connects to t
#include "sound/beep.h"
#include "cpu/mcs48/mcs48.h"
#include "cpu/z80/z80.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
namespace {
@@ -77,10 +80,7 @@ public:
m_wdfdc(*this, "wdfdc"),
m_ram(*this, RAM_TAG),
m_z80(*this, "z80"),
- m_flop0(*this, "wdfdc:0"),
- m_flop1(*this, "wdfdc:1"),
- m_flop2(*this, "wdfdc:2"),
- m_flop3(*this, "wdfdc:3"),
+ m_flop(*this, "wdfdc:%u", 0),
m_keys(*this, "KEYS.%u", 0)
{ }
@@ -115,10 +115,7 @@ private:
required_device<wd1770_device> m_wdfdc;
required_device<ram_device> m_ram;
required_device<cpu_device> m_z80;
- required_device<floppy_connector> m_flop0;
- required_device<floppy_connector> m_flop1;
- required_device<floppy_connector> m_flop2;
- required_device<floppy_connector> m_flop3;
+ required_device_array<floppy_connector, 4> m_flop;
required_ioport_array<8> m_keys;
u8 m_p1 = 0, m_p2 = 0, m_data = 0, m_p40 = 0;
@@ -128,7 +125,7 @@ private:
void alphatpc16_state::machine_start()
{
m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - 1, m_ram->pointer());
- m_wdfdc->set_floppy(m_flop0->get_device());
+ m_wdfdc->set_floppy(m_flop[0]->get_device());
m_bsy = false;
m_req = false;
@@ -171,16 +168,16 @@ u8 alphatpc16_state::p00_r()
switch(m_p40 & 0xf0)
{
case 0x00:
- ret |= m_flop0->get_device()->exists() << 3;
+ ret |= m_flop[0]->get_device()->exists() << 3;
break;
case 0x10:
- ret |= m_flop1->get_device()->exists() << 3;
+ ret |= m_flop[1]->get_device()->exists() << 3;
break;
case 0x20:
- ret |= m_flop2->get_device()->exists() << 3;
+ ret |= m_flop[2]->get_device()->exists() << 3;
break;
case 0x40:
- ret |= m_flop3->get_device()->exists() << 3;
+ ret |= m_flop[3]->get_device()->exists() << 3;
break;
}
return ret;
@@ -191,20 +188,20 @@ void alphatpc16_state::p40_w(u8 data)
switch(data & 0xf0)
{
case 0x00:
- m_wdfdc->set_floppy(m_flop0->get_device());
- m_flop0->get_device()->ss_w(BIT(data, 2));
+ m_wdfdc->set_floppy(m_flop[0]->get_device());
+ m_flop[0]->get_device()->ss_w(BIT(data, 2));
break;
case 0x10:
- m_wdfdc->set_floppy(m_flop1->get_device());
- m_flop1->get_device()->ss_w(BIT(data, 2));
+ m_wdfdc->set_floppy(m_flop[1]->get_device());
+ m_flop[1]->get_device()->ss_w(BIT(data, 2));
break;
case 0x20:
- m_wdfdc->set_floppy(m_flop2->get_device());
- m_flop2->get_device()->ss_w(BIT(data, 2));
+ m_wdfdc->set_floppy(m_flop[2]->get_device());
+ m_flop[2]->get_device()->ss_w(BIT(data, 2));
break;
case 0x40:
- m_wdfdc->set_floppy(m_flop3->get_device());
- m_flop3->get_device()->ss_w(BIT(data, 2));
+ m_wdfdc->set_floppy(m_flop[3]->get_device());
+ m_flop[3]->get_device()->ss_w(BIT(data, 2));
break;
}
m_p40 = data;
@@ -503,11 +500,11 @@ void alphatpc16_state::alphatpc16(machine_config &config)
m_z80->set_addrmap(AS_PROGRAM, &alphatpc16_state::apc16_z80_map);
m_z80->set_addrmap(AS_IO, &alphatpc16_state::apc16_z80_io);
WD1770(config, m_wdfdc, 8_MHz_XTAL);
- FLOPPY_CONNECTOR(config, m_flop0, atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
- dynamic_cast<device_slot_interface *>(m_flop0.target())->set_fixed(true);
- FLOPPY_CONNECTOR(config, m_flop1, atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
- FLOPPY_CONNECTOR(config, m_flop2, atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
- FLOPPY_CONNECTOR(config, m_flop3, atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
+ FLOPPY_CONNECTOR(config, m_flop[0], atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
+ dynamic_cast<device_slot_interface *>(m_flop[0].target())->set_fixed(true);
+ FLOPPY_CONNECTOR(config, m_flop[1], atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
+ FLOPPY_CONNECTOR(config, m_flop[2], atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
+ FLOPPY_CONNECTOR(config, m_flop[3], atpc16_floppies, "525dd", floppy_image_device::default_mfm_floppy_formats);
i8741a_device& i8741(I8741A(config, "i8741", 4.608_MHz_XTAL));
i8741.p1_in_cb().set(FUNC(alphatpc16_state::p1_r));
diff --git a/src/mame/taito/tc0110pcr.h b/src/mame/taito/tc0110pcr.h
index 0cdc8c25c0b..4a5f7c402b5 100644
--- a/src/mame/taito/tc0110pcr.h
+++ b/src/mame/taito/tc0110pcr.h
@@ -26,7 +26,7 @@ protected:
virtual void device_post_load() override;
// device_palette_interface overrides
- virtual u32 palette_entries() const override { return TC0110PCR_RAM_SIZE; }
+ virtual u32 palette_entries() const noexcept override { return TC0110PCR_RAM_SIZE; }
private:
static const unsigned TC0110PCR_RAM_SIZE = 0x2000 / 2;
diff --git a/src/mame/tangerine/microtan.cpp b/src/mame/tangerine/microtan.cpp
index f631a519921..7577f2037a3 100644
--- a/src/mame/tangerine/microtan.cpp
+++ b/src/mame/tangerine/microtan.cpp
@@ -63,6 +63,8 @@
#include "screen.h"
#include "softlist_dev.h"
+#include "utf8.h"
+
void microtan_state::mt65_map(address_map &map)
{
diff --git a/src/mame/tangerine/oric.cpp b/src/mame/tangerine/oric.cpp
index cd8b16d9b35..bd16f31a4d3 100644
--- a/src/mame/tangerine/oric.cpp
+++ b/src/mame/tangerine/oric.cpp
@@ -38,6 +38,8 @@
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
#include "formats/oric_dsk.h"
#include "formats/oric_tap.h"
diff --git a/src/mame/telenova/compiskb.cpp b/src/mame/telenova/compiskb.cpp
index 0ecb0a99193..c20d71434fb 100644
--- a/src/mame/telenova/compiskb.cpp
+++ b/src/mame/telenova/compiskb.cpp
@@ -11,6 +11,8 @@
#include "speaker.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/mame/telercas/tmc600.cpp b/src/mame/telercas/tmc600.cpp
index 9bb07fb41f5..65ad4d3d5ea 100644
--- a/src/mame/telercas/tmc600.cpp
+++ b/src/mame/telercas/tmc600.cpp
@@ -97,6 +97,8 @@ Notes:
#include "emu.h"
#include "tmc600.h"
+#include "utf8.h"
+
uint8_t tmc600_state::rtc_r()
{
m_rtc_int = m_vismac_reg_latch >> 3;
diff --git a/src/mame/televideo/tv910.cpp b/src/mame/televideo/tv910.cpp
index 3ef568eb70f..30b3c43abad 100644
--- a/src/mame/televideo/tv910.cpp
+++ b/src/mame/televideo/tv910.cpp
@@ -24,6 +24,7 @@
****************************************************************************/
#include "emu.h"
+
#include "bus/rs232/rs232.h"
#include "cpu/m6502/m6502.h"
#include "machine/input_merger.h"
@@ -31,9 +32,12 @@
#include "machine/mos6551.h"
#include "sound/beep.h"
#include "video/mc6845.h"
+
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
#define ACIA_TAG "acia"
#define CRTC_TAG "crtc"
#define RS232_TAG "rs232"
diff --git a/src/mame/televideo/tv950kb.cpp b/src/mame/televideo/tv950kb.cpp
index 77614c30af3..f36aecc0cde 100644
--- a/src/mame/televideo/tv950kb.cpp
+++ b/src/mame/televideo/tv950kb.cpp
@@ -2,12 +2,13 @@
// copyright-holders:AJR
/***********************************************************************************************************************************
-TeleVideo 950 101-key serial keyboard emulation.
+ TeleVideo 950 101-key serial keyboard emulation.
************************************************************************************************************************************/
#include "emu.h"
#include "tv950kb.h"
+#include "utf8.h"
DEFINE_DEVICE_TYPE(TV950_KEYBOARD, tv950kb_device, "tv950kb", "TeleVideo 950 Keyboard")
diff --git a/src/mame/thomson/thomson.cpp b/src/mame/thomson/thomson.cpp
index fb4cf47ffe2..0bd3d83b58b 100644
--- a/src/mame/thomson/thomson.cpp
+++ b/src/mame/thomson/thomson.cpp
@@ -97,6 +97,8 @@
#include "formats/basicdsk.h"
#include "formats/cd90_640_dsk.h"
+#include "utf8.h"
+
/**************************** common *******************************/
diff --git a/src/mame/ti/exelv.cpp b/src/mame/ti/exelv.cpp
index 82195854232..40765b98e28 100644
--- a/src/mame/ti/exelv.cpp
+++ b/src/mame/ti/exelv.cpp
@@ -113,6 +113,8 @@ TODO:
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
#define VERBOSE 0
#include "logmacro.h"
diff --git a/src/mame/ti/ti74.cpp b/src/mame/ti/ti74.cpp
index 8150a859f44..80208cfaadc 100644
--- a/src/mame/ti/ti74.cpp
+++ b/src/mame/ti/ti74.cpp
@@ -80,6 +80,8 @@
#include "screen.h"
#include "softlist_dev.h"
+#include "utf8.h"
+
#include "ti74.lh"
#include "ti95.lh"
diff --git a/src/mame/tiki/tiki100.cpp b/src/mame/tiki/tiki100.cpp
index ab35fbb6ca6..0ed7af5e76b 100644
--- a/src/mame/tiki/tiki100.cpp
+++ b/src/mame/tiki/tiki100.cpp
@@ -34,6 +34,8 @@
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
/* Memory Banking */
diff --git a/src/mame/tomy/tutor.cpp b/src/mame/tomy/tutor.cpp
index bb566795c0e..096ac2f4a46 100644
--- a/src/mame/tomy/tutor.cpp
+++ b/src/mame/tomy/tutor.cpp
@@ -182,6 +182,8 @@ A=AMA, P=PRO, these keys don't exist, and so the games cannot be played.
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
+
namespace {
diff --git a/src/mame/trainer/amico2k.cpp b/src/mame/trainer/amico2k.cpp
index 78dc197e8ae..96877b7a607 100644
--- a/src/mame/trainer/amico2k.cpp
+++ b/src/mame/trainer/amico2k.cpp
@@ -33,6 +33,8 @@
#include "emu.h"
#include "cpu/m6502/m6502.h"
#include "machine/i8255.h"
+#include "utf8.h"
+
#include "amico2k.lh"
diff --git a/src/mame/trs/lnw80.cpp b/src/mame/trs/lnw80.cpp
index 5f1fa035c82..42beaec46f7 100644
--- a/src/mame/trs/lnw80.cpp
+++ b/src/mame/trs/lnw80.cpp
@@ -79,6 +79,7 @@ To Do / Status:
#include "machine/input_merger.h"
#include "formats/td0_dsk.h"
#include "softlist_dev.h"
+#include "utf8.h"
namespace {
diff --git a/src/mame/trs/max80.cpp b/src/mame/trs/max80.cpp
index e5b6f0f0ae9..3406015b5aa 100644
--- a/src/mame/trs/max80.cpp
+++ b/src/mame/trs/max80.cpp
@@ -57,6 +57,7 @@ Status: Beeps every so often. Unable to read the disk.
***************************************************************************/
#include "emu.h"
+
#include "cpu/z80/z80.h"
//#include "machine/ram.h"
#include "imagedev/floppy.h"
@@ -70,13 +71,17 @@ Status: Beeps every so often. Unable to read the disk.
#include "sound/beep.h"
#include "machine/timer.h"
#include "video/mc6845.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+
#include "formats/imd_dsk.h"
//#include "formats/trs80_dsk.h"
//#include "formats/dmk_dsk.h"
+#include "utf8.h"
+
class max80_state : public driver_device
{
public:
diff --git a/src/mame/trs/meritum.cpp b/src/mame/trs/meritum.cpp
index 51a200e91fc..fe20b986d81 100644
--- a/src/mame/trs/meritum.cpp
+++ b/src/mame/trs/meritum.cpp
@@ -66,6 +66,8 @@ For Model III:
#include "emupal.h"
#include "softlist_dev.h"
+#include "utf8.h"
+
class meritum_state : public trs80_state
{
public:
diff --git a/src/mame/trs/radionic.cpp b/src/mame/trs/radionic.cpp
index 628480496e9..008e8b92ecf 100644
--- a/src/mame/trs/radionic.cpp
+++ b/src/mame/trs/radionic.cpp
@@ -114,6 +114,8 @@ To Do / Status:
#include "machine/clock.h"
#include "bus/rs232/rs232.h"
#include "softlist_dev.h"
+#include "utf8.h"
+
#define MASTER_XTAL 12164800
diff --git a/src/mame/trs/trs80.cpp b/src/mame/trs/trs80.cpp
index 154bbd19612..8af755ecefb 100644
--- a/src/mame/trs/trs80.cpp
+++ b/src/mame/trs/trs80.cpp
@@ -157,6 +157,7 @@ ht1080z works
#include "machine/input_merger.h"
#include "sound/ay8910.h"
#include "softlist_dev.h"
+#include "utf8.h"
void trs80_state::trs80_mem(address_map &map)
diff --git a/src/mame/trs/trs80m2kb.cpp b/src/mame/trs/trs80m2kb.cpp
index 2aa95d29190..d1e4c5eb322 100644
--- a/src/mame/trs/trs80m2kb.cpp
+++ b/src/mame/trs/trs80m2kb.cpp
@@ -9,6 +9,8 @@
#include "emu.h"
#include "trs80m2kb.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/mame/trs/trs80m3.cpp b/src/mame/trs/trs80m3.cpp
index 17e5e80c9ce..21f1e9852d5 100644
--- a/src/mame/trs/trs80m3.cpp
+++ b/src/mame/trs/trs80m3.cpp
@@ -82,6 +82,8 @@ trs80m4p: Floppy not working, so machine is useless.
#include "formats/trs80_dsk.h"
#include "formats/dmk_dsk.h"
+#include "utf8.h"
+
void trs80m3_state::m3_mem(address_map &map)
diff --git a/src/mame/ussr/pyl601.cpp b/src/mame/ussr/pyl601.cpp
index f66e5aeafc6..1cb0ffbcafc 100644
--- a/src/mame/ussr/pyl601.cpp
+++ b/src/mame/ussr/pyl601.cpp
@@ -50,6 +50,8 @@ The BASIC
#include "formats/pyldin_dsk.h"
+#include "utf8.h"
+
class pyl601_state : public driver_device
{
diff --git a/src/mame/visual/v102_kbd.cpp b/src/mame/visual/v102_kbd.cpp
index e4c3c98389f..65580e38556 100644
--- a/src/mame/visual/v102_kbd.cpp
+++ b/src/mame/visual/v102_kbd.cpp
@@ -15,6 +15,8 @@ through software commands.
#include "emu.h"
#include "v102_kbd.h"
+#include "utf8.h"
+
DEFINE_DEVICE_TYPE(V102_KEYBOARD, v102_keyboard_device, "v102_kbd", "Visual 102 Keyboard")
DEFINE_DEVICE_TYPE(V550_KEYBOARD, v550_keyboard_device, "v550_kbd", "Visual 550 Keyboard")
diff --git a/src/mame/visual/v1050.cpp b/src/mame/visual/v1050.cpp
index a909fd33282..556a86d4f93 100644
--- a/src/mame/visual/v1050.cpp
+++ b/src/mame/visual/v1050.cpp
@@ -157,6 +157,8 @@ Notes:
#include "softlist.h"
#include "speaker.h"
+#include "utf8.h"
+
void v1050_state::set_interrupt(int line, int state)
{
diff --git a/src/mame/vtech/crvision.cpp b/src/mame/vtech/crvision.cpp
index d6c2ee94a5b..86dede84006 100644
--- a/src/mame/vtech/crvision.cpp
+++ b/src/mame/vtech/crvision.cpp
@@ -149,6 +149,7 @@ TODO:
#include "crvision.h"
#include "softlist_dev.h"
#include "speaker.h"
+#include "utf8.h"
/***************************************************************************
diff --git a/src/mame/vtech/laser3k.cpp b/src/mame/vtech/laser3k.cpp
index 0f767796d9d..686958d4821 100644
--- a/src/mame/vtech/laser3k.cpp
+++ b/src/mame/vtech/laser3k.cpp
@@ -31,16 +31,20 @@
***************************************************************************/
#include "emu.h"
+
#include "cpu/m6502/m6502.h"
#include "machine/bankdev.h"
#include "machine/ram.h"
#include "machine/kb3600.h"
#include "sound/sn76496.h"
#include "sound/spkrdev.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
enum
{
TEXT = 0,
diff --git a/src/mame/vtech/lcmate2.cpp b/src/mame/vtech/lcmate2.cpp
index f4a64bf1c4b..e5d13c6d502 100644
--- a/src/mame/vtech/lcmate2.cpp
+++ b/src/mame/vtech/lcmate2.cpp
@@ -30,15 +30,19 @@
****************************************************************************/
#include "emu.h"
+
#include "cpu/z80/z80.h"
#include "machine/nvram.h"
#include "machine/rp5c15.h"
#include "sound/spkrdev.h"
#include "video/hd44780.h"
+
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
class lcmate2_state : public driver_device
{
diff --git a/src/mame/vtech/pc4.cpp b/src/mame/vtech/pc4.cpp
index cb1d22aa615..bf8e634ad7b 100644
--- a/src/mame/vtech/pc4.cpp
+++ b/src/mame/vtech/pc4.cpp
@@ -36,6 +36,8 @@
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
uint8_t pc4_state::kb_r(offs_t offset)
{
diff --git a/src/mame/wang/wangpckb.cpp b/src/mame/wang/wangpckb.cpp
index b6bf1f62566..7e77c60829a 100644
--- a/src/mame/wang/wangpckb.cpp
+++ b/src/mame/wang/wangpckb.cpp
@@ -54,6 +54,8 @@ Notes:
#include "speaker.h"
+#include "utf8.h"
+
//**************************************************************************
// MACROS / CONSTANTS
diff --git a/src/mame/wyse/wy50kb.cpp b/src/mame/wyse/wy50kb.cpp
index d6f480fa39e..0a7533fa7c2 100644
--- a/src/mame/wyse/wy50kb.cpp
+++ b/src/mame/wyse/wy50kb.cpp
@@ -32,6 +32,8 @@
#include "emu.h"
#include "wy50kb.h"
+#include "utf8.h"
+
DEFINE_DEVICE_TYPE(WY50_KEYBOARD, wy50_keyboard_device, "wy50kb", "WY-50 Keyboard")
DEFINE_DEVICE_TYPE(WY100_KEYBOARD, wy100_keyboard_device, "wy100kb", "WY-100 Keyboard")
diff --git a/src/mame/xerox/x820kb.cpp b/src/mame/xerox/x820kb.cpp
index 1812a4e8d91..de9a11e356c 100644
--- a/src/mame/xerox/x820kb.cpp
+++ b/src/mame/xerox/x820kb.cpp
@@ -43,6 +43,8 @@ Notes:
#include "emu.h"
#include "x820kb.h"
+#include "utf8.h"
+
//**************************************************************************
diff --git a/src/mame/yamaha/ymtx81z.cpp b/src/mame/yamaha/ymtx81z.cpp
index e280bdcb014..e237f4493ec 100644
--- a/src/mame/yamaha/ymtx81z.cpp
+++ b/src/mame/yamaha/ymtx81z.cpp
@@ -19,6 +19,8 @@
#include "screen.h"
#include "speaker.h"
+#include "utf8.h"
+
#include "tx81z.lh"
class ymtx81z_state : public driver_device
diff --git a/src/osd/eivc.h b/src/osd/eivc.h
index 2ffd0e7633b..d17fbc2d0c4 100644
--- a/src/osd/eivc.h
+++ b/src/osd/eivc.h
@@ -14,6 +14,7 @@
#pragma once
#include <intrin.h>
+#include <stdlib.h>
#pragma intrinsic(_BitScanReverse)
#ifdef PTR64
#pragma intrinsic(_BitScanReverse64)
@@ -91,4 +92,44 @@ __forceinline uint8_t _count_leading_ones_64(uint64_t value)
}
#endif
+
+/*-------------------------------------------------
+ rotl_32 - circularly shift a 32-bit value left
+ by the specified number of bits (modulo 32)
+-------------------------------------------------*/
+
+#ifndef rotl_32
+#define rotl_32 _rotl
+#endif
+
+
+/*-------------------------------------------------
+ rotr_32 - circularly shift a 32-bit value right
+ by the specified number of bits (modulo 32)
+-------------------------------------------------*/
+
+#ifndef rotr_32
+#define rotr_32 _rotr
+#endif
+
+
+/*-------------------------------------------------
+ rotl_64 - circularly shift a 64-bit value left
+ by the specified number of bits (modulo 64)
+-------------------------------------------------*/
+
+#ifndef rotl_64
+#define rotl_64 _rotl64
+#endif
+
+
+/*-------------------------------------------------
+ rotr_64 - circularly shift a 64-bit value right
+ by the specified number of bits (modulo 64)
+-------------------------------------------------*/
+
+#ifndef rotr_64
+#define rotr_64 _rotr64
+#endif
+
#endif // MAME_OSD_EIVC_H
diff --git a/src/osd/eminline.h b/src/osd/eminline.h
index 02bd22b3fdb..685025416b9 100644
--- a/src/osd/eminline.h
+++ b/src/osd/eminline.h
@@ -51,6 +51,19 @@
***************************************************************************/
/*-------------------------------------------------
+ mul_16x16 - perform a signed 16 bit x 16 bit
+ multiply and return the full 32 bit result
+-------------------------------------------------*/
+
+#ifndef mul_16x16
+constexpr int32_t mul_16x16(int16_t a, int16_t b)
+{
+ return int32_t(a) * int32_t(b);
+}
+#endif
+
+
+/*-------------------------------------------------
mul_32x32 - perform a signed 32 bit x 32 bit
multiply and return the full 64 bit result
-------------------------------------------------*/
@@ -474,6 +487,74 @@ inline unsigned population_count_64(uint64_t val)
#endif
+/*-------------------------------------------------
+ rotl_32 - circularly shift a 32-bit value left
+ by the specified number of bits (modulo 32)
+-------------------------------------------------*/
+
+#ifndef rotl_32
+constexpr uint32_t rotl_32(uint32_t val, int shift)
+{
+ shift &= 31;
+ if (shift)
+ return val << shift | val >> (32 - shift);
+ else
+ return val;
+}
+#endif
+
+
+/*-------------------------------------------------
+ rotr_32 - circularly shift a 32-bit value right
+ by the specified number of bits (modulo 32)
+-------------------------------------------------*/
+
+#ifndef rotr_32
+constexpr uint32_t rotr_32(uint32_t val, int shift)
+{
+ shift &= 31;
+ if (shift)
+ return val >> shift | val << (32 - shift);
+ else
+ return val;
+}
+#endif
+
+
+/*-------------------------------------------------
+ rotl_64 - circularly shift a 64-bit value left
+ by the specified number of bits (modulo 64)
+-------------------------------------------------*/
+
+#ifndef rotl_64
+constexpr uint64_t rotl_64(uint64_t val, int shift)
+{
+ shift &= 63;
+ if (shift)
+ return val << shift | val >> (64 - shift);
+ else
+ return val;
+}
+#endif
+
+
+/*-------------------------------------------------
+ rotr_64 - circularly shift a 64-bit value right
+ by the specified number of bits (modulo 64)
+-------------------------------------------------*/
+
+#ifndef rotr_64
+constexpr uint64_t rotr_64(uint64_t val, int shift)
+{
+ shift &= 63;
+ if (shift)
+ return val >> shift | val << (64 - shift);
+ else
+ return val;
+}
+#endif
+
+
/***************************************************************************
INLINE TIMING FUNCTIONS
***************************************************************************/
diff --git a/src/tools/chdman.cpp b/src/tools/chdman.cpp
index e35f742b740..e24d5a58588 100644
--- a/src/tools/chdman.cpp
+++ b/src/tools/chdman.cpp
@@ -15,6 +15,7 @@
#include "corefile.h"
#include "hashing.h"
#include "md5.h"
+#include "path.h"
#include "strformat.h"
#include "vbiparse.h"
diff --git a/src/tools/floptool.cpp b/src/tools/floptool.cpp
index 4ca0c39b1ca..eaf43d0861e 100644
--- a/src/tools/floptool.cpp
+++ b/src/tools/floptool.cpp
@@ -8,9 +8,9 @@
#include "image_handler.h"
-#include "corefile.h"
#include "corestr.h"
#include "ioprocs.h"
+#include "path.h"
#include "strformat.h"
#include "osdcomm.h"
diff --git a/src/tools/imgtool/imgtool.cpp b/src/tools/imgtool/imgtool.cpp
index 7bb230d1e38..445fba33ebb 100644
--- a/src/tools/imgtool/imgtool.cpp
+++ b/src/tools/imgtool/imgtool.cpp
@@ -16,9 +16,9 @@
#include "formats/imageutl.h"
-#include "corefile.h"
#include "corestr.h"
#include "opresolv.h"
+#include "path.h"
#include <cstdarg>
#include <cstdio>
diff --git a/src/tools/imgtool/main.cpp b/src/tools/imgtool/main.cpp
index d8a166e247f..8dd6affbc43 100644
--- a/src/tools/imgtool/main.cpp
+++ b/src/tools/imgtool/main.cpp
@@ -13,9 +13,9 @@
#include "main.h"
#include "modules.h"
-#include "corefile.h"
#include "corestr.h"
#include "opresolv.h"
+#include "path.h"
#include "strformat.h"
#include "unicode.h"
diff --git a/src/tools/imgtool/modules/mac.cpp b/src/tools/imgtool/modules/mac.cpp
index 0266f8affb8..0049136c179 100644
--- a/src/tools/imgtool/modules/mac.cpp
+++ b/src/tools/imgtool/modules/mac.cpp
@@ -97,6 +97,7 @@
#include "formats/ap_dsk35.h"
#include "formats/imageutl.h"
+
#include "opresolv.h"
#include <cctype>
@@ -120,6 +121,26 @@
#pragma mark MISCELLANEOUS UTILITIES
#endif
+static const uint8_t apple35_tracklen_800kb[80] =
+{
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
+};
+
+static int apple35_sectors_per_track(floppy_image_legacy *image, int track)
+{
+ int sectors;
+
+ assert(track >= 0);
+ assert(track < std::size(apple35_tracklen_800kb));
+
+ sectors = apple35_tracklen_800kb[track];
+ return sectors;
+}
+
struct UINT16BE
{
uint8_t bytes[2];
@@ -6375,7 +6396,7 @@ static void generic_mac_get_info(const imgtool_class *imgclass, uint32_t state,
case IMGTOOLINFO_PTR_SET_ATTRS: info->set_attrs = mac_image_setattrs; break;
case IMGTOOLINFO_PTR_GET_ICON_INFO: info->get_iconinfo = mac_image_geticoninfo; break;
case IMGTOOLINFO_PTR_SUGGEST_TRANSFER: info->suggest_transfer = mac_image_suggesttransfer; break;
- case IMGTOOLINFO_PTR_FLOPPY_FORMAT: info->p = (void *) floppyoptions_apple35_mac; break;
+ // case IMGTOOLINFO_PTR_FLOPPY_FORMAT: info->p = (void *) floppyoptions_apple35_mac; break;
case IMGTOOLINFO_PTR_CHARCONVERTER: info->charconverter = &charconverter_macos_roman; break;
}
}
diff --git a/src/tools/imgtool/modules/prodos.cpp b/src/tools/imgtool/modules/prodos.cpp
index e196d53b491..32170b3ecae 100644
--- a/src/tools/imgtool/modules/prodos.cpp
+++ b/src/tools/imgtool/modules/prodos.cpp
@@ -136,6 +136,26 @@
#define ROOTDIR_BLOCK 2
#define BLOCK_SIZE 512
+static const uint8_t apple35_tracklen_800kb[80] =
+{
+ 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
+};
+
+static int apple35_sectors_per_track(floppy_image_legacy *image, int track)
+{
+ int sectors;
+
+ assert(track >= 0);
+ assert(track < std::size(apple35_tracklen_800kb));
+
+ sectors = apple35_tracklen_800kb[track];
+ return sectors;
+}
+
struct prodos_diskinfo
{
imgtoolerr_t (*load_block)(imgtool::image &image, int block, void *buffer);
@@ -2245,7 +2265,7 @@ void prodos_525_get_info(const imgtool_class *imgclass, uint32_t state, union im
/* --- the following bits of info are returned as pointers to data or functions --- */
case IMGTOOLINFO_PTR_FLOPPY_CREATE: info->create = prodos_diskimage_create_525; break;
case IMGTOOLINFO_PTR_FLOPPY_OPEN: info->open = prodos_diskimage_open_525; break;
- case IMGTOOLINFO_PTR_FLOPPY_FORMAT: info->p = (void *) floppyoptions_apple2; break;
+ // case IMGTOOLINFO_PTR_FLOPPY_FORMAT: info->p = (void *) floppyoptions_apple2; break;
default: generic_prodos_get_info(imgclass, state, info); break;
}
@@ -2263,7 +2283,7 @@ void prodos_35_get_info(const imgtool_class *imgclass, uint32_t state, union img
/* --- the following bits of info are returned as pointers to data or functions --- */
case IMGTOOLINFO_PTR_FLOPPY_CREATE: info->create = prodos_diskimage_create_35; break;
case IMGTOOLINFO_PTR_FLOPPY_OPEN: info->open = prodos_diskimage_open_35; break;
- case IMGTOOLINFO_PTR_FLOPPY_FORMAT: info->p = (void *) floppyoptions_apple35_iigs; break;
+ // case IMGTOOLINFO_PTR_FLOPPY_FORMAT: info->p = (void *) floppyoptions_apple35_iigs; break;
default: generic_prodos_get_info(imgclass, state, info); break;
}
diff --git a/src/tools/imgtool/stream.cpp b/src/tools/imgtool/stream.cpp
index 5bd654af3d7..bd9ea3bd286 100644
--- a/src/tools/imgtool/stream.cpp
+++ b/src/tools/imgtool/stream.cpp
@@ -14,6 +14,7 @@
#include "corefile.h"
#include "ioprocs.h"
+#include "path.h"
#include "unzip.h"
#include <cassert>
diff --git a/src/tools/unidasm.cpp b/src/tools/unidasm.cpp
index 3751db851a5..e9d99c82255 100644
--- a/src/tools/unidasm.cpp
+++ b/src/tools/unidasm.cpp
@@ -387,7 +387,6 @@ static const dasm_table_entry dasm_table[] =
{ "arc", be, 0, []() -> util::disasm_interface * { return new arc_disassembler; } },
{ "arcompact", le, 0, []() -> util::disasm_interface * { return new arcompact_disassembler; } },
{ "arm", le, 0, []() -> util::disasm_interface * { return new arm_disassembler; } },
- { "arm_be", be, 0, []() -> util::disasm_interface * { return new arm_disassembler; } },
{ "arm7", le, 0, []() -> util::disasm_interface * { arm7_unidasm.t_flag = false; return new arm7_disassembler(&arm7_unidasm); } },
{ "arm7_be", be, 0, []() -> util::disasm_interface * { arm7_unidasm.t_flag = false; return new arm7_disassembler(&arm7_unidasm); } },
{ "arm7thumb", le, 0, []() -> util::disasm_interface * { arm7_unidasm.t_flag = true; return new arm7_disassembler(&arm7_unidasm); } },