summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/konendev.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/konendev.cpp')
-rw-r--r--src/mame/drivers/konendev.cpp515
1 files changed, 515 insertions, 0 deletions
diff --git a/src/mame/drivers/konendev.cpp b/src/mame/drivers/konendev.cpp
new file mode 100644
index 00000000000..9e8f542eb65
--- /dev/null
+++ b/src/mame/drivers/konendev.cpp
@@ -0,0 +1,515 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+/*
+ Konami Endeavour hardware (gambling games)
+
+
+ Hardware:
+
+ 1. Backplane PCB (GGAT2 PWB(A1) 10000094517)
+ - VGA connector
+ - RJ45 connector
+
+ 2. Main PCB (GGAT2 PWB(B2) 0000093536)
+ - PowerPC 403GCX
+ - Unknown large QFP IC under heatsink (0000057714/Firebeat GCU?)
+ - Xilinx CPLD
+ - 2 x Hynix RAM
+ - 4 x HY57V641620 SDRAM
+ - 2 x Hynix RAM (sound?)
+ - 2 x EPROMs
+ - 1 x SRAM (battery backup?)
+ - 2 x CR2032, 2 x supercaps
+ - Unknown Fujitsu IC
+ - YMZ280B
+ - Sound amplifier with heatsink
+
+ 3. I/O PCB (GGAT2 PWB(B2) ???????????)
+ - H8/3001
+ - EPROM socket
+ - Various CPLDs
+
+ I think they use CF cards for resources, one game has what appears to be a dump of one
+ but the rest don't. It's quite possibly (even likely) that all the sets here are incomplete.
+*/
+
+
+#include "emu.h"
+#include "cpu/powerpc/ppc.h"
+#include "sound/ymz280b.h"
+#include "video/k057714.h"
+#include "machine/nvram.h"
+#include "machine/eepromser.h"
+
+class konendev_state : public driver_device
+{
+public:
+ konendev_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_gcu(*this, "gcu"),
+ m_eeprom(*this, "eeprom")
+ { }
+
+protected:
+ // devices
+ required_device<cpu_device> m_maincpu;
+ required_device<k057714_device> m_gcu;
+ required_device<eeprom_serial_93cxx_device> m_eeprom;
+
+public:
+ DECLARE_DRIVER_INIT(konendev);
+ DECLARE_DRIVER_INIT(enchlamp);
+
+ DECLARE_READ32_MEMBER(mcu2_r);
+ DECLARE_READ32_MEMBER(ifu2_r);
+ DECLARE_READ32_MEMBER(ctrl0_r);
+ DECLARE_READ32_MEMBER(ctrl1_r);
+ DECLARE_READ32_MEMBER(ctrl2_r);
+ DECLARE_READ32_MEMBER(rtc_r);
+ DECLARE_WRITE32_MEMBER(rtc_w);
+ DECLARE_WRITE32_MEMBER(eeprom_w);
+ DECLARE_READ32_MEMBER(sound_data_r);
+ DECLARE_WRITE32_MEMBER(sound_data_w);
+
+ DECLARE_WRITE_LINE_MEMBER(gcu_interrupt);
+ INTERRUPT_GEN_MEMBER(vbl_interrupt);
+
+ UINT8 rtc_dev_r(UINT32 reg);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+};
+
+UINT32 konendev_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ return m_gcu->draw(screen, bitmap, cliprect);
+}
+
+READ32_MEMBER(konendev_state::mcu2_r)
+{
+ UINT32 r = 0;
+
+ if (ACCESSING_BITS_24_31)
+ {
+ r |= 0x11000000; // MCU2 version
+ }
+ if (ACCESSING_BITS_16_23)
+ {
+ r |= (m_eeprom->do_read() ? 0x2 : 0) << 16;
+ }
+ if (ACCESSING_BITS_8_15)
+ {
+ r &= ~0x4000; // MCU2 presence
+ r &= ~0x2000; // IFU2 presence
+ r &= ~0x1000; // FMU2 presence
+ }
+ if (ACCESSING_BITS_0_7)
+ {
+ r |= ioport("DSW")->read() & 0xff;
+
+ //r |= 0x80; // 0 = ram clear?
+ //r |= 0x40; // logic door
+ r |= 0x04; // battery 1 status
+ r |= 0x10; // battery 2 status
+ }
+
+ return r;
+}
+
+READ32_MEMBER(konendev_state::ifu2_r)
+{
+ UINT32 r = 0;
+
+ if (ACCESSING_BITS_0_7)
+ {
+ r |= 0x11; // IFU2 version
+ }
+
+ return r;
+}
+
+// This seems to be Epson RTC-72423
+UINT8 konendev_state::rtc_dev_r(UINT32 reg)
+{
+ switch (reg)
+ {
+ case 0x0: return 9;
+ case 0x1: return 5;
+ case 0x2: return 3;
+ case 0x3: return 2;
+ case 0x4: return 1;
+ case 0x5: return 0;
+ case 0x6: return 7;
+ case 0x7: return 2;
+ case 0x8: return 2;
+ case 0x9: return 1;
+ case 0xa: return 5;
+ case 0xb: return 1;
+ case 0xc: return 3;
+ }
+
+ return 0;
+}
+
+READ32_MEMBER(konendev_state::rtc_r)
+{
+ UINT32 r = 0;
+
+ if (ACCESSING_BITS_24_31)
+ r |= (UINT32)(rtc_dev_r(offset * 4)) << 24;
+ if (ACCESSING_BITS_16_23)
+ r |= (UINT32)(rtc_dev_r((offset * 4)+1)) << 16;
+ if (ACCESSING_BITS_8_15)
+ r |= (UINT32)(rtc_dev_r((offset * 4)+2)) << 8;
+ if (ACCESSING_BITS_0_7)
+ r |= (UINT32)(rtc_dev_r((offset * 4)+3));
+
+ return r;
+}
+
+WRITE32_MEMBER(konendev_state::rtc_w)
+{
+}
+
+READ32_MEMBER(konendev_state::ctrl0_r)
+{
+ return ((UINT32)(ioport("IN1")->read() & 0xffff) << 16) | 0xffff;
+}
+
+READ32_MEMBER(konendev_state::ctrl1_r)
+{
+ // 0x01000000 = main door optic
+ // 0x00000010 = hard meter access
+
+ return 0xfeffffef;
+}
+
+READ32_MEMBER(konendev_state::ctrl2_r)
+{
+ return ((UINT32)(ioport("IN0")->read() & 0xffff) << 16) | 0xffff;
+}
+
+WRITE32_MEMBER(konendev_state::eeprom_w)
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ m_eeprom->di_write((data & 0x04) ? 1 : 0);
+ m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
+ m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
+ }
+}
+
+READ32_MEMBER(konendev_state::sound_data_r)
+{
+ return 0xffffffff;
+}
+
+WRITE32_MEMBER(konendev_state::sound_data_w)
+{
+}
+
+static ADDRESS_MAP_START( konendev_map, AS_PROGRAM, 32, konendev_state )
+ AM_RANGE(0x00000000, 0x00ffffff) AM_RAM
+ AM_RANGE(0x78000000, 0x78000003) AM_READ(mcu2_r)
+ AM_RANGE(0x78080000, 0x7808000f) AM_READWRITE(rtc_r, rtc_w)
+ AM_RANGE(0x780c0000, 0x780c0003) AM_READWRITE(sound_data_r, sound_data_w)
+ AM_RANGE(0x78100000, 0x78100003) AM_WRITE(eeprom_w)
+ AM_RANGE(0x78800000, 0x78800003) AM_READ(ifu2_r)
+ AM_RANGE(0x78800004, 0x78800007) AM_READ(ctrl0_r)
+ AM_RANGE(0x78a00000, 0x78a0001f) AM_READ(ctrl1_r)
+ AM_RANGE(0x78e00000, 0x78e00003) AM_READ(ctrl2_r)
+ AM_RANGE(0x79000000, 0x79000003) AM_DEVWRITE("gcu", k057714_device, fifo_w)
+ AM_RANGE(0x79800000, 0x798000ff) AM_DEVREADWRITE("gcu", k057714_device, read, write)
+ AM_RANGE(0x7a000000, 0x7a01ffff) AM_RAM AM_SHARE("nvram0")
+ AM_RANGE(0x7a100000, 0x7a11ffff) AM_RAM AM_SHARE("nvram1")
+ AM_RANGE(0x7e000000, 0x7f7fffff) AM_ROM AM_REGION("flash", 0)
+ AM_RANGE(0x7ff00000, 0x7fffffff) AM_ROM AM_REGION("program", 0)
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( konendev )
+ PORT_START("IN0")
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) // "Take Win" button
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) // "Gamble" button
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) // "25 Lines" button
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) // "20 Lines" button
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 ) // "15 Lines" button
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) // "10 Lines" button
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON5 ) // "5 Lines" button
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON6 ) // "1 Line" button
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON7 ) // "Reserve" button
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON8 ) // "Collect" button
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON9 ) // "Bet 20" button
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON10 ) // "Bet 10" button
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON11 ) // "Bet 5" button
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON12 ) // "Bet 3" button
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON13 ) // "Bet 2" button
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON14 ) // "Bet 1" button
+
+ PORT_START("IN1")
+ PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_SERVICE( 0x2000, IP_ACTIVE_LOW ) // Audit key
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON16 ) // Reset key
+ PORT_DIPNAME( 0x0800, 0x0800, "Main door switch" )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0400, 0x0400, "Cashbox door" )
+ PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_BIT( 0x0300, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_DIPNAME( 0x0040, 0x0040, "BNA Door" )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, "BNA Transport Exist" )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0010, "BNA Stacker Exist" )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_DIPNAME( 0x0002, 0x0002, "BNA Power" )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x80, 0x80, "Ram Clear" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x00, "Logic Door" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+WRITE_LINE_MEMBER(konendev_state::gcu_interrupt)
+{
+ m_maincpu->set_input_line(INPUT_LINE_IRQ1, state);
+ m_maincpu->set_input_line(INPUT_LINE_IRQ3, state);
+}
+
+
+INTERRUPT_GEN_MEMBER(konendev_state::vbl_interrupt)
+{
+ device.execute().set_input_line(INPUT_LINE_IRQ1, ASSERT_LINE);
+ device.execute().set_input_line(INPUT_LINE_IRQ3, ASSERT_LINE);
+}
+
+static MACHINE_CONFIG_START( konendev, konendev_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", PPC403GCX, 32000000) // Clock unknown
+ MCFG_CPU_PROGRAM_MAP(konendev_map)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", konendev_state, vbl_interrupt)
+
+ /* video hardware */
+ MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // Not accurate
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
+ MCFG_SCREEN_UPDATE_DRIVER(konendev_state, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_DEVICE_ADD("gcu", K057714, 0)
+ MCFG_K057714_IRQ_CALLBACK(WRITELINE(konendev_state, gcu_interrupt))
+
+ MCFG_NVRAM_ADD_0FILL("nvram0")
+ MCFG_NVRAM_ADD_0FILL("nvram1")
+
+ MCFG_EEPROM_SERIAL_93C56_ADD("eeprom")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_SOUND_ADD("ymz", YMZ280B, 16934400) // Clock unknown
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+MACHINE_CONFIG_END
+
+
+/* Interesting sets */
+
+ROM_START( enchlamp )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "enl5rg26_01h.bin", 0x00000, 0x100000, CRC(fed5b988) SHA1(49442decd9b40f0a382c4fc7b231958f526ddbd1) )
+ ROM_LOAD32_WORD_SWAP( "enl5rg26_02l.bin", 0x00002, 0x100000, CRC(d0e42c9f) SHA1(10ff944ec0a626d47ec12be291ff5fe001342ed4) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ ROM_LOAD( "enl5r211.fmu.bin", 0x0000, 0x1800000, CRC(592c3c7f) SHA1(119b3c6223d656981c399c399d7edccfdbb50dc7) )
+
+ ROM_REGION32_BE( 0x100, "eeprom", 0 )
+ ROM_LOAD( "93c56.u98", 0x00, 0x100, CRC(b2521a6a) SHA1(f44711545bee7e9c772a3dc23b79f0ea8059ec50) ) // empty eeprom with Konami header
+ROM_END
+
+
+ROM_START( whiterus )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "01h whr5ra26 (c5df)", 0x00000, 0x080000, CRC(d5a1ebb6) SHA1(14a8d1d8f8ae8919eaa878660c7e97e7ea7a02d8) )
+ ROM_LOAD32_WORD_SWAP( "02l whr5ra26 (bc0a)", 0x00002, 0x080000, CRC(48a2277c) SHA1(965d1da31e3bcde6fda4e15e8980a69e8bce5a84) )
+
+ ROM_REGION( 0x200000, "others", 0 )
+ ROM_LOAD( "u190.4 2v02s502.ifu_rus (95 7)", 0x0000, 0x080000, CRC(36122a98) SHA1(3d2c40c9d504358d890364e26c9562e40314d8a4) )
+ ROM_LOAD( "2v02s502_ifu.bin", 0x0000, 0x080000, CRC(36122a98) SHA1(3d2c40c9d504358d890364e26c9562e40314d8a4) ) // was in 2V02S502_IFU.zip looks similar to above tho
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+/* Partial sets */
+
+ROM_START( aadvent )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "afa5re26_01h.bin", 0x00000, 0x100000, CRC(65ce6f7a) SHA1(018742f13fea4c52f822e7f12e8efd0aff61a713) )
+ ROM_LOAD32_WORD_SWAP( "afa5re26_02l.bin", 0x00002, 0x100000, CRC(73945b3a) SHA1(5ace9c439048f3555fe631917c15bee76362e784) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( dragnfly )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "drf5re26_01h.bin", 0x00000, 0x100000, CRC(ef6f1b69) SHA1(007a41cd1b08705184f69ce3e0e6c63bc2301e25) )
+ ROM_LOAD32_WORD_SWAP( "drf5re26_02l.bin", 0x00002, 0x100000, CRC(00e00c29) SHA1(a92d7220bf46655222ddc5d1c276dc469343f4c5) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( gypmagic )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "gym5rc26_01h.bin", 0x00000, 0x080000, CRC(8643be94) SHA1(fc63872a55ac2229652566bd9795ce9bf8442fee) )
+ ROM_LOAD32_WORD_SWAP( "gym5rc26_02l.bin", 0x00002, 0x080000, CRC(4ee33c46) SHA1(9e0ef66e9d53a47827d04e6a89d13d37429e0c16) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( incanp )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "inp5rg26_01h.bin", 0x00000, 0x100000, CRC(8434222e) SHA1(d03710e18f5b9e45db32685778a21a5dc598d043) )
+ ROM_LOAD32_WORD_SWAP( "inp5rg26_02l.bin", 0x00002, 0x100000, CRC(50c37109) SHA1(a638587f37f63b3f63ee51f541d991c3784c09f7) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( jestmagi )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "jem5rc26_01h.bin", 0x00000, 0x080000, CRC(9145324c) SHA1(366baa22bde1b8da19dba756829305d0fd69b4ff) )
+ ROM_LOAD32_WORD_SWAP( "jem5rc26_02l.bin", 0x00002, 0x080000, CRC(cb49f466) SHA1(e3987de2e640fe8116d66d2c1755e6500dedf8a5) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( luckfoun )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "luf5rd26_01h.bin", 0x00000, 0x080000, CRC(68b3d50a) SHA1(9b3d2a9f5d72db091e79b036017bd5d07f9fed00) )
+ ROM_LOAD32_WORD_SWAP( "luf5rd26_02l.bin", 0x00002, 0x080000, CRC(e7e9b8cd) SHA1(d8c421b0d58775f5a0ccae6395a604091b0acf1d) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( mohicans )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "moh5rf26_01h.bin", 0x00000, 0x100000, CRC(527dda20) SHA1(0a71484421738517c17d76e9bf92943b57cc4cc8) )
+ ROM_LOAD32_WORD_SWAP( "moh5rf26_02l.bin", 0x00002, 0x100000, CRC(a9bd3846) SHA1(02d80ff6c20e3732ae582de5d4392d4d6d8ba955) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( monshow )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "tms5rc26_01h.bin", 0x00000, 0x100000, CRC(8209aafe) SHA1(e48a0524ad93a9b657d3efe67f7b5e1067b37e48) )
+ ROM_LOAD32_WORD_SWAP( "tms5rc26_02l.bin", 0x00002, 0x100000, CRC(78de8c59) SHA1(ad73bc926f5874d257171dfa6b727cb31e33bce9) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( romanl )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "rol5rg26_01h.bin", 0x00000, 0x100000, CRC(d441d30c) SHA1(025111699a7e29781bbb4d0f4151c808e3d06235) )
+ ROM_LOAD32_WORD_SWAP( "rol5rg26_02l.bin", 0x00002, 0x100000, CRC(08bd72ca) SHA1(a082cffeb1bccc8ec468a618eaabba7dac89882c) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( safemon )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "sam5rj26_01h.bin", 0x00000, 0x080000, CRC(7f82693f) SHA1(1c8540d209ab17f4fca5ff74bc687c83ec315208) )
+ ROM_LOAD32_WORD_SWAP( "sam5rj26_02l.bin", 0x00002, 0x080000, CRC(73bd981e) SHA1(f01b97201bd877c601cf3c742a6e0963de8e48dc) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( showqn )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "shq_1h.bin", 0x00000, 0x080000, CRC(3fc44415) SHA1(f0be1b90a2a374f9fb9e059e834bbdbf714b6607) )
+ ROM_LOAD32_WORD_SWAP( "shq_2l.bin", 0x00002, 0x080000, CRC(38a03281) SHA1(1b4552b0ce347df4d87e398111bbf72f126a8ec1) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( spiceup )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "siu5rc26_01h.bin", 0x00000, 0x100000, CRC(373bc2b1) SHA1(af3740fdcd028f162440701c952a3a87805bc65b) )
+ ROM_LOAD32_WORD_SWAP( "siu5rc26_02l.bin", 0x00002, 0x100000, CRC(2e584321) SHA1(ca98092dde76338117e989e774db2db672d87bfa) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( sultanw )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "suw5rc26_01h.bin", 0x00000, 0x100000, CRC(27760529) SHA1(b8970a706df52ee5792bbd7a4e719f2be87662ac) )
+ ROM_LOAD32_WORD_SWAP( "suw5rc26_02l.bin", 0x00002, 0x100000, CRC(1c98fd4d) SHA1(58ff948c0deba0bffb8866b15f46518524516501) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+ROM_END
+
+ROM_START( konzero )
+ ROM_REGION32_BE( 0x200000, "program", 0 )
+ ROM_LOAD32_WORD_SWAP( "rmclr_h.bin", 0x00000, 0x080000, CRC(b9237061) SHA1(0eb311e8e1c872d6a9c38726efb17ddf4713bc7d) )
+ ROM_LOAD32_WORD_SWAP( "rmclr_l.bin", 0x00002, 0x080000, CRC(2806299c) SHA1(a069f4477b310f99ff1ff48f622dc30862589127) )
+
+ ROM_REGION32_BE( 0x1800000, "flash", ROMREGION_ERASE00 )
+
+ ROM_REGION32_BE( 0x100, "eeprom", 0 )
+ ROM_LOAD( "93c56.u98", 0x00, 0x100, CRC(b2521a6a) SHA1(f44711545bee7e9c772a3dc23b79f0ea8059ec50) ) // empty eeprom with Konami header
+ROM_END
+
+DRIVER_INIT_MEMBER(konendev_state,konendev)
+{
+}
+
+DRIVER_INIT_MEMBER(konendev_state,enchlamp)
+{
+ UINT32 *rom = (UINT32*)memregion("program")->base();
+ rom[0x24/4] = 0x00002743; // patch flash checksum for now
+
+ // patch sound data checksums
+ rom[0x2d924/4] = 0x00000000;
+ rom[0x2d928/4] = 0x00000000;
+ rom[0x2d934/4] = 0x00000000;
+ rom[0x2d938/4] = 0x00000000;
+
+ rom[0] = 0x5782b930; // new checksum for program rom
+}
+
+// has a flash dump?
+GAME( 200?, enchlamp, 0, konendev, konendev, konendev_state, enchlamp, ROT0, "Konami", "Enchanted Lamp (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+// missing flash but has other interesting files
+GAME( 200?, whiterus, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "White Russia (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+
+// partial sets
+GAME( 200?, aadvent, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "African Adventure (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, dragnfly, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Dragonfly (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, gypmagic, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Gypsy Magic (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, incanp, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Incan Pyramids (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, jestmagi, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Jester Magic (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, luckfoun, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Lucky Fountain (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, mohicans, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Mohican Sun (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, monshow, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "The Monster Show (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, romanl, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Roman Legions (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, safemon, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Safe Money (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, showqn, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Show Queen (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, spiceup, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Spice It Up (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, sultanw, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Sultan's Wish (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 200?, konzero, 0, konendev, konendev, konendev_state, konendev, ROT0, "Konami", "Zero (Konami Endeavour)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // doesn't seem to have a title string in it?