summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/mame/mame.lst5
-rw-r--r--src/mame/sealy/sealy_z80.cpp255
-rw-r--r--src/mame/sunwise/jankmg2.cpp4
3 files changed, 262 insertions, 2 deletions
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 50e3d6a2d8d..2e11c78c78f 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -39734,6 +39734,11 @@ qczl
@source:sealy/sealy_fr.cpp
snowbwar
+@source:sealy/sealy_z80.cpp
+bbddz
+ddz2
+djddz
+
@source:sega/angelkds.cpp
angelkds
spcpostn
diff --git a/src/mame/sealy/sealy_z80.cpp b/src/mame/sealy/sealy_z80.cpp
new file mode 100644
index 00000000000..d813a9fec74
--- /dev/null
+++ b/src/mame/sealy/sealy_z80.cpp
@@ -0,0 +1,255 @@
+// license:BSD-3-Clause
+// copyright-holders:
+
+/*
+Sealy Z80-based games
+
+Main components:
+Z80C0006PEC or equivalent
+12.000 MHz XTAL
+6264 RAM (manufacturer and latency may vary)
+62256 RAM (manufacturer and latency may vary)
+Altera MAX EPM3256AOC208-10
+93C46 EEPROM
+U6295 (Oki M6295 clone)
+
+TODO:
+- program ROMs are encrypted
+- GFX ROMs seem encrypted
+*/
+
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "machine/eepromser.h"
+#include "sound/okim6295.h"
+
+#include "emupal.h"
+#include "screen.h"
+#include "speaker.h"
+#include "tilemap.h"
+
+
+namespace {
+
+class sealy_z80_state : public driver_device
+{
+public:
+ sealy_z80_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu")
+ { }
+
+ void sealy(machine_config &config) ATTR_COLD;
+
+ void init_djddz() ATTR_COLD;
+
+private:
+ required_device<cpu_device> m_maincpu;
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ void program_map(address_map &map) ATTR_COLD;
+};
+
+
+uint32_t sealy_z80_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+
+void sealy_z80_state::program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+}
+
+
+static INPUT_PORTS_START( djddz ) // TODO
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("IN1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+// no DIP switches, just one reset push button
+INPUT_PORTS_END
+
+
+static GFXDECODE_START( gfx ) // TODO
+GFXDECODE_END
+
+
+void sealy_z80_state::sealy(machine_config &config)
+{
+ Z80(config, m_maincpu, 12_MHz_XTAL / 2); // divider not verified, but part rated for 6 MHz
+ m_maincpu->set_addrmap(AS_PROGRAM, &sealy_z80_state::program_map);
+
+ EEPROM_93C46_8BIT(config, "eeprom");
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(512, 256);
+ screen.set_visarea(0, 512-1, 0, 256-1);
+ screen.set_screen_update(FUNC(sealy_z80_state::screen_update));
+
+ GFXDECODE(config, "gfxdecode", "palette", gfx);
+ PALETTE(config, "palette").set_entries(0x100); // TODO
+
+ SPEAKER(config, "mono").front_center();
+ OKIM6295(config, "oki", 12_MHz_XTAL / 12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // divider and pin 7 not verified
+}
+
+
+// 百变斗地主 (Bǎi Biàn Dòu Dìzhǔ). All labels have 百变斗地主
+ROM_START( bbddz )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "u7", 0x00000, 0x20000, CRC(d82df292) SHA1(f354a3d9b29abb61a447d507b37d28f49983e59d) ) // 27c1001a
+
+ ROM_REGION( 0x200000, "gfx1", 0 )
+ ROM_LOAD( "u15", 0x000000, 0x200000, CRC(937e9e76) SHA1(95907ddadc2bf260d88a391ab1f61e8931ec7cc3) ) // 29f1611
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "u13", 0x000000, 0x200000, CRC(1ee033bb) SHA1(14ab0702e17add44dfc82ce21dd5a37c05a1b2a2) ) // 29f1611
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "u9", 0x00000, 0x80000, NO_DUMP ) // 29f040
+
+ ROM_REGION( 0x80, "eeprom", ROMREGION_ERASE00 )
+ ROM_LOAD( "93c46", 0x00, 0x80, NO_DUMP )
+ROM_END
+
+// 斗地主Ⅱ (Dòu Dìzhǔ II). All labels prepend 斗地主Ⅱ to what's below
+ROM_START( ddz2 )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "3.u11", 0x00000, 0x20000, CRC(01cbe7a5) SHA1(f46339bec4e898afaa78831632cea4013877258d) ) // 27c4010
+
+ ROM_REGION( 0x200000, "gfx1", 0 )
+ ROM_LOAD( "1.u18", 0x000000, 0x200000, CRC(200ece45) SHA1(ab9b19464850c9e75646e382334a5d28a360195c) ) // 27c4096
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "2.u21", 0x000000, 0x200000, CRC(c62be0a4) SHA1(1cbfecba43b475f1a175f69fda498e662ac26720) ) // 27c4096
+
+ ROM_REGION( 0x80000, "oki", ROMREGION_ERASE00 )
+ ROM_LOAD( "4.u23", 0x00000, 0x80000, NO_DUMP )
+
+ ROM_REGION( 0x80, "eeprom", ROMREGION_ERASE00 )
+ ROM_LOAD( "93c46", 0x00, 0x80, NO_DUMP )
+ROM_END
+
+// 顶级斗地主 (Dǐngjí Dòu Dìzhǔ). All labels prepend 顶级斗地主 to what's below
+ROM_START( djddz )
+ ROM_REGION( 0x20000, "maincpu", 0 )
+ ROM_LOAD( "3.u11", 0x00000, 0x20000, CRC(54abc7a0) SHA1(25494e0862aa6b03398270efe2a3659180be38ec) ) // 27c010
+
+ ROM_REGION( 0x200000, "gfx1", 0 )
+ ROM_LOAD( "1.u18", 0x000000, 0x200000, CRC(6fa8f11e) SHA1(731f90a929b5b638fa45de24918df6377136276d) ) // 27c4096, FIXED BITS (xxxxxxxx0xxxxxxx)
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "2.u21", 0x000000, 0x200000, CRC(74997b0f) SHA1(1c2b0aeaf71fa000856b8aa405d7853f8e652257) ) // 27c4096
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "4.u23", 0x00000, 0x80000, CRC(249b1a34) SHA1(94af1a9c64fb7d06a7510d527c176b2fa6845885) ) // 27c020
+
+ ROM_REGION( 0x80, "eeprom", ROMREGION_ERASE00 )
+ ROM_LOAD( "93c46", 0x00, 0x80, NO_DUMP )
+ROM_END
+
+
+void sealy_z80_state::init_djddz() // TODO: not enough
+{
+ uint8_t *rom = memregion("maincpu")->base();
+
+ for (int i = 0; i < 0x20000; i++)
+ {
+ switch (i & 0x14ca)
+ {
+ case 0x0000: rom[i] ^= 0xc0; break;
+ case 0x0002: rom[i] ^= 0x41; break;
+ case 0x0008: rom[i] ^= 0xc0; break;
+ case 0x000a: rom[i] ^= 0x30; break;
+ case 0x0040: rom[i] ^= 0x64; break;
+ case 0x0042: rom[i] ^= 0x41; break;
+ case 0x0048: rom[i] ^= 0x30; break;
+ case 0x004a: rom[i] ^= 0x41; break;
+ case 0x0080: rom[i] ^= 0x30; break;
+ case 0x0082: rom[i] ^= 0x81; break;
+ case 0x0088: rom[i] ^= 0x41; break;
+ case 0x008a: rom[i] ^= 0x64; break;
+ case 0x00c0: rom[i] ^= 0x30; break;
+ case 0x00c2: rom[i] ^= 0x81; break;
+ case 0x00c8: rom[i] ^= 0x41; break;
+ case 0x00ca: rom[i] ^= 0x30; break;
+ case 0x0400: rom[i] ^= 0xc0; break;
+ case 0x0402: rom[i] ^= 0x30; break;
+ case 0x0408: rom[i] ^= 0x81; break;
+ case 0x040a: rom[i] ^= 0xc0; break;
+ case 0x0440: rom[i] ^= 0x64; break;
+ case 0x0442: rom[i] ^= 0x41; break;
+ case 0x0448: rom[i] ^= 0x64; break;
+ case 0x044a: rom[i] ^= 0x81; break;
+ case 0x0480: rom[i] ^= 0x41; break;
+ case 0x0482: rom[i] ^= 0x81; break;
+ case 0x0488: rom[i] ^= 0x30; break;
+ case 0x048a: rom[i] ^= 0xc0; break;
+ case 0x04c0: rom[i] ^= 0x64; break;
+ case 0x04c2: rom[i] ^= 0x81; break;
+ case 0x04c8: rom[i] ^= 0xc0; break;
+ case 0x04ca: rom[i] ^= 0x64; break;
+ case 0x1000: rom[i] ^= 0x30; break;
+ case 0x1002: rom[i] ^= 0x81; break;
+ case 0x1008: rom[i] ^= 0xc0; break;
+ case 0x100a: rom[i] ^= 0x64; break;
+ case 0x1040: rom[i] ^= 0xc0; break;
+ case 0x1042: rom[i] ^= 0x30; break;
+ case 0x1048: rom[i] ^= 0x81; break;
+ case 0x104a: rom[i] ^= 0x41; break;
+ case 0x1080: rom[i] ^= 0x81; break;
+ case 0x1082: rom[i] ^= 0x64; break;
+ case 0x1088: rom[i] ^= 0xc0; break;
+ case 0x108a: rom[i] ^= 0x41; break;
+ case 0x10c0: rom[i] ^= 0x30; break;
+ case 0x10c2: rom[i] ^= 0x64; break;
+ case 0x10c8: rom[i] ^= 0x81; break;
+ case 0x10ca: rom[i] ^= 0x64; break;
+ case 0x1400: rom[i] ^= 0x41; break;
+ case 0x1402: rom[i] ^= 0xc0; break;
+ case 0x1408: rom[i] ^= 0x41; break;
+ case 0x140a: rom[i] ^= 0x81; break;
+ case 0x1440: rom[i] ^= 0x30; break;
+ case 0x1442: rom[i] ^= 0xc0; break;
+ case 0x1448: rom[i] ^= 0x41; break;
+ case 0x144a: rom[i] ^= 0x64; break;
+ case 0x1480: rom[i] ^= 0xc0; break;
+ case 0x1482: rom[i] ^= 0x81; break;
+ case 0x1488: rom[i] ^= 0x30; break;
+ case 0x148a: rom[i] ^= 0xc0; break;
+ case 0x14c0: rom[i] ^= 0x41; break;
+ case 0x14c2: rom[i] ^= 0x64; break;
+ case 0x14c8: rom[i] ^= 0x30; break;
+ case 0x14ca: rom[i] ^= 0x81; break;
+ }
+ }
+}
+
+} // anonymous namespace
+
+
+GAME( 200?, bbddz, 0, sealy, djddz, sealy_z80_state, init_djddz, ROT0, "Sealy", "Bai Bian Dou Dizhu", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 200?, ddz2, 0, sealy, djddz, sealy_z80_state, empty_init, ROT0, "Sealy", "Dou Dizhu II", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 200?, djddz, 0, sealy, djddz, sealy_z80_state, init_djddz, ROT0, "Sealy", "Dingji Dou Dizhu", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/sunwise/jankmg2.cpp b/src/mame/sunwise/jankmg2.cpp
index 4195277eecf..330415391ed 100644
--- a/src/mame/sunwise/jankmg2.cpp
+++ b/src/mame/sunwise/jankmg2.cpp
@@ -2,7 +2,7 @@
// copyright-holders:
/*
-Janken Man 2
+Ganso Janken Man 2
'S9405021 CPU-DM-NEW' PCB
Z0840004PSC
@@ -164,4 +164,4 @@ ROM_END
} // anonymous namespace
// title machine translated from auction, not verified
-GAME( 199?, jankmg2, 0, jankmg2, jankmg2, jankmg2_state, empty_init, ROT0, "Sunwise", "Janken Man Ganso 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 199?, jankmg2, 0, jankmg2, jankmg2, jankmg2_state, empty_init, ROT0, "Sunwise", "Ganso Janken Man 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )