diff options
author | Angelo Salese <angelosa@users.noreply.github.com> | 2011-09-20 20:33:12 +0000 |
---|---|---|
committer | Angelo Salese <angelosa@users.noreply.github.com> | 2011-09-20 20:33:12 +0000 |
commit | 39f57c941ae0997b4a7df10523c36d9158bf6fdb (patch) | |
tree | 86d823bd5d250920bb24b48b49568530ba754f41 | |
parent | 2aafe27e9e90b4281418c0c2c96798f2537c2c43 (diff) |
New WORKING game
--------------------
Umi de Poker / Marine Paradise [Angelo Salese, Yasuhiro Ogawa]
Slot Poker Saiyuki [Angelo Salese, Yasuhiro Ogawa]
(HW is very simple, but the games themselves seems better programmed than your average slot-based gambler ...)
-rw-r--r-- | src/mame/drivers/umipoker.c | 155 | ||||
-rw-r--r-- | src/mame/mame.lst | 2 |
2 files changed, 125 insertions, 32 deletions
diff --git a/src/mame/drivers/umipoker.c b/src/mame/drivers/umipoker.c index 579c6e3e918..f61186b3533 100644 --- a/src/mame/drivers/umipoker.c +++ b/src/mame/drivers/umipoker.c @@ -1,8 +1,13 @@ /*************************************************************************** Umi de Poker (c) 1997 World Station Co.,LTD + Slot Poker Saiyuki (c) 1998 World Station Co.,LTD - preliminary driver by Angelo Salese + driver by Angelo Salese + + TODO: + - fix clocks; + - inputs are bare-bones; TMP68HC000-16 + z80 + YM3812 + OKI6295 @@ -13,6 +18,7 @@ #include "cpu/z80/z80.h" #include "sound/3812intf.h" #include "sound/okim6295.h" +#include "machine/nvram.h" class umipoker_state : public driver_device @@ -196,7 +202,7 @@ static WRITE16_HANDLER( umipoker_vram_3_w ) static ADDRESS_MAP_START( umipoker_map, AS_PROGRAM, 16 ) ADDRESS_MAP_UNMAP_LOW AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x400000, 0x403fff) AM_RAM + AM_RANGE(0x400000, 0x403fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE_GENERIC(paletteram) // Palette AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(umipoker_vram_0_w) AM_BASE_MEMBER(umipoker_state, m_vram_0) AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(umipoker_vram_1_w) AM_BASE_MEMBER(umipoker_state, m_vram_1) @@ -205,15 +211,16 @@ static ADDRESS_MAP_START( umipoker_map, AS_PROGRAM, 16 ) AM_RANGE(0xc00000, 0xc0ffff) AM_READ8(z80_rom_readback_r,0x00ff) AM_RANGE(0xc1f000, 0xc1ffff) AM_READWRITE8(z80_shared_ram_r,z80_shared_ram_w,0x00ff) AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("IN0") - AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN1") + AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN1") // unused? AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2") - AM_RANGE(0xe00010, 0xe00011) AM_WRITENOP // outputs + AM_RANGE(0xe0000c, 0xe0000d) AM_WRITENOP // lamps + AM_RANGE(0xe00010, 0xe00011) AM_WRITENOP // coin counters AM_RANGE(0xe00014, 0xe00015) AM_READ_PORT("DSW0") AM_RANGE(0xe00018, 0xe00019) AM_READ_PORT("DSW1") AM_RANGE(0xe00020, 0xe00021) AM_WRITE(umipoker_scrolly_0_w) AM_RANGE(0xe00022, 0xe00023) AM_WRITE(umipoker_irq_ack_w) - AM_RANGE(0xe00026, 0xe00027) AM_WRITE(umipoker_scrolly_1_w) - AM_RANGE(0xe0002a, 0xe0002b) AM_WRITE(umipoker_scrolly_2_w) + AM_RANGE(0xe00026, 0xe00027) AM_WRITE(umipoker_scrolly_2_w) + AM_RANGE(0xe0002a, 0xe0002b) AM_WRITE(umipoker_scrolly_1_w) AM_RANGE(0xe0002c, 0xe0002d) AM_WRITENOP // unknown meaning, bit 0 goes from 0 -> 1 on IRQ service routine AM_RANGE(0xe0002e, 0xe0002f) AM_WRITE(umipoker_scrolly_3_w) ADDRESS_MAP_END @@ -229,7 +236,7 @@ static ADDRESS_MAP_START( umipoker_audio_io_map, AS_IO, 8 ) AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w) ADDRESS_MAP_END -static INPUT_PORTS_START( umipoker ) +static INPUT_PORTS_START( common ) PORT_START("IN0") PORT_DIPNAME( 0x0001, 0x0001, "IN0" ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) @@ -237,51 +244,131 @@ static INPUT_PORTS_START( umipoker ) 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_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_GAMBLE_HIGH ) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_GAMBLE_D_UP ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_GAMBLE_TAKE ) + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_GAMBLE_BET ) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_GAMBLE_LOW ) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_DIPNAME( 0x0100, 0x0100, "IN0" ) + 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 ) ) + + PORT_START("IN1") + PORT_DIPNAME( 0x0001, 0x0000, "IN1" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, "IN0" ) + PORT_DIPNAME( 0x0100, 0x0000, "IN0" ) PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_START("IN1") - PORT_DIPNAME( 0x0001, 0x0001, "IN1" ) + PORT_START("IN2") + PORT_DIPNAME( 0x0001, 0x0000, "IN2" ) + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_SERVICE1 ) + PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_COIN3 ) + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYIN ) + PORT_DIPNAME( 0x0100, 0x0000, "IN0" ) + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_SERVICE_NO_TOGGLE( 0x4000, IP_ACTIVE_HIGH ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( umipoker ) + PORT_INCLUDE( common ) + + PORT_START("DSW0") + PORT_DIPNAME( 0x0001, 0x0001, "DSW0" ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) @@ -330,8 +417,8 @@ static INPUT_PORTS_START( umipoker ) PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_START("IN2") - PORT_DIPNAME( 0x0001, 0x0001, "IN2" ) + PORT_START("DSW1") + PORT_DIPNAME( 0x0001, 0x0001, "DSW1" ) PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) @@ -364,9 +451,9 @@ static INPUT_PORTS_START( umipoker ) 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( 0x0800, 0x0000, "Title Type" ) + PORT_DIPSETTING( 0x0000, "Umi de Poker" ) + PORT_DIPSETTING( 0x0800, "Marine Paradise" ) PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) @@ -379,6 +466,10 @@ static INPUT_PORTS_START( umipoker ) PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( saiyukip ) + PORT_INCLUDE( common ) PORT_START("DSW0") PORT_DIPNAME( 0x0001, 0x0001, "DSW0" ) @@ -520,6 +611,8 @@ static MACHINE_CONFIG_START( umipoker, umipoker_state ) MCFG_CPU_IO_MAP(umipoker_audio_io_map) MCFG_CPU_PERIODIC_INT(irq0_line_hold, 120) // ? controls ym3812 music tempo + MCFG_NVRAM_ADD_1FILL("nvram") + MCFG_MACHINE_START(umipoker) MCFG_MACHINE_RESET(umipoker) @@ -573,7 +666,7 @@ ROM_START( umipoker ) ROM_CONTINUE( 0x000000, 0x040000 ) ROM_END -ROM_START( sayukipk ) +ROM_START( saiyukip ) ROM_REGION( 0x40000, "maincpu", 0 ) ROM_LOAD16_BYTE( "slp0-spq.u61", 0x000000, 0x020000, CRC(7fc0f201) SHA1(969170d68278e212dd459744373ed9e704976e45) ) ROM_LOAD16_BYTE( "slp1-spq.u60", 0x000001, 0x020000, CRC(c8e3547c) SHA1(18bb380a64ed36f45a377b86cbbac892efe879bb) ) @@ -593,5 +686,5 @@ ROM_START( sayukipk ) ROM_END -GAME( 1997, umipoker, 0, umipoker, umipoker, 0, ROT0, "World Station Co.,LTD", "Umi de Poker / Marine Paradise", GAME_NOT_WORKING ) // title screen is toggleable thru an i/o bit -GAME( 1998, sayukipk, 0, umipoker, umipoker, 0, ROT0, "World Station Co.,LTD", "Slot Poker Saiyuki", GAME_NOT_WORKING ) +GAME( 1997, umipoker, 0, umipoker, umipoker, 0, ROT0, "World Station Co.,LTD", "Umi de Poker / Marine Paradise (Japan)", 0 ) // title screen is toggleable thru a dsw +GAME( 1998, saiyukip, 0, umipoker, saiyukip, 0, ROT0, "World Station Co.,LTD", "Slot Poker Saiyuki (Japan)", 0 ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 911db766096..6a32ad0d137 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17817,4 +17817,4 @@ spacecty strike umipoker -sayukipk +saiyukip |