From 35c83a4901e5ba0aef79d5e0804cf43ea9a88d0a Mon Sep 17 00:00:00 2001 From: Luca Elia Date: Wed, 17 Nov 2010 17:29:57 +0000 Subject: [PATCH] New games added or promoted from NOT_WORKING status --------------------------------------------------- Pac-Slot [Bicycle Repair Man, Luca Elia] --- src/mame/drivers/cave.c | 190 ++++++++++++++++++++++++++++++++++++++-- src/mame/mamedriv.c | 1 + 2 files changed, 184 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c index 04bcc77791a..1e3c2b5a165 100644 --- a/src/mame/drivers/cave.c +++ b/src/mame/drivers/cave.c @@ -26,6 +26,7 @@ Year + Game License PCB Tilemaps Sprites 95 Donpachi Atlus AT-C01DP-2 038 9429WX727 013 8647-01 NMK 112 96 Air Gallet Banpresto BP962A 038 9437WX711 013 9346E7002 Z80 96 Hotdog Storm Marble ASTC9501 038 9341EX702 Z80 +96 Pac-Slot Namco A0442 038 9444WX010 013 9345E7006 97 Dodonpachi Atlus ATC03D2 ? 98 Dangun Feveron Nihon System CV01 038 9808WX003 013 9807EX004 98 ESP Ra.De. Atlus ATC04 ? @@ -402,6 +403,20 @@ static const eeprom_interface eeprom_interface_93C46_8bit = // "*10010xxxx" // erase all 1 00 10xxxx }; +static const eeprom_interface eeprom_interface_93C46_pacslot = +{ + 6, // address bits 6 + 16, // data bits 16 + "*110", // read 1 10 aaaaaa + "*101", // write 1 01 aaaaaa dddddddddddddddd + "*111", // erase 1 11 aaaaaa + "*10000xxxx", // lock 1 00 00xxxx + "*10011xxxx", // unlock 1 00 11xxxx + 1, // enable_multi_read (needed by pacslot) + 1 // reset_delay (otherwise pacslot will not recognize the eeprom) +// "*10001xxxx" // write all 1 00 01xxxx dddddddddddddddd +// "*10010xxxx" // erase all 1 00 10xxxx +}; /*************************************************************************** @@ -931,7 +946,7 @@ static CUSTOM_INPUT( tjumpman_hopper_r ) static ADDRESS_MAP_START( tjumpman_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM + AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprite bank 2 AM_RANGE(0x304000, 0x307fff) AM_WRITE(cave_vram_0_w) // Layer 0 - 16x16 tiles mapped here @@ -943,12 +958,52 @@ static ADDRESS_MAP_START( tjumpman_map, ADDRESS_SPACE_PROGRAM, 16 ) AM_RANGE(0x700000, 0x700007) AM_READ(cave_irq_cause_r) // IRQ Cause AM_RANGE(0x700068, 0x700069) AM_WRITE(watchdog_reset16_w) // Watchdog AM_RANGE(0x700000, 0x70007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs - AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff) // M6295 + AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff) // M6295 AM_RANGE(0xc00000, 0xc00001) AM_WRITE(tjumpman_leds_w) // Leds + Hopper AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", tjumpman_eeprom_lsb_w) // EEPROM ADDRESS_MAP_END +/*************************************************************************** + Pac-Slot +***************************************************************************/ + +static WRITE16_HANDLER( pacslot_leds_w ) +{ + cave_state *state = space->machine->driver_data(); + if (ACCESSING_BITS_0_7) + { + set_led_status(space->machine, 0, data & 0x0001); // pac-man + set_led_status(space->machine, 1, data & 0x0002); // ms. pac-man + set_led_status(space->machine, 2, data & 0x0004); // payout + set_led_status(space->machine, 3, data & 0x0008); // start + set_led_status(space->machine, 4, data & 0x0010); // bet + set_led_status(space->machine, 5, data & 0x0020); // medal + state->hopper = data & 0x0040; // hopper + } + +// popmessage("led %04X", data); +} + +static ADDRESS_MAP_START( pacslot_map, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM + AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_SHARE("nvram") // RAM + AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, spriteram, spriteram_size) // Sprites + AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_BASE_MEMBER(cave_state, spriteram_2) // Sprite bank 2 + AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE_MEMBER(cave_state, vram_0) // Layer 0 + AM_RANGE(0x400000, 0x400007) AM_READ(cave_irq_cause_r) // IRQ Cause + AM_RANGE(0x400068, 0x400069) AM_WRITE(watchdog_reset16_w) // Watchdog + AM_RANGE(0x400000, 0x40007f) AM_WRITEONLY AM_BASE_MEMBER(cave_state, videoregs) // Video Regs + AM_RANGE(0x500000, 0x500005) AM_WRITEONLY AM_BASE_MEMBER(cave_state, vctrl_0) // Layer 0 Control + AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE_SIZE_MEMBER(cave_state, paletteram, paletteram_size) // Palette + AM_RANGE(0x700000, 0x700001) AM_READ_PORT("IN0") // Inputs + EEPROM + Hopper + AM_RANGE(0x700002, 0x700003) AM_READ_PORT("IN1") // Inputs + AM_RANGE(0x800000, 0x800001) AM_DEVREADWRITE8_MODERN("oki1", okim6295_device, read, write, 0x00ff) // M6295 + AM_RANGE(0xc00000, 0xc00001) AM_WRITE(pacslot_leds_w) // Leds + Hopper + AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("eeprom", tjumpman_eeprom_lsb_w) // EEPROM +ADDRESS_MAP_END + + /*************************************************************************** Uo Poko ***************************************************************************/ @@ -1444,6 +1499,7 @@ static INPUT_PORTS_START( korokoro ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END + static INPUT_PORTS_START( tjumpman ) PORT_START("IN0") PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) @@ -1469,6 +1525,31 @@ static INPUT_PORTS_START( tjumpman ) INPUT_PORTS_END +static INPUT_PORTS_START( pacslot ) + PORT_START("IN0") + PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // credits + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eeprom_read_bit) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Pac-Man" ) PORT_CODE(KEYCODE_Y) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Bet" ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(tjumpman_hopper_r, NULL) + + 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_CONFNAME( 0x08, 0x08, "Self Test" ) + PORT_CONFSETTING( 0x08, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME( "Ms. Pac-Man" ) PORT_CODE(KEYCODE_N) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // medal + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + + /*************************************************************************** @@ -2223,6 +2304,55 @@ static MACHINE_CONFIG_START( metmqstr, cave_state ) MACHINE_CONFIG_END +/*************************************************************************** + Pac-Slot +***************************************************************************/ + +static MACHINE_CONFIG_START( pacslot, cave_state ) + + MDRV_NVRAM_ADD_0FILL("nvram") + + /* basic machine hardware */ + MDRV_CPU_ADD("maincpu", M68000, XTAL_28MHz / 2) + MDRV_CPU_PROGRAM_MAP(pacslot_map) + MDRV_CPU_VBLANK_INT("screen", cave_interrupt) + + MDRV_WATCHDOG_TIME_INIT(SEC(3)) /* a guess, and certainly wrong */ + + MDRV_MACHINE_START(cave) + MDRV_MACHINE_RESET(cave) + MDRV_EEPROM_ADD("eeprom", eeprom_interface_93C46_pacslot) + + /* video hardware */ + MDRV_SCREEN_ADD("screen", RASTER) + MDRV_SCREEN_REFRESH_RATE(15625/271.5) + MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(0x200, 240) + MDRV_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1) + + MDRV_GFXDECODE(tjumpman) + MDRV_PALETTE_LENGTH(0x8000) + MDRV_PALETTE_INIT(cave) + + MDRV_VIDEO_START(cave_1_layer) + MDRV_VIDEO_UPDATE(cave) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MDRV_OKIM6295_ADD("oki1", XTAL_28MHz / 28, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + + // oki2 chip is present but its rom socket is unpopulated + MDRV_OKIM6295_ADD("oki2", XTAL_28MHz / 28, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) + +MACHINE_CONFIG_END + + /*************************************************************************** Power Instinct 2 ***************************************************************************/ @@ -2384,7 +2514,7 @@ static MACHINE_CONFIG_START( tjumpman, cave_state ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) - // oki2 spot is unpopulated + // oki2 chip spot and rom socket are both unpopulated MACHINE_CONFIG_END @@ -3576,6 +3706,50 @@ ROM_START( nmaster ) ROM_END +/*************************************************************************** + + Pac-Slot by Namco, 1996 (according to http://pacman.com/ja/museum/index.html) + Namco N-44 EM VIDEO platform, PCB A0442 + + TMP 68HC000P-16 + + 013 9345E7006 + 038 9444WX010 + + OKI M6295 x 2 + + Battery + 93C46 EEPROM (at U24) + + 28MHz XTAL + +***************************************************************************/ + +ROM_START( pacslot ) + ROM_REGION( 0x080000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "pa1-mprob.u41", 0x00000, 0x80000, CRC(56281370) SHA1(b75a7c5997adac14486cef7be4e41d113c86021f) ) + + ROM_REGION( 0x100000 * 2, "sprites", 0 ) /* Sprites */ + ROM_LOAD16_BYTE( "pa1-obj0.u52", 0x00000, 0x80000, CRC(bf9232ce) SHA1(9a887a964e9a75e16c59dcf217c664404e74cc2a) ) + ROM_LOAD16_BYTE( "pa1-obj1.u53", 0x00001, 0x80000, CRC(6eb76a04) SHA1(66c8e36bee4439c203a02b30898e4f741205d681) ) + + ROM_REGION( 0x80000, "layer0", 0 ) /* Layer 0 */ + ROM_LOAD( "pa1-cha0.u60", 0x00000, 0x40000, CRC(314b51a6) SHA1(eef102c4f0c0e0f668a7cf228cd4fbe45b2ce45f) ) + ROM_LOAD( "pa1-cha1.u61", 0x40000, 0x40000, CRC(f7a2c846) SHA1(3b505a7a3c7f30e6cd87803f5ae7e962205fc1f0) ) + + ROM_REGION( 0x40000, "oki1", 0 ) /* OKIM6295 #1 Samples */ + ROM_LOAD( "pa1-voi0.u27", 0x00000, 0x40000, CRC(e3e623e1) SHA1(396accc7f7384277b700f019b5083def8a48ccd7) ) + + ROM_REGION( 0x40000, "oki2", ROMREGION_ERASE00 ) /* OKIM6295 #2 Samples */ + // empty ROM socket + + ROM_REGION( 0x117 * 3, "plds", 0 ) + ROM_LOAD( "n44u1a.u1", 0x117*0, 0x117, NO_DUMP ) // GAL16V8B-15LP (Protected) + ROM_LOAD( "n44u3a.u3", 0x117*1, 0x117, NO_DUMP ) // GAL16V8B-15LP (Protected) + ROM_LOAD( "n44u51a.u51", 0x117*2, 0x117, NO_DUMP ) // GAL16V8B-15LP (Protected) +ROM_END + + /*************************************************************************** Power Instinct 2 (USA) / Gouketsuji Ichizoku 2 (Japan) @@ -4065,7 +4239,7 @@ ROM_END OKI M6295 Battery - EEPROM? + 93C46 EEPROM? (at U24) 28MHz XTAL @@ -4086,9 +4260,9 @@ ROM_START( tjumpman ) ROM_REGION( 0x40000, "oki1", 0 ) /* OKIM6295 #1 Samples */ ROM_LOAD( "tj1_voi-0a.u27", 0x00000, 0x40000, CRC(b5693aae) SHA1(8887ae98030cb5d184e3d57d2b4e48bf1e76a232) ) - ROM_REGION( 0x0002, "plds", 0 ) - ROM_LOAD( "tj1_gal.uxx", 0x0000, 0x0001, NO_DUMP ) // GAL16V8D-15LP - ROM_LOAD( "tj1_gal.uyy", 0x0000, 0x0001, NO_DUMP ) // GAL16V8D-15LP + ROM_REGION( 0x117 * 2, "plds", 0 ) + ROM_LOAD( "n44u1g.u1", 0x117*0, 0x117, CRC(e226ec18) SHA1(c14098e06413d6fc88926e31538d496ef7314903) ) // GAL16V8D-15LP + ROM_LOAD( "n44u3b.u3", 0x117*1, 0x117, CRC(4cd79750) SHA1(cfb3331cd8bb2eaaf5d2a80ae76a5a15ae92d379) ) // GAL16V8D-15LP ROM_END @@ -4510,6 +4684,8 @@ GAME( 1996, agalleth, agallet, sailormn, cave, agallet, ROT270, "Banpres GAME( 1996, hotdogst, 0, hotdogst, cave, hotdogst, ROT90, "Marble", "Hotdog Storm (International)", 0 ) +GAME( 1996, pacslot, 0, pacslot, pacslot, tjumpman, ROT0, "Namco", "Pac-Slot", 0 ) + GAME( 1997, ddonpach, 0, ddonpach, cave, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (International, Master Ver. 97/02/05)", 0 ) GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (Japan, Master Ver. 97/02/05)", 0 ) diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index 23ab2bae084..8a6b85e17ed 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -2476,6 +2476,7 @@ V-V TP-027 DRIVER( agallett ) /* (c) 1996 Banpresto / Gazelle (country is in EEPROM) */ DRIVER( agalleth ) /* (c) 1996 Banpresto / Gazelle (country is in EEPROM) */ DRIVER( hotdogst ) /* (c) 1996 Marble */ + DRIVER( pacslot ) /* (c) 1996 Namco */ DRIVER( ddonpach ) /* (c) 1997 Atlus/Cave */ DRIVER( ddonpachj ) /* (c) 1997 Atlus/Cave */ DRIVER( dfeveron ) /* (c) 1998 Cave + Nihon System license */