summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/dmndrby.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/dmndrby.c')
-rw-r--r--src/mame/drivers/dmndrby.c290
1 files changed, 290 insertions, 0 deletions
diff --git a/src/mame/drivers/dmndrby.c b/src/mame/drivers/dmndrby.c
new file mode 100644
index 00000000000..148c2451817
--- /dev/null
+++ b/src/mame/drivers/dmndrby.c
@@ -0,0 +1,290 @@
+/*
+G4001
+Diamond Derby - Electrocoin on an SNK board
+
+this seems to be a gambling game
+
+SNK/Electrocoin 1987
+
+--------------------------------------------
+G4001UP01
+
+SWA SWB C1 DD1
+ DD2
+
+ 6116 DD4
+ Z80 DD5
+ DD6
+ DD3 6116
+ 8910 Z80 6116 6116
+
+---------------------------------------------
+G4001UP02
+
+DD7 DD11 DD15 K1
+DD8 DD12 DD16 DD19
+DD9 DD13 DD17 DD20
+DD10 DD14 DD18 H5 DD21
+
+
+ DD22
+ DD23
+ 2114 2148 2148
+ 2114 H10
+
+
+*/
+
+#include "driver.h"
+
+static UINT8* dderby_vid;
+
+static READ8_HANDLER( dderby_random_reader )
+{
+ return mame_rand(Machine);
+}
+
+static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
+ AM_RANGE(0x0000, 0x5fff) AM_ROM
+ AM_RANGE(0x8000, 0x8fff) AM_RAM
+ AM_RANGE(0xC000, 0xC007) AM_READ(dderby_random_reader)
+ AM_RANGE(0xC802, 0xC802) AM_READ(dderby_random_reader)
+ AM_RANGE(0xC803, 0xC803) AM_READ(dderby_random_reader)
+ AM_RANGE(0xCA01, 0xCA01) AM_WRITE(MWA8_NOP)
+ AM_RANGE(0xD000, 0xD7ff) AM_RAM AM_BASE(&dderby_vid)
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( dderby )
+ PORT_START /* 8bit */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static const gfx_layout tiles8x8_layout =
+{
+ 8,8,
+ RGN_FRAC(1,2),
+ 4,
+ { 0,4,RGN_FRAC(1,2)+0,RGN_FRAC(1,2)+4 },
+ { 0, 1, 2, 3,8,9,10,11 },
+ { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
+ 16*8
+};
+
+static const gfx_layout tiles8x8_layout2 =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 2,
+ { 0,8 },
+ { 0, 1, 2, 3,4,5,6,7},
+ { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
+ 16*8
+};
+
+static const UINT32 tiles8x64_layout_yoffset[64] =
+{
+ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,8*8,9*8,10*8,11*8,12*8,13*8,14*8,15*8,16*8,17*8,18*8,19*8,20*8,21*8,22*8,23*8,24*8,25*8,26*8,27*8,28*8,29*8,30*8,31*8,
+ 32*8,33*8,34*8,35*8,36*8,37*8,38*8,39*8,40*8,41*8,42*8,43*8,44*8,45*8,46*8,47*8,48*8,49*8,50*8,51*8,52*8,53*8,54*8,55*8,56*8,57*8,58*8,59*8,60*8,61*8,62*8,63*8
+};
+
+/* i'm not convinced they will be used like this, might just be used as 8x8 tiles .. */
+static const gfx_layout tiles8x64_layout =
+{
+ 8,64,
+ RGN_FRAC(1,3),
+ 3,
+ { 0,RGN_FRAC(1,3),RGN_FRAC(2,3) },
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ EXTENDED_YOFFS,
+ 64*8,
+ NULL,
+ tiles8x64_layout_yoffset
+};
+
+static GFXDECODE_START( dmndrby )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, tiles8x8_layout, 0, 16 )
+ GFXDECODE_ENTRY( REGION_GFX2, 0, tiles8x64_layout, 0, 16 )
+ GFXDECODE_ENTRY( REGION_GFX3, 0, tiles8x8_layout2, 0, 16 )
+
+GFXDECODE_END
+
+static VIDEO_START(dderby)
+{
+}
+
+static VIDEO_UPDATE(dderby)
+{
+ int x,y,count;
+ const gfx_element *gfx = machine->gfx[0];
+
+ fillbitmap(bitmap, get_black_pen(machine), cliprect);
+
+ count=0;
+ for (y=0;y<32;y++)
+ {
+ for(x=0;x<32;x++)
+ {
+ int tileno,bank;
+
+ tileno=dderby_vid[count];
+ bank=dderby_vid[count+0x400]&0x20;
+
+ if (bank) tileno+=0x100;
+
+ drawgfx(bitmap,gfx,tileno,0,0,0,x*8,y*8,cliprect,TRANSPARENCY_PEN,0);
+ count++;
+ }
+ }
+
+
+
+ return 0;
+}
+
+static INTERRUPT_GEN( dderby_interrupt )
+{
+// cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0x8); // almost certainly wrong?
+// cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0x10); // almost certainly wrong?
+// cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0x18); // almost certainly wrong?
+// cpunum_set_input_line_and_vector(0, 0, HOLD_LINE, 0x20); // almost certainly wrong?
+}
+
+static MACHINE_DRIVER_START( dderby )
+ /* basic machine hardware */
+ MDRV_CPU_ADD(Z80,8000000) /* ? MHz */
+ MDRV_CPU_PROGRAM_MAP(memmap,0)
+ MDRV_CPU_VBLANK_INT(dderby_interrupt,1)
+
+ MDRV_SCREEN_REFRESH_RATE(60)
+ MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION)
+
+ /* video hardware */
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER )
+ MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MDRV_SCREEN_SIZE(256, 256)
+ MDRV_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1)
+ MDRV_GFXDECODE(dmndrby)
+ MDRV_PALETTE_LENGTH(0x100)
+
+ MDRV_VIDEO_START(dderby)
+ MDRV_VIDEO_UPDATE(dderby)
+MACHINE_DRIVER_END
+
+ROM_START( dmndrby )
+ ROM_REGION( 0x04000, REGION_GFX1, 0 )
+ ROM_LOAD( "dd01.e1", 0x00000, 0x02000, CRC(2e120288) SHA1(0ea29aff07e956b19080f05bd18b427195694ce8) )
+ ROM_LOAD( "dd02.e2", 0x02000, 0x02000, CRC(ca028c8c) SHA1(f882eea2191cf1f3ea57d49fd6862f98401555be) )
+
+ ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu */
+ ROM_LOAD( "dd03.j9", 0x00000, 0x01000, CRC(660f0cae) SHA1(b3b414e52342de877a5c20886a87002a63310a94) )
+
+ ROM_REGION( 0x10000, REGION_CPU1, 0 ) /* main cpu */
+ ROM_LOAD( "dd04.m6", 0x00000, 0x02000, CRC(a3cfd28e) SHA1(7ba14876fa4409634a699e049bce3bc457522932) )
+ ROM_LOAD( "dd05.m7", 0x02000, 0x02000, CRC(16f7ac0b) SHA1(030b8c2b294a0287f3aaf72424304fc191315888) )
+ ROM_LOAD( "dd06.m8", 0x04000, 0x02000, CRC(914ba8f5) SHA1(d1b3f3d5d2625e42ea6cb5c777942cec7faea58e) )
+
+ ROM_REGION( 0x18000, REGION_GFX2, 0 )
+ ROM_LOAD( "dd07.b1", 0x00000, 0x02000, CRC(207a534a) SHA1(ddbd292f79cc9fb7bd9f0ee9874da87909147789) )
+ ROM_LOAD( "dd08.b2", 0x02000, 0x02000, CRC(f380e2c4) SHA1(860a6557ae8b81d310c353f88f9194e1ffd551ec) )
+ ROM_LOAD( "dd09.b3", 0x04000, 0x02000, CRC(68ebf74c) SHA1(959ee6c4ce700cff86af39442063dc79b8f8913e) )
+ ROM_LOAD( "dd10.b5", 0x06000, 0x01000, CRC(38b1568a) SHA1(f7e04db49708dfc8c8512026d3460af0f3fb6780) )
+ ROM_LOAD( "dd11.d1", 0x08000, 0x02000, CRC(fe615561) SHA1(808f703d0ca1576feb78f21c380e4006dd634a9c) )
+ ROM_LOAD( "dd12.d2", 0x0a000, 0x02000, CRC(4df63aae) SHA1(a0b224fb1157fc25c21f9f0664bb8385e94e5c77) )
+ ROM_LOAD( "dd13.d4", 0x0c000, 0x02000, CRC(cace0dfc) SHA1(41902f3ee2fa18798e3b441ee18f7b953d977b93) )
+ ROM_LOAD( "dd14.d5", 0x0e000, 0x01000, CRC(2c602cbe) SHA1(78ffe79e3f2c4a3e9c6adc8f4635ed1a93528dc8) )
+ ROM_LOAD( "dd15.e1", 0x10000, 0x02000, CRC(2ce23b64) SHA1(5cbeabc015cb167c7fd485ab4d9f1329bc2e94b3) )
+ ROM_LOAD( "dd16.e2", 0x12000, 0x02000, CRC(6af9796c) SHA1(4cd818d488ac85fd6f8732fdca80cc29db86d3f4) )
+ ROM_LOAD( "dd17.e4", 0x14000, 0x02000, CRC(b451cde2) SHA1(1c7340cc39d9beca1640c88000112c898d3de941) )
+ ROM_LOAD( "dd18.e5", 0x16000, 0x01000, CRC(56228aaf) SHA1(74e96ebefc1b69310b23e47a35affbb7cd7d9acc) )
+
+ ROM_REGION( 0x6000, REGION_GFX3, 0 )
+ ROM_LOAD( "dd19.n2", 0x00000, 0x02000, CRC(fd536051) SHA1(556dfe064eeb9be1db751410ec128385c463e706) )
+ ROM_LOAD( "dd20.n3", 0x02000, 0x02000, CRC(1497e52f) SHA1(f08c20c97c8d2148fcc705297cf1129bc65c9b83) )
+ ROM_LOAD( "dd21.n4", 0x04000, 0x02000, CRC(87605d44) SHA1(c985fb15eac7bcc89e92909cf588b5982d0cabd0) )
+
+ ROM_REGION( 0x4000, REGION_USER1, 0 ) // something else
+ ROM_LOAD( "dd22.n6", 0x00000, 0x02000, CRC(db6b13fc) SHA1(3415deb2ffa86679e4f8abb644b75963e5368ba0) )
+ ROM_LOAD( "dd23.n7", 0x02000, 0x02000, CRC(595fdb9b) SHA1(133d227bb156be52337da974e37973b049722e49) )
+
+ ROM_REGION( 0x520, REGION_USER2, 0 ) // proms
+ ROM_LOAD( "ddprom1.c1", 0x0000, 0x0100, CRC(e1c2fa1b) SHA1(6b8b0b2c1ac4b2796070452c923ba96dd8b29048) )
+ ROM_LOAD( "ddprom2.j5", 0x0100, 0x0100, CRC(3e5402dc) SHA1(2f497333f49064c54995cec8919f3aebdc17e977) )
+ ROM_LOAD( "ddprom4.h10",0x0200, 0x0100, CRC(7280f000) SHA1(bfad2b547b8abe6c67928bec08e7d00431c539d5) )
+ ROM_LOAD( "ddprom5.k1", 0x0300, 0x0100, CRC(15edbdac) SHA1(298640afb24830d32f54c0c7c5960d777f51f2bd) )
+ ROM_LOAD( "ddprom6.m12",0x0400, 0x0100, CRC(7f677b7d) SHA1(946014cb01f5954a3cb196796741ee174a0de641) )
+ ROM_LOAD( "ddprom3.h5", 0x0500, 0x0020, CRC(aea3cff6) SHA1(1139dd52c127436873a674be8a14527190091a82) )
+ROM_END
+
+ROM_START( dmndrbya )
+ ROM_REGION( 0x04000, REGION_GFX1, 0 )
+ ROM_LOAD( "dd1", 0x00000, 0x02000, CRC(7fe475a6) SHA1(008bbaff87baad7f4c2497e40bf5e3fc95f993b4) )
+ ROM_LOAD( "dd2", 0x02000, 0x02000, CRC(54def3ee) SHA1(fb88852ada2b5b555c0e8c0a082ed9978ff27434) )
+
+ ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sound cpu */
+ ROM_LOAD( "dd03.j9", 0x00000, 0x01000, CRC(660f0cae) SHA1(b3b414e52342de877a5c20886a87002a63310a94) )
+
+ ROM_REGION( 0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "dd4", 0x00000, 0x02000, CRC(29b06e0f) SHA1(301fc2fe25ce47c2ad5112f0b795cd6bae605071) )
+ ROM_LOAD( "dd5", 0x02000, 0x02000, CRC(5299d020) SHA1(678d338d2cee5250154454be97456d5f80bb4759) )
+ ROM_LOAD( "dd6", 0x04000, 0x02000, CRC(f7e30ec0) SHA1(bf898987366ee9def190e3575108395b0aaef2d6) )
+
+ ROM_REGION( 0x18000, REGION_GFX2, 0 )
+ ROM_LOAD( "dd07.b1", 0x00000, 0x02000, CRC(207a534a) SHA1(ddbd292f79cc9fb7bd9f0ee9874da87909147789) )
+ ROM_LOAD( "dd08.b2", 0x02000, 0x02000, CRC(f380e2c4) SHA1(860a6557ae8b81d310c353f88f9194e1ffd551ec) )
+ ROM_LOAD( "dd09.b3", 0x04000, 0x02000, CRC(68ebf74c) SHA1(959ee6c4ce700cff86af39442063dc79b8f8913e) )
+ ROM_LOAD( "dd10.b5", 0x06000, 0x01000, CRC(38b1568a) SHA1(f7e04db49708dfc8c8512026d3460af0f3fb6780) )
+ ROM_LOAD( "dd11.d1", 0x08000, 0x02000, CRC(fe615561) SHA1(808f703d0ca1576feb78f21c380e4006dd634a9c) )
+ ROM_LOAD( "dd12.d2", 0x0a000, 0x02000, CRC(4df63aae) SHA1(a0b224fb1157fc25c21f9f0664bb8385e94e5c77) )
+ ROM_LOAD( "dd13.d4", 0x0c000, 0x02000, CRC(cace0dfc) SHA1(41902f3ee2fa18798e3b441ee18f7b953d977b93) )
+ ROM_LOAD( "dd14.d5", 0x0e000, 0x01000, CRC(2c602cbe) SHA1(78ffe79e3f2c4a3e9c6adc8f4635ed1a93528dc8) )
+ ROM_LOAD( "dd15.e1", 0x10000, 0x02000, CRC(2ce23b64) SHA1(5cbeabc015cb167c7fd485ab4d9f1329bc2e94b3) )
+ ROM_LOAD( "dd16.e2", 0x12000, 0x02000, CRC(6af9796c) SHA1(4cd818d488ac85fd6f8732fdca80cc29db86d3f4) )
+ ROM_LOAD( "dd17.e4", 0x14000, 0x02000, CRC(b451cde2) SHA1(1c7340cc39d9beca1640c88000112c898d3de941) )
+ ROM_LOAD( "dd18.e5", 0x16000, 0x01000, CRC(56228aaf) SHA1(74e96ebefc1b69310b23e47a35affbb7cd7d9acc) )
+
+ ROM_REGION( 0x6000, REGION_GFX3, 0 )
+ ROM_LOAD( "dd19.n2", 0x00000, 0x02000, CRC(fd536051) SHA1(556dfe064eeb9be1db751410ec128385c463e706) )
+ ROM_LOAD( "dd20.n3", 0x02000, 0x02000, CRC(1497e52f) SHA1(f08c20c97c8d2148fcc705297cf1129bc65c9b83) )
+ ROM_LOAD( "dd21.n4", 0x04000, 0x02000, CRC(87605d44) SHA1(c985fb15eac7bcc89e92909cf588b5982d0cabd0) )
+
+ ROM_REGION( 0x4000, REGION_USER1, 0 ) // something else
+ ROM_LOAD( "dd22.n6", 0x00000, 0x02000, CRC(db6b13fc) SHA1(3415deb2ffa86679e4f8abb644b75963e5368ba0) )
+ ROM_LOAD( "dd23.n7", 0x02000, 0x02000, CRC(595fdb9b) SHA1(133d227bb156be52337da974e37973b049722e49) )
+
+ ROM_REGION( 0x520, REGION_USER2, 0 ) // proms
+ ROM_LOAD( "ddprom1.c1", 0x0000, 0x0100, CRC(e1c2fa1b) SHA1(6b8b0b2c1ac4b2796070452c923ba96dd8b29048) )
+ ROM_LOAD( "ddprom2.j5", 0x0100, 0x0100, CRC(3e5402dc) SHA1(2f497333f49064c54995cec8919f3aebdc17e977) ) // wasn't in this set
+ ROM_LOAD( "ddprom4.h10",0x0200, 0x0100, CRC(7280f000) SHA1(bfad2b547b8abe6c67928bec08e7d00431c539d5) )
+ ROM_LOAD( "ddprom5.k1", 0x0300, 0x0100, CRC(15edbdac) SHA1(298640afb24830d32f54c0c7c5960d777f51f2bd) )
+ ROM_LOAD( "ddprom6.m12",0x0400, 0x0100, CRC(7f677b7d) SHA1(946014cb01f5954a3cb196796741ee174a0de641) )
+ ROM_LOAD( "ddprom3.h5", 0x0500, 0x0020, CRC(aea3cff6) SHA1(1139dd52c127436873a674be8a14527190091a82) )
+ROM_END
+
+
+
+GAME( 1986, dmndrby, 0, dderby, dderby, 0, ROT0, "Electrocoin", "Diamond Derby (set 1)",GAME_NOT_WORKING|GAME_NO_SOUND )
+GAME( 1986, dmndrbya, dmndrby, dderby, dderby, 0, ROT0, "Electrocoin", "Diamond Derby (set 2)",GAME_NOT_WORKING|GAME_NO_SOUND )