Added genuine Japanese version of lupin3 [Hau, Team Japump]

Added support for cocktail mode.
Previous version is renamed to lupin3a (it seems to be official modification from invaders board)
This commit is contained in:
Yasuhiro Ogawa 2009-06-22 14:10:21 +00:00
parent 4b3340f5da
commit 8c5e1a15a8
5 changed files with 78 additions and 6 deletions

View File

@ -1057,7 +1057,7 @@ WRITE8_HANDLER( lupin3_sh_port_2_w )
if (rising_bits & 0x08) sample_start(samples, 3, 0, 0); /* start intermission, end game */
//if (rising_bits & 0x10) sample_start(samples, 3, 9, 0); /* Dog barking */
c8080bw_flip_screen_w(space, data & 0x20);
lupin3_flip_screen_w(space, data & 0x60);
port_2_last_extra = data;
}

View File

@ -1070,12 +1070,48 @@ static ADDRESS_MAP_START( lupin3_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x03, 0x03) AM_READWRITE(mb14241_0_shift_result_r, lupin3_sh_port_1_w)
AM_RANGE(0x04, 0x04) AM_WRITE(mb14241_0_shift_data_w)
AM_RANGE(0x05, 0x05) AM_WRITE(lupin3_sh_port_2_w)
AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
ADDRESS_MAP_END
static INPUT_PORTS_START( lupin3 )
PORT_INCLUDE( invrvnge )
PORT_MODIFY("IN0")
PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_COCKTAIL
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
PORT_MODIFY("IN1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY
PORT_MODIFY("IN2")
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x08, 0x00, "Bags To Collect" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08, "2" )
PORT_DIPSETTING( 0x00, "8" )
PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "SW1:5" )
PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW1:6" )
PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW1:7" )
PORT_DIPNAME(0x80, 0x00, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( lupin3a )
PORT_INCLUDE( invrvnge )
PORT_MODIFY("IN0")
//PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* selects color mode (dynamic vs. static) */
//PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* something has to do with sound */
@ -1109,14 +1145,26 @@ static INPUT_PORTS_START( lupin3 )
PORT_DIPNAME(0x80, 0x00, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
/* Dummy port for cocktail mode (not used) */
PORT_MODIFY(CABINET_PORT_TAG)
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END
static MACHINE_DRIVER_START( lupin3 )
/* basic machine hardware */
MDRV_IMPORT_FROM(mw8080bw_root)
MDRV_CPU_MODIFY("maincpu")
MDRV_CPU_IO_MAP(lupin3_io_map)
MDRV_MACHINE_START(extra_8080bw)
/* video hardware */
MDRV_VIDEO_UPDATE(indianbt)
/* sound hardware */
MDRV_IMPORT_FROM(invaders_samples_audio)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( lupin3a )
/* basic machine hardware */
MDRV_IMPORT_FROM(mw8080bw_root)
MDRV_CPU_MODIFY("maincpu")
@ -2435,6 +2483,20 @@ ROM_START( schasrcv )
ROM_END
ROM_START( lupin3 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "lp01.36", 0x0000, 0x0800, CRC(fd506ee8) SHA1(67ce62f24892f0eddf3e47913dff541f41493a17) )
ROM_LOAD( "lp02.35", 0x0800, 0x0800, CRC(ec4225f8) SHA1(cd7360b3b339e5050075b498226070914fb7a031) )
ROM_LOAD( "lp03.34", 0x1000, 0x0800, CRC(9307d377) SHA1(081f6c63ff2dcc549e44ab5ff5f5ddf99d544640) )
ROM_LOAD( "lp04.33", 0x1800, 0x0800, CRC(e41e8b2b) SHA1(e67eaa8aeaf13f706afc17074fbbde3ad2cc9548) )
ROM_LOAD( "lp05.32", 0x4000, 0x0800, CRC(f5c2faf4) SHA1(8d056f8c630e4659c02dd5da759dd497e4734292) )
ROM_LOAD( "lp06.31", 0x4800, 0x0800, CRC(66289ab2) SHA1(fc9b4a7b7a08d43f34beaf1a8e68ed0ff6148534) )
ROM_REGION( 0x0800, "proms", 0 ) /* color map */
ROM_LOAD( "lp08.1", 0x0000, 0x0400, CRC(33dbd03a) SHA1(1e0ae1cad1e9a90642886ae2ef726d3f383dd6cf) )
ROM_LOAD( "lp09.2", 0x0400, 0x0400, CRC(9eaee652) SHA1(a4d2d8282ba825f3a8c0cc9bca16e1d36a0d0796) )
ROM_END
ROM_START( lupin3a )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "lp12.bin", 0x0000, 0x0800, CRC(68a7f47a) SHA1(dce99b3810331d7603fa468f1dea984e571f709b) )
ROM_LOAD( "lp13.bin", 0x0800, 0x0800, CRC(cae9a17b) SHA1(a333ba7db45325996e3254ab36162bb7577e8a38) )
@ -2652,7 +2714,8 @@ GAME( 1979, cosmo, 0, cosmo, cosmo, 0, ROT90, "TDS & Mints", "C
GAME( 1979, schaser, 0, schaser, schaser, 0, ROT270, "Taito", "Space Chaser", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
GAME( 1979, schasrcv, schaser, schasrcv, schasrcv, 0, ROT270, "Taito", "Space Chaser (CV version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS )
GAME( 1979, sflush, 0, sflush, sflush, 0, ROT270, "Taito", "Straight Flush",GAME_SUPPORTS_SAVE | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL)
GAME( 1980, lupin3, 0, lupin3, lupin3, 0, ROT270, "Taito", "Lupin III", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL )
GAME( 1980, lupin3, 0, lupin3, lupin3, 0, ROT270, "Taito", "Lupin III (set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
GAME( 1980, lupin3a, lupin3, lupin3a, lupin3a, 0, ROT270, "Taito", "Lupin III (set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
GAME( 1980, polaris, 0, polaris, polaris, 0, ROT270, "Taito", "Polaris (set 1)", GAME_SUPPORTS_SAVE )
GAME( 1980, polarisa, polaris, polaris, polaris, 0, ROT270, "Taito", "Polaris (set 2)", GAME_SUPPORTS_SAVE )
GAME( 1980, ballbomb, 0, ballbomb, ballbomb, 0, ROT270, "Taito", "Balloon Bomber", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) /* missing clouds */

View File

@ -76,6 +76,7 @@ extern UINT8 *c8080bw_colorram;
MACHINE_START( extra_8080bw_vh );
void c8080bw_flip_screen_w(const address_space *space, int data);
void lupin3_flip_screen_w(const address_space *space, int data);
void c8080bw_screen_red_w(int data);
void schaser_background_control_w(int data);

View File

@ -1216,6 +1216,7 @@ const game_driver * const drivers[] =
DRIVER( schaser ) /* RT Taito */
DRIVER( schasrcv ) /* RT Taito */
DRIVER( lupin3 ) /* LP (c) 1980 Taito */
DRIVER( lupin3a ) /* LP (c) 1980 Taito */
DRIVER( intruder ) /* (c) 1980 GamePlan (Taito) */
DRIVER( spclaser ) /* (c) 1980 GamePlan (Taito) */
DRIVER( laser ) /* (c) 1980 Leisure Time Electronics Inc. */

View File

@ -41,6 +41,13 @@ void c8080bw_flip_screen_w(const address_space *space, int data)
}
void lupin3_flip_screen_w(const address_space *space, int data)
{
color_map = data & 0x40;
c8080bw_flip_screen = (data & 0x20) && (input_port_read(space->machine, "IN2") & 0x04);
}
void c8080bw_screen_red_w(int data)
{
screen_red = data;