summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/go2000.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/go2000.c')
-rw-r--r--src/mame/drivers/go2000.c205
1 files changed, 205 insertions, 0 deletions
diff --git a/src/mame/drivers/go2000.c b/src/mame/drivers/go2000.c
new file mode 100644
index 00000000000..b9be30f9fc4
--- /dev/null
+++ b/src/mame/drivers/go2000.c
@@ -0,0 +1,205 @@
+/*
+
+Go 2000 - Korean Card game
+
+Newer PCB, very sparce with newer surface mounted CPUs
+
+MC68EC000FU10
+Z84C0006FEC
+TM29F550ZX
+OSC: 32.000MHz
+2 8-way Dipswitch banks
+Ram:
+ 2 UM61256FK-15 (near 3 & 4 (68k program roms))
+ 3 Windbond W24257AK-15 (near TM29F550ZX)
+ 2 UM61256AK-15 (near Z80)
+
+P1, P2 & P3 4-pin connectors (unkown purpose)
+
+*/
+
+#include "driver.h"
+
+static UINT16* go2000_video;
+static UINT16* go2000_video2;
+
+
+static ADDRESS_MAP_START( go2000_readmem, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x000000, 0x03ffff) AM_READ(MRA16_ROM)
+ AM_RANGE(0x200000, 0x203fff) AM_READ(MRA16_RAM)
+ AM_RANGE(0x600000, 0x60ffff) AM_READ(MRA16_RAM)
+ AM_RANGE(0x610000, 0x61ffff) AM_READ(MRA16_RAM)
+ AM_RANGE(0x800000, 0x800fff) AM_READ(MRA16_RAM)
+ AM_RANGE(0xa00000, 0xa00001) AM_READ(input_port_0_word_r)
+ AM_RANGE(0xa00002, 0xa00003) AM_READ(input_port_1_word_r)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( go2000_writemem, ADDRESS_SPACE_PROGRAM, 16 )
+ AM_RANGE(0x000000, 0x03ffff) AM_WRITE(MWA16_ROM)
+ AM_RANGE(0x200000, 0x203fff) AM_WRITE(MWA16_RAM)
+ AM_RANGE(0x600000, 0x603fff) AM_WRITE(MWA16_RAM) AM_BASE(&go2000_video)
+ AM_RANGE(0x604000, 0x60ffff) AM_WRITE(MWA16_RAM)
+ AM_RANGE(0x610000, 0x613fff) AM_WRITE(MWA16_RAM) AM_BASE(&go2000_video2)
+ AM_RANGE(0x614000, 0x61ffff) AM_WRITE(MWA16_RAM)
+ AM_RANGE(0x800000, 0x800fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START( go2000 )
+ PORT_START /* 16bit */
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) // continue
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON2 ) // korean symbol
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) // out
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // high
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) // low
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED) // unused?
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED) // unused?
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED) // unused?
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED) // unused?
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 ) // m1
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON5 ) // m2
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON6 ) // m3
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED) // unused?
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 ) // coin2
+
+ PORT_START /* dipswitches */
+ PORT_DIPNAME( 0x0001, 0x0001, "1" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+static const gfx_layout go2000_layout =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 4,
+ { 8,12,0,4 },
+ { 3,2,1,0, 19,18,17,16 },
+ { 0*32, 1*32, 2*32, 3*32,4*32,5*32,6*32,7*32 },
+ 8*32
+};
+
+static VIDEO_START(go2000)
+{
+}
+
+static VIDEO_UPDATE(go2000)
+{
+ int x,y;
+ int count = 0;
+
+ /* 0x600000 - 0x601fff / 0x610000 - 0x611fff */
+ for (x=0;x<64;x++)
+ {
+ for (y=0;y<32;y++)
+ {
+ int tile = go2000_video[count];
+ int attr = go2000_video2[count];
+ drawgfx(bitmap,machine->gfx[0],tile,attr,0,0,x*8,y*8,cliprect,TRANSPARENCY_NONE,0);
+ count++;
+ }
+ }
+
+ /* 0x602000 - 0x603fff / 0x612000 - 0x613fff */
+ for (x=0;x<64;x++)
+ {
+ for (y=0;y<32;y++)
+ {
+ int tile = go2000_video[count];
+ int attr = go2000_video2[count];
+ drawgfx(bitmap,machine->gfx[0],tile,attr,0,0,x*8,y*8,cliprect,TRANSPARENCY_PEN,0);
+ count++;
+ }
+ }
+ return 0;
+}
+static GFXDECODE_START( go2000 )
+ GFXDECODE_ENTRY( REGION_GFX1, 0, go2000_layout, 0x0, 0x80 ) /* tiles */
+GFXDECODE_END
+
+
+static MACHINE_DRIVER_START( go2000 )
+ MDRV_CPU_ADD_TAG("main", M68000, 10000000)
+ MDRV_CPU_PROGRAM_MAP(go2000_readmem,go2000_writemem)
+ MDRV_CPU_VBLANK_INT(irq1_line_hold,1)
+
+ MDRV_SCREEN_REFRESH_RATE(60)
+ MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION)
+
+ MDRV_GFXDECODE(go2000)
+
+ MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
+ MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
+ MDRV_SCREEN_SIZE(64*8, 32*8)
+ MDRV_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1)
+ MDRV_PALETTE_LENGTH(0x800)
+
+ MDRV_VIDEO_START(go2000)
+ MDRV_VIDEO_UPDATE(go2000)
+
+ MDRV_SPEAKER_STANDARD_STEREO("left", "right")
+MACHINE_DRIVER_END
+
+ROM_START( go2000 )
+ ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "3.bin", 0x00000, 0x20000, CRC(fe1fb269) SHA1(266b8acddfcfd960b8e44f8606bf0873da42b9f8) )
+ ROM_LOAD16_BYTE( "4.bin", 0x00001, 0x20000, CRC(d6246ae3) SHA1(f2618dcabaa0c0a6e377e4acd1cdec8bea90bea8) )
+
+ ROM_REGION( 0x080000, REGION_CPU2, 0 ) /* Z80? */
+ ROM_LOAD( "5.bin", 0x00000, 0x80000, CRC(a32676ee) SHA1(2dab73497c0818fce479be21ed589985db51560b) )
+
+ ROM_REGION( 0x40000, REGION_GFX1, 0 )
+ ROM_LOAD16_BYTE( "1.bin", 0x00000, 0x20000, CRC(96e50aba) SHA1(caa1aadab855c3a758378dc8c48eec859e8110a4) )
+ ROM_LOAD16_BYTE( "2.bin", 0x00001, 0x20000, CRC(b0adf1cb) SHA1(2afb30691182dbf46be709f0d5b03b0f8ff52790) )
+ROM_END
+
+
+GAME( 2000, go2000, 0, go2000, go2000, 0, ROT0, "SA", "Go 2000", GAME_NO_SOUND|GAME_NOT_WORKING )