From 402eaa763603d529293e57f2753e87d1cd41f364 Mon Sep 17 00:00:00 2001 From: Tomasz Slanina Date: Sun, 27 Nov 2011 13:50:59 +0000 Subject: [PATCH] New games marked as GAME_NOT_WORKING ------------------------------------ Pucky [Foul, Smitdogg, The Dumping Union] --- src/mame/drivers/4enraya.c | 119 +++++++++++++++++++++++++++++++++++- src/mame/includes/4enraya.h | 5 +- src/mame/mame.lst | 1 + 3 files changed, 122 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/4enraya.c b/src/mame/drivers/4enraya.c index 9cbb4d7f563..6e4cf402fcf 100644 --- a/src/mame/drivers/4enraya.c +++ b/src/mame/drivers/4enraya.c @@ -1,11 +1,13 @@ /*************************************************************************** -Driver by Tomasz Slanina dox@space.pl +Driver by Tomasz Slanina TODO: - video and irq timings; - there's a waitstate penalty on the VRAM apparently? +- Pucky (whats the real title ?) inputs and sound issues + *************************************************************************** RAM : @@ -55,6 +57,7 @@ Sound : #include "emu.h" #include "cpu/z80/z80.h" #include "sound/ay8910.h" +#include "machine/nvram.h" #include "includes/4enraya.h" #define MAIN_CLOCK XTAL_8MHz @@ -69,7 +72,7 @@ static WRITE8_DEVICE_HANDLER( sound_control_w ) { _4enraya_state *state = device->machine().driver_data<_4enraya_state>(); - if ((state->m_last_snd_ctrl & 0x04) == 0x04 && (data & 0x4) == 0x00) + if ((state->m_last_snd_ctrl & state->m_snd_latch_bit ) == state->m_snd_latch_bit && (data & state->m_snd_latch_bit) == 0x00) ay8910_data_address_w(device, state->m_last_snd_ctrl, state->m_soundlatch); state->m_last_snd_ctrl = data; @@ -157,6 +160,21 @@ static ADDRESS_MAP_START( main_portmap, AS_IO, 8 ) AM_RANGE(0x33, 0x33) AM_DEVWRITE("aysnd", sound_control_w) ADDRESS_MAP_END +static ADDRESS_MAP_START( pucky_main_map, AS_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE("nvram") + AM_RANGE(0x7000, 0x7fff) AM_WRITE(fenraya_videoram_w) AM_BASE_SIZE_MEMBER(_4enraya_state, m_videoram, m_videoram_size) + AM_RANGE(0x8000, 0x9fff) AM_ROM +ADDRESS_MAP_END + +static ADDRESS_MAP_START( pucky_main_portmap, AS_IO, 8 ) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") + AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") + AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") + AM_RANGE(0x20, 0x20) AM_WRITE(sound_data_w) + AM_RANGE(0x30, 0x30) AM_DEVWRITE("aysnd", sound_control_w) +ADDRESS_MAP_END static INPUT_PORTS_START( 4enraya ) PORT_START("DSW") @@ -204,6 +222,67 @@ static INPUT_PORTS_START( 4enraya ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) INPUT_PORTS_END +static INPUT_PORTS_START( pucky ) // guess + PORT_START("DSW1") + PORT_DIPNAME( 0x01, 0x00, "0-0") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x01, DEF_STR( On ) ) + + PORT_DIPNAME( 0x02, 0x00, "0-1") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + + PORT_DIPNAME( 0x04, 0x00, "0-2") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x04, DEF_STR( On ) ) + + PORT_DIPNAME( 0x08, 0x00, "0-3") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + + PORT_DIPNAME( 0x10, 0x00, "0-4") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x10, DEF_STR( On ) ) + + PORT_DIPNAME( 0x20, 0x00, "0-5") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + + PORT_DIPNAME( 0x40, 0x00, "0-6") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + + PORT_DIPNAME( 0x80, 0x00, "0-7") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN4 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN5 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN6 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN7 ) + + PORT_DIPNAME( 0x80, 0x80, "DIP8") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) + +INPUT_PORTS_END + static const gfx_layout charlayout = { 8,8, @@ -277,6 +356,14 @@ static MACHINE_CONFIG_START( 4enraya, _4enraya_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( pucky, 4enraya ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(pucky_main_map) + MCFG_CPU_IO_MAP(pucky_main_portmap) + MCFG_NVRAM_ADD_0FILL("nvram") +MACHINE_CONFIG_END + + /*************************************************************************** Game driver(s) @@ -297,4 +384,32 @@ ROM_START( 4enraya ) ROM_LOAD( "1.bpr", 0x0000, 0x0020, CRC(dcbd2352) SHA1(ce72e84129ed1b455aaf648e1dfaa4333e7e7628) ) /* system control: used for memory mapping */ ROM_END + +ROM_START(pucky) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD("1.u14", 0x00000, 0x2000, CRC(848c4143) SHA1(3cff26181c58e5f52f1ac81df7d5d43e644585a2)) + ROM_LOAD("2.u46", 0x08000, 0x2000, CRC(9e6e0bd3) SHA1(f502132a0460108dad243632cc13d9116c534291)) + + ROM_REGION( 0x6000, "gfx1", 0 ) + ROM_LOAD( "3.u20", 0x2000, 0x2000, CRC(d00b04ea) SHA1(e65901d8586507257d74ab103001207e28fa28af) ) + ROM_LOAD( "4.u19", 0x4000, 0x2000, CRC(4a123a3d) SHA1(26300b8af0d0df0023a153a212699727311d1b74) ) + ROM_LOAD( "5.u18", 0x0000, 0x2000, CRC(44f272d2) SHA1(b39cbc1f290d9fb2453396906e4da4a682c41ef4) ) +ROM_END + +static DRIVER_INIT( pucky ) +{ + _4enraya_state *state = machine.driver_data<_4enraya_state>(); + UINT8 *rom = machine.region("maincpu")->base(); + + state->m_snd_latch_bit = 2; + + { + for(int i=0x8000;i<0xa000;++i) + { + rom[i]=BITSWAP8(rom[i], 7,6,5,4,3,2,0,1); + } + } +} + GAME( 1990, 4enraya, 0, 4enraya, 4enraya, 0, ROT0, "IDSA", "4 En Raya", GAME_SUPPORTS_SAVE ) +GAME( 199?, pucky, 0, pucky, pucky, pucky, ROT0, "", "Pucky", GAME_NOT_WORKING) diff --git a/src/mame/includes/4enraya.h b/src/mame/includes/4enraya.h index 80443d68d4e..1942bf2501a 100644 --- a/src/mame/includes/4enraya.h +++ b/src/mame/includes/4enraya.h @@ -8,7 +8,7 @@ class _4enraya_state : public driver_device { public: _4enraya_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), m_snd_latch_bit(4) { } /* memory pointers */ UINT8 m_videoram[0x1000]; @@ -20,6 +20,9 @@ public: /* sound-related */ int m_soundlatch; int m_last_snd_ctrl; + int m_videoram_size; + + int m_snd_latch_bit; }; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f5ba18f7624..e0eae433e86 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -9825,6 +9825,7 @@ j7wldwkd // Wild 'N' Wicked (Jpm) j7bullio // Bullionaire (Ace) // Other Games +pucky // (c) 19?? ??? vega // (c) 19?? Olympia? astinvad // (c) 1980 Stern kosmokil // bootleg