trunk/src/mame/drivers/vicdual.c
r245466 | r245467 | |
1044 | 1044 | if (offset & 0x40) vicdual_palette_bank_w(space, 0, data); |
1045 | 1045 | } |
1046 | 1046 | |
| 1047 | WRITE8_MEMBER(vicdual_state::carhntds_io_w) |
| 1048 | { |
| 1049 | if (offset & 0x01) { /* invinco_audio_w(space, 0, data); */ } |
| 1050 | if (offset & 0x02) { /* deepscan_audio_w(0, data) */ } |
| 1051 | if (offset & 0x08) assert_coin_status(); |
| 1052 | if (offset & 0x40) vicdual_palette_bank_w(space, 0, data); |
| 1053 | } |
1047 | 1054 | |
| 1055 | |
1048 | 1056 | WRITE8_MEMBER(vicdual_state::sspacaho_io_w) |
1049 | 1057 | { |
1050 | 1058 | if (offset & 0x01) invho2_audio_w(space, 0, data); |
r245466 | r245467 | |
1115 | 1123 | |
1116 | 1124 | |
1117 | 1125 | static ADDRESS_MAP_START( vicdual_dualgame_map, AS_PROGRAM, 8, vicdual_state ) |
1118 | | AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM |
| 1126 | AM_RANGE(0x0000, 0x3fff) AM_MIRROR(0x4000) AM_ROM |
1119 | 1127 | AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_videoram_w) AM_SHARE("videoram") |
1120 | 1128 | AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM |
1121 | 1129 | AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_characterram_w) AM_SHARE("characterram") |
1122 | 1130 | ADDRESS_MAP_END |
1123 | 1131 | |
| 1132 | static ADDRESS_MAP_START( carhntds_dualgame_map, AS_PROGRAM, 8, vicdual_state ) |
| 1133 | AM_RANGE(0x0000, 0x7fff) AM_ROM // also has part of a rom mapped at 0x4000 |
| 1134 | AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_videoram_w) AM_SHARE("videoram") |
| 1135 | AM_RANGE(0x8400, 0x87ff) AM_MIRROR(0x7000) AM_RAM |
| 1136 | AM_RANGE(0x8800, 0x8fff) AM_MIRROR(0x7000) AM_RAM_WRITE(vicdual_characterram_w) AM_SHARE("characterram") |
| 1137 | ADDRESS_MAP_END |
1124 | 1138 | |
1125 | 1139 | static ADDRESS_MAP_START( invho2_io_map, AS_IO, 8, vicdual_state ) |
1126 | 1140 | ADDRESS_MAP_GLOBAL_MASK(0x7f) |
r245466 | r245467 | |
1149 | 1163 | AM_RANGE(0x00, 0x7f) AM_WRITE(invds_io_w) |
1150 | 1164 | ADDRESS_MAP_END |
1151 | 1165 | |
| 1166 | static ADDRESS_MAP_START( carhntds_io_map, AS_IO, 8, vicdual_state ) |
| 1167 | ADDRESS_MAP_GLOBAL_MASK(0x7f) |
1152 | 1168 | |
| 1169 | AM_RANGE(0x00, 0x00) AM_MIRROR(0x7c) AM_READ_PORT("IN0") |
| 1170 | AM_RANGE(0x01, 0x01) AM_MIRROR(0x7c) AM_READ_PORT("IN1") |
| 1171 | AM_RANGE(0x02, 0x02) AM_MIRROR(0x7c) AM_READ_PORT("IN2") |
| 1172 | AM_RANGE(0x03, 0x03) AM_MIRROR(0x7c) AM_READ_PORT("IN3") |
| 1173 | |
| 1174 | /* no decoder, just logic gates, so in theory the |
| 1175 | game can write to multiple locations at once */ |
| 1176 | AM_RANGE(0x00, 0x7f) AM_WRITE(carhntds_io_w) |
| 1177 | ADDRESS_MAP_END |
| 1178 | |
1153 | 1179 | static ADDRESS_MAP_START( sspacaho_io_map, AS_IO, 8, vicdual_state ) |
1154 | 1180 | ADDRESS_MAP_GLOBAL_MASK(0x7f) |
1155 | 1181 | |
r245466 | r245467 | |
1339 | 1365 | INPUT_PORTS_END |
1340 | 1366 | |
1341 | 1367 | |
| 1368 | static INPUT_PORTS_START( carhntds ) |
| 1369 | PORT_START("IN0") |
| 1370 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1371 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1372 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1373 | PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:5") // SW1 @ C1, 6-pos (is #6 unconnected?) |
| 1374 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1375 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1376 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY |
| 1377 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_4WAY PORT_NAME("P1 Up / Fire Left") // it's UP on Car Hunt but Fire Left on Deep Scan, what was it on the control panel?? |
| 1378 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1379 | |
| 1380 | PORT_START("IN1") |
| 1381 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1382 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1383 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1384 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL) |
| 1385 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| 1386 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY |
| 1387 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1388 | |
| 1389 | PORT_START("IN2") |
| 1390 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1391 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1392 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x101) |
| 1393 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_timer_value, NULL) |
| 1394 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 1395 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| 1396 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1397 | |
| 1398 | PORT_START("IN3") |
| 1399 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1400 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1401 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x102) |
| 1402 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_read_coin_status, NULL) |
| 1403 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Game Select") PORT_TOGGLE |
| 1404 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 1405 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1406 | |
| 1407 | PORT_COIN_DEFAULT |
| 1408 | |
| 1409 | PORT_START("FAKE_LIVES1") |
| 1410 | PORT_DIPNAME( 0x03, 0x01, "Car Hunt Lives" ) PORT_DIPLOCATION("SW1:1,2") |
| 1411 | PORT_DIPSETTING( 0x03, "1" ) |
| 1412 | PORT_DIPSETTING( 0x02, "2" ) |
| 1413 | PORT_DIPSETTING( 0x01, "3" ) |
| 1414 | PORT_DIPSETTING( 0x00, "4" ) |
| 1415 | |
| 1416 | PORT_START("FAKE_LIVES2") |
| 1417 | PORT_DIPNAME( 0x03, 0x03, "Deep Scan Lives" ) PORT_DIPLOCATION("SW1:3,4") |
| 1418 | PORT_DIPSETTING( 0x02, "1" ) |
| 1419 | PORT_DIPSETTING( 0x01, "2" ) |
| 1420 | PORT_DIPSETTING( 0x00, "3" ) |
| 1421 | PORT_DIPSETTING( 0x03, "4" ) |
| 1422 | INPUT_PORTS_END |
| 1423 | |
| 1424 | |
1342 | 1425 | static INPUT_PORTS_START( invds ) |
1343 | 1426 | PORT_START("IN0") |
1344 | 1427 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
r245466 | r245467 | |
1883 | 1966 | MACHINE_CONFIG_END |
1884 | 1967 | |
1885 | 1968 | |
| 1969 | |
1886 | 1970 | static MACHINE_CONFIG_DERIVED( invho2, vicdual_dualgame_root ) |
1887 | 1971 | |
1888 | 1972 | /* basic machine hardware */ |
r245466 | r245467 | |
1896 | 1980 | MACHINE_CONFIG_END |
1897 | 1981 | |
1898 | 1982 | |
| 1983 | |
1899 | 1984 | static MACHINE_CONFIG_DERIVED( invds, vicdual_dualgame_root ) |
1900 | 1985 | |
1901 | 1986 | /* basic machine hardware */ |
r245466 | r245467 | |
1907 | 1992 | MCFG_FRAGMENT_ADD(invinco_audio) |
1908 | 1993 | MACHINE_CONFIG_END |
1909 | 1994 | |
| 1995 | static MACHINE_CONFIG_DERIVED( carhntds, vicdual_dualgame_root ) |
| 1996 | /* basic machine hardware */ |
| 1997 | MCFG_CPU_MODIFY("maincpu") |
| 1998 | MCFG_CPU_PROGRAM_MAP(carhntds_dualgame_map) |
| 1999 | MCFG_CPU_IO_MAP(carhntds_io_map) |
| 2000 | MACHINE_CONFIG_END |
1910 | 2001 | |
| 2002 | |
1911 | 2003 | static MACHINE_CONFIG_DERIVED( sspacaho, vicdual_dualgame_root ) |
1912 | 2004 | |
1913 | 2005 | /* basic machine hardware */ |
r245466 | r245467 | |
2985 | 3077 | ROM_LOAD( "316-0206.u14", 0x0000, 0x0020, CRC(9617d796) SHA1(7cff2741866095ff42eadd8022bea349ec8d2f39) ) /* control PROM */ |
2986 | 3078 | ROM_END |
2987 | 3079 | |
| 3080 | ROM_START( carhntds ) |
| 3081 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 3082 | ROM_LOAD( "epr617.u33", 0x0000, 0x0400, CRC(0bbfdb4e) SHA1(383599276923264602a0b5efeac9697d9c15a20f) ) |
| 3083 | ROM_CONTINUE(0x4000, 0x400) |
| 3084 | ROM_LOAD( "epr618.u32", 0x0400, 0x0400, CRC(5a080b1d) SHA1(3c3d6b8b16d9a8976ee63435e949b67f025e38d8) ) |
| 3085 | ROM_LOAD( "epr619.u31", 0x0800, 0x0400, CRC(c6f2f399) SHA1(4bb34816042ec352b0bb71d2d654ebb6fb5083e9) ) |
| 3086 | ROM_LOAD( "epr620.u30", 0x0c00, 0x0400, CRC(d9deb88f) SHA1(a863f29cfed782c8871a2268aa28a67ccced1b45) ) |
| 3087 | ROM_LOAD( "epr621.u29", 0x1000, 0x0400, CRC(43e5de5c) SHA1(3adff5042be73f4693cee7977c88f425e930532d) ) |
| 3088 | ROM_LOAD( "epr622.u28", 0x1400, 0x0400, CRC(c881a3bc) SHA1(fbff24c4075103fd686cfb376b08cf0677522222) ) |
| 3089 | ROM_LOAD( "epr623.u27", 0x1800, 0x0400, CRC(297e7f42) SHA1(9e1042fe96f3bf55228b759b905467eff814ad84) ) |
| 3090 | ROM_LOAD( "epr624.u26", 0x1c00, 0x0400, CRC(dc943125) SHA1(39f18e29cc3d03ee1b98a969f739e22dfd76b6f7) ) |
| 3091 | ROM_LOAD( "epr625.u8", 0x2000, 0x0400, CRC(c86a0842) SHA1(5c59fe64985936b847a4c033a805153f627b1883) ) |
| 3092 | ROM_LOAD( "epr626.u7", 0x2400, 0x0400, CRC(9a48c939) SHA1(2c898810f6fd97d4a6edb97236aaa29d08f5598a) ) |
| 3093 | ROM_LOAD( "epr627.u6", 0x2800, 0x0400, CRC(b4b147e2) SHA1(8880f80708711b253f5da352679820500680ebab) ) |
| 3094 | ROM_LOAD( "epr628.u5", 0x2c00, 0x0400, CRC(aecf3c26) SHA1(2f4419c6ccf03042cf32a415160e41d52fd0ef9c) ) |
| 3095 | ROM_LOAD( "epr629.u4", 0x3000, 0x0400, CRC(c5be665b) SHA1(8bb145c140afa6166f08881b7e820335c3f83c08) ) |
| 3096 | ROM_LOAD( "epr630.u3", 0x3400, 0x0400, CRC(4312388b) SHA1(d0b53d505276754651d2aeda4b17f2d600f65166) ) |
| 3097 | ROM_LOAD( "epr631.u2", 0x3800, 0x0400, CRC(6766c7e5) SHA1(05b0ac31894c3c80d3940206aac2ef21a96ff849) ) |
| 3098 | ROM_LOAD( "epr632.u1", 0x3c00, 0x0400, CRC(ae68b7d5) SHA1(de449b62ba39331a4ecf3dfe81511b21b7c881d5) ) |
| 3099 | |
| 3100 | ROM_REGION( 0x0020, "proms", 0 ) |
| 3101 | ROM_LOAD( "316.0390.u49", 0x0000, 0x0020, CRC(a0811288) SHA1(a6e78c26f7eeb70125eee715eb6a3e3c82ed7fc8) ) /* color PROM */ |
| 3102 | ROM_END |
| 3103 | |
2988 | 3104 | ROM_START( tranqgun ) |
2989 | 3105 | ROM_REGION( 0x10000, "maincpu", 0 ) |
2990 | 3106 | ROM_LOAD( "u33.bin", 0x0000, 0x0400, CRC(6d50e902) SHA1(1d14c0b28cb3650bb57b9ef61265fe94c453d648) ) |
r245466 | r245467 | |
3517 | 3633 | GAME( 1980, samurai, 0, samurai, samurai, driver_device, 0, ROT270, "Sega", "Samurai", GAME_NO_SOUND ) |
3518 | 3634 | GAME( 1979, invinco, 0, invinco, invinco, driver_device, 0, ROT270, "Sega", "Invinco", GAME_IMPERFECT_SOUND ) |
3519 | 3635 | GAME( 1979, invds, 0, invds, invds, driver_device, 0, ROT270, "Sega", "Invinco / Deep Scan", GAME_IMPERFECT_SOUND ) |
| 3636 | GAME( 1979, carhntds, 0, carhntds, carhntds, driver_device, 0, ROT270, "Sega", "Car Hunt / Deep Scan (France)", GAME_NO_SOUND ) |
3520 | 3637 | GAME( 1980, tranqgun, 0, tranqgun, tranqgun, driver_device, 0, ROT270, "Sega", "Tranquilizer Gun", GAME_NO_SOUND ) |
3521 | 3638 | GAME( 1980, spacetrk, 0, spacetrk, spacetrk, driver_device, 0, ROT270, "Sega", "Space Trek (upright)", GAME_NO_SOUND ) |
3522 | 3639 | GAME( 1980, spacetrkc, spacetrk, spacetrk, spacetrkc, driver_device, 0, ROT270, "Sega", "Space Trek (cocktail)", GAME_NO_SOUND ) |