mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
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:
parent
4b3340f5da
commit
8c5e1a15a8
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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. */
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user