diff --git a/src/mame/drivers/tnzs.c b/src/mame/drivers/tnzs.c index 89cfef94223..2ef87e52632 100644 --- a/src/mame/drivers/tnzs.c +++ b/src/mame/drivers/tnzs.c @@ -217,6 +217,34 @@ Driver by Takahiro Nogi (nogi@kt.rim.or.jp) 1999/11/06 ***************************************************************************/ +/*************************************************************************** + Jumping Pop + - added by David Haywood, thanks to Robin Cooper + + This is not a Taito board, it's a copy, it contains no original Taito or + Seta components. + + The game is a bootleg of Plump Pop produced by NICs of Korea, it has new + graphics, sounds etc. + + Uses a YM2151 instead of the YM2203, has no MCU + + Uses Palette RAM instead of PROMs. + + ToDo: + + Palette format (or gfx decode?) appears to be incorrect, some colours + clearly don't match the screenshot. + + Frequencies have not been measured + + The bar behind the players flickers first boot / first attract levels, bug? + + Inputs might be wrong, should be joystick not spinner? (can't select character) + +***************************************************************************/ + + #include "driver.h" #include "deprecat.h" #include "cpu/i8x41/i8x41.h" @@ -224,6 +252,7 @@ Driver by Takahiro Nogi (nogi@kt.rim.or.jp) 1999/11/06 #include "sound/dac.h" #include "sound/samples.h" #include "includes/tnzs.h" +#include "sound/2151intf.h" UINT8 *tnzs_objram, *tnzs_sharedram; UINT8 *tnzs_vdcram, *tnzs_scrollram, *tnzs_objctrl, *tnzs_bg_flag; @@ -515,6 +544,75 @@ static ADDRESS_MAP_START( i8742_writeport, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x02, 0x02) AM_WRITE(tnzs_port2_w) ADDRESS_MAP_END + +WRITE8_HANDLER( jpopnics_palette_w ) +{ + int r,g,b; + UINT16 paldata; + paletteram[offset] = data; + + offset = offset >> 1; + + paldata = (paletteram[offset*2]<<8) | paletteram[(offset*2+1)]; + + g = (paldata >> 12) & 0x000f; + r = (paldata >> 4) & 0x000f; + b = (paldata >> 8) & 0x000f; + // the other bits seem to be used, and the colours are wrong.. + + palette_set_color_rgb(Machine,offset,r<<4, g<<4, b<<4); +} + +static ADDRESS_MAP_START( jpopnics_main_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_ROM) + AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&tnzs_objram) + AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(1) /* WORK RAM (shared by the 2 z80's) */ + AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE(&tnzs_vdcram) /* VDC RAM */ + AM_RANGE(0xf200, 0xf2ff) AM_RAM AM_BASE(&tnzs_scrollram) /* scrolling info */ + AM_RANGE(0xf300, 0xf303) AM_MIRROR(0xfc) AM_WRITE(SMH_RAM) AM_BASE(&tnzs_objctrl) /* control registers (0x80 mirror used by Arkanoid 2) */ + AM_RANGE(0xf400, 0xf400) AM_WRITE(SMH_RAM) AM_BASE(&tnzs_bg_flag) /* enable / disable background transparency */ + AM_RANGE(0xf600, 0xf600) AM_READWRITE(SMH_NOP, tnzs_bankswitch_w) + AM_RANGE(0xf800, 0xffff) AM_RAM AM_WRITE(jpopnics_palette_w) AM_BASE(&paletteram) +ADDRESS_MAP_END + +READ8_HANDLER( moo_r ) +{ + return mame_rand(machine); +} + +READ8_HANDLER( bbb_r ) +{ + return 0xff; +} + +WRITE8_HANDLER( jpopnics_subbankswitch_w ) +{ + UINT8 *RAM = memory_region(REGION_CPU2); + + /* bits 0-1 select ROM bank */ + memory_set_bankptr (2, &RAM[0x10000 + 0x2000 * (data & 3)]); +} + + +static ADDRESS_MAP_START( jpopnics_sub_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK2, SMH_ROM) + + AM_RANGE(0xa000, 0xa000) AM_WRITE(jpopnics_subbankswitch_w) + AM_RANGE(0xb000, 0xb000) AM_READ(input_port_0_r) AM_WRITE(YM2151_register_port_0_w) + AM_RANGE(0xb001, 0xb001) AM_READWRITE(YM2151_status_port_0_r, YM2151_data_port_0_w) + AM_RANGE(0xc000, 0xc000) AM_READ(input_port_1_r) + AM_RANGE(0xc001, 0xc001) AM_READ(input_port_2_r) + AM_RANGE(0xc600, 0xc600) AM_READ(input_port_3_r) + AM_RANGE(0xc601, 0xc601) AM_READ(input_port_4_r) + + AM_RANGE(0xd000, 0xdfff) AM_RAM + AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(1) + + AM_RANGE(0xf000, 0xf003) AM_READ(arknoid2_sh_f000_r) +ADDRESS_MAP_END + #define TNZS_PLAYER_INPUT(_n_)\ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(_n_)\ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(_n_)\ @@ -775,6 +873,74 @@ static INPUT_PORTS_START( plumppop ) PORT_BIT( 0xffff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(70) PORT_KEYDELTA(15) PORT_PLAYER(2) INPUT_PORTS_END + +static INPUT_PORTS_START( jpopnics ) + PORT_START + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START + PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Button 2 (Cheat)") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + + PORT_START + PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Button 2 (Cheat)") PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START + 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( Flip_Screen ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + TAITO_COINAGE_JAPAN_8 + + PORT_START + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x08, "50k 150k" ) + PORT_DIPSETTING( 0x0c, "70k 200k" ) + PORT_DIPSETTING( 0x04, "100k 250k" ) + PORT_DIPSETTING( 0x00, "200k 300k" ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x20, "2" ) + PORT_DIPSETTING( 0x30, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x00, "5" ) + 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( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) + + PORT_START + PORT_START + + + PORT_START_TAG("AN1") /* spinner 1 - read at f000/1 */ + PORT_BIT( 0xffff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(70) PORT_KEYDELTA(15) + + PORT_START_TAG("AN2") /* spinner 2 - read at f002/3 */ + PORT_BIT( 0xffff, 0x0000, IPT_DIAL ) PORT_SENSITIVITY(70) PORT_KEYDELTA(15) PORT_PLAYER(2) +INPUT_PORTS_END + + #define DRTOPP_COMMON\ PORT_START_TAG("DSWB")\ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )\ @@ -1558,6 +1724,40 @@ static MACHINE_DRIVER_START( kabukiz ) MACHINE_DRIVER_END +static MACHINE_DRIVER_START( jpopnics ) + + /* basic machine hardware */ + MDRV_CPU_ADD(Z80,XTAL_12MHz/2) /* Not verified - Main board Crystal is 12MHz */ + MDRV_CPU_PROGRAM_MAP(jpopnics_main_map,0) + MDRV_CPU_VBLANK_INT("main", irq0_line_hold) + + MDRV_CPU_ADD(Z80,XTAL_12MHz/2) /* Not verified - Main board Crystal is 12MHz */ + MDRV_CPU_PROGRAM_MAP(jpopnics_sub_map,0) + MDRV_CPU_VBLANK_INT("main", irq0_line_hold) + + MDRV_INTERLEAVE(100) + + /* video hardware */ + MDRV_SCREEN_ADD("main", RASTER) + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(32*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) + + MDRV_GFXDECODE(tnzs) + MDRV_PALETTE_LENGTH(1024) + + MDRV_VIDEO_UPDATE(tnzs) + MDRV_VIDEO_EOF(tnzs) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD(YM2151, XTAL_12MHz/4) /* Not verified - Main board Crystal is 12MHz */ + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_DRIVER_END + /*************************************************************************** @@ -1601,6 +1801,27 @@ ROM_START( plumppop ) ROM_LOAD( "a98-12.bpr", 0x0200, 0x200, CRC(90dc9da7) SHA1(f719dead7f4597e5ee6f1103599505b98cb58299) ) /* lo bytes, AM27S29 or compatible like MB7124 */ ROM_END +ROM_START( jpopnics ) + ROM_REGION( 0x30000, REGION_CPU1, 0 ) /* 64k + bankswitch areas for the first CPU */ + ROM_LOAD( "u96cpu2", 0x00000, 0x08000, CRC(649e951c) SHA1(b26bb157da9fcf5d3eddbb637a4cb2cb1b0fedac) ) + ROM_CONTINUE( 0x18000, 0x08000 ) /* banked at 8000-bfff */ + ROM_CONTINUE( 0x20000, 0x10000 ) /* banked at 8000-bfff */ + + ROM_REGION( 0x18000, REGION_CPU2, 0 ) /* 64k for the second CPU */ + ROM_LOAD( "u124cpu1", 0x00000, 0x08000, CRC(8453e8e4) SHA1(aac1bd501a15f79e3ed566c949504169b2aa762d) ) + ROM_CONTINUE( 0x10000, 0x08000 ) /* banked at 8000-9fff */ + + ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "u94gfx", 0x00000, 0x10000, CRC(e49f2fdd) SHA1(6824c6520d0039c062f028e69cbfa7b3790ea756) ) + ROM_CONTINUE( 0x20000, 0x10000 ) + ROM_LOAD( "u93gfx", 0x40000, 0x10000, CRC(a7791b5b) SHA1(4abfe9b2612ed0d17f1282a60879cf1d0620ae4c) ) + ROM_CONTINUE( 0x60000, 0x10000 ) + ROM_LOAD( "u92gfx", 0x80000, 0x10000, CRC(b30caac7) SHA1(a434f67e1bec9848d9c3e184734d8cebee048176) ) + ROM_CONTINUE( 0xa0000, 0x10000 ) + ROM_LOAD( "u91gfx", 0xc0000, 0x10000, CRC(18ada5f2) SHA1(3307dd11e5cd0d0abe8b7751a5fbf54998558b34) ) + ROM_CONTINUE( 0xe0000, 0x10000 ) +ROM_END + ROM_START( extrmatn ) ROM_REGION( 0x30000, REGION_CPU1, 0 ) /* Region 0 - main cpu */ ROM_LOAD( "b06-20.11c", 0x00000, 0x08000, CRC(04e3fc1f) SHA1(b1cf2f79f43fa33d6175368c897f84ec6aa6e746) ) @@ -2146,3 +2367,4 @@ GAME( 1988, tnzso, tnzs, tnzs, tnzs2, tnzs, ROT0, "Taito Cor GAME( 1988, kabukiz, 0, kabukiz, kabukiz, kabukiz, ROT0, "Taito Corporation Japan", "Kabuki-Z (World)", 0 ) GAME( 1988, kabukizj, kabukiz, kabukiz, kabukiz, kabukiz, ROT0, "Taito Corporation", "Kabuki-Z (Japan)", 0 ) GAME( 1989, insectx, 0, insectx, insectx, insectx, ROT0, "Taito Corporation Japan", "Insector X (World)", 0 ) +GAME( 1992, jpopnics, 0, jpopnics, jpopnics, 0, ROT0, "Nics", "Jumping Pop (Nics, Korean bootleg of Plump Pop)", GAME_IMPERFECT_GRAPHICS ) diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index c759ad81201..c01bf93ee1b 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -1735,6 +1735,7 @@ const game_driver * const drivers[] = /* Taito "tnzs" (Seta) hardware */ DRIVER( plumppop ) /* A98 (c) 1987 Taito Corporation (Japan) */ + DRIVER( jpopnics ) /* (c)1992 NICs, based on Plump Pop code */ DRIVER( extrmatn ) /* B06 (c) 1987 World Games */ DRIVER( extrmatj ) /* B06 (c) 1987 Taito Corporation (Japan)*/ DRIVER( arknoid2 ) /* B08 (c) 1987 Taito Corporation Japan (World) */