trunk/src/mame/drivers/vicdual.c
| r18104 | r18105 | |
| 43 | 43 | The timing is implemented according to the schematics, but |
| 44 | 44 | who knows... |
| 45 | 45 | * DIP switches need verifying in most of the games |
| 46 | | * DIP switch locations need to be added to all the games |
| 46 | * DIP switch locations need to be added to most of the games |
| 47 | 47 | |
| 48 | 48 | ****************************************************************************/ |
| 49 | 49 | |
| r18104 | r18105 | |
| 218 | 218 | /* video hardware */ |
| 219 | 219 | MCFG_SCREEN_ADD("screen", RASTER) |
| 220 | 220 | MCFG_SCREEN_RAW_PARAMS(VICDUAL_PIXEL_CLOCK, VICDUAL_HTOTAL, VICDUAL_HBEND, VICDUAL_HBSTART, VICDUAL_VTOTAL, VICDUAL_VBEND, VICDUAL_VBSTART) |
| 221 | | |
| 222 | 221 | MACHINE_CONFIG_END |
| 223 | 222 | |
| 224 | 223 | |
| r18104 | r18105 | |
| 300 | 299 | /* audio hardware */ |
| 301 | 300 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 302 | 301 | MCFG_FRAGMENT_ADD(depthch_audio) |
| 303 | | |
| 304 | 302 | MACHINE_CONFIG_END |
| 305 | 303 | |
| 306 | 304 | |
| r18104 | r18105 | |
| 384 | 382 | /* video hardware */ |
| 385 | 383 | MCFG_SCREEN_MODIFY("screen") |
| 386 | 384 | MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw) |
| 387 | | |
| 388 | 385 | MACHINE_CONFIG_END |
| 389 | 386 | |
| 390 | 387 | |
| r18104 | r18105 | |
| 491 | 488 | /* audio hardware */ |
| 492 | 489 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 493 | 490 | MCFG_FRAGMENT_ADD(frogs_audio) |
| 494 | | |
| 495 | 491 | MACHINE_CONFIG_END |
| 496 | 492 | |
| 497 | 493 | |
| r18104 | r18105 | |
| 679 | 675 | /* audio hardware */ |
| 680 | 676 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 681 | 677 | MCFG_FRAGMENT_ADD(headon_audio) |
| 682 | | |
| 683 | 678 | MACHINE_CONFIG_END |
| 684 | 679 | |
| 685 | 680 | static MACHINE_CONFIG_DERIVED( headons, headon ) |
| r18104 | r18105 | |
| 690 | 685 | MACHINE_CONFIG_END |
| 691 | 686 | |
| 692 | 687 | |
| 693 | | |
| 694 | 688 | static MACHINE_CONFIG_DERIVED( sspaceat, vicdual_root ) |
| 695 | 689 | |
| 696 | 690 | /* basic machine hardware */ |
| r18104 | r18105 | |
| 701 | 695 | /* video hardware */ |
| 702 | 696 | MCFG_SCREEN_MODIFY("screen") |
| 703 | 697 | MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_bw_or_color) |
| 704 | | |
| 705 | 698 | MACHINE_CONFIG_END |
| 706 | 699 | |
| 707 | 700 | |
| r18104 | r18105 | |
| 899 | 892 | /* audio hardware */ |
| 900 | 893 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 901 | 894 | MCFG_FRAGMENT_ADD(headon_audio) |
| 902 | | |
| 903 | 895 | MACHINE_CONFIG_END |
| 904 | 896 | |
| 905 | 897 | static MACHINE_CONFIG_DERIVED( headon2bw, headon2 ) |
| r18104 | r18105 | |
| 921 | 913 | /* video hardware */ |
| 922 | 914 | MCFG_SCREEN_MODIFY("screen") |
| 923 | 915 | MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color) |
| 924 | | |
| 925 | 916 | MACHINE_CONFIG_END |
| 926 | 917 | |
| 927 | 918 | |
| r18104 | r18105 | |
| 1182 | 1173 | ADDRESS_MAP_END |
| 1183 | 1174 | |
| 1184 | 1175 | |
| 1176 | /* several of the games' lives DIPs are spread across two input ports */ |
| 1177 | CUSTOM_INPUT_MEMBER(vicdual_state::vicdual_fake_lives_r) |
| 1178 | { |
| 1179 | static const char *const portnames[] = { "FAKE_LIVES1", "FAKE_LIVES2" }; |
| 1180 | |
| 1181 | /* use the low byte for the bitmask */ |
| 1182 | UINT8 bit_mask = ((FPTR)param) & 0xff; |
| 1183 | |
| 1184 | /* and use d8 for the port */ |
| 1185 | int port = ((FPTR)param) >> 8 & 1; |
| 1186 | return (ioport(portnames[port])->read_safe(0) & bit_mask) ? 0 : 1; |
| 1187 | } |
| 1188 | |
| 1189 | |
| 1185 | 1190 | static INPUT_PORTS_START( invho2 ) |
| 1186 | 1191 | PORT_START("IN0") |
| 1187 | 1192 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1188 | 1193 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1189 | | PORT_DIPNAME( 0x04, 0x04, "Head On Lives (1/2)" ) |
| 1190 | | PORT_DIPSETTING( 0x04, "+0" ) |
| 1191 | | PORT_DIPSETTING( 0x00, "+1" ) |
| 1194 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1192 | 1195 | PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) ) |
| 1193 | 1196 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1194 | 1197 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r18104 | r18105 | |
| 1199 | 1202 | PORT_START("IN1") |
| 1200 | 1203 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1201 | 1204 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1202 | | PORT_DIPNAME( 0x04, 0x00, "Head On Lives (2/2)" ) |
| 1203 | | PORT_DIPSETTING( 0x04, "+0" ) |
| 1204 | | PORT_DIPSETTING( 0x00, "+1" ) |
| 1205 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1205 | 1206 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL) |
| 1206 | 1207 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| 1207 | 1208 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY |
| r18104 | r18105 | |
| 1210 | 1211 | PORT_START("IN2") |
| 1211 | 1212 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1212 | 1213 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1213 | | PORT_DIPNAME( 0x04, 0x00, "Invinco Lives" ) |
| 1214 | | PORT_DIPSETTING( 0x00, "5" ) |
| 1215 | | PORT_DIPSETTING( 0x04, "6" ) |
| 1214 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x101) |
| 1216 | 1215 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_timer_value, NULL) |
| 1217 | 1216 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 1218 | 1217 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| 1219 | | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) /* probably unused */ |
| 1218 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1220 | 1219 | |
| 1221 | 1220 | PORT_START("IN3") |
| 1222 | 1221 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1223 | 1222 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1224 | | /* There's probably a bug in the code: this would likely be the second */ |
| 1225 | | /* bit of the Invinco Lives setting, but the game reads bit 3 instead */ |
| 1226 | | /* of bit 2. */ |
| 1227 | | PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) ) |
| 1228 | | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1229 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1223 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x102) |
| 1230 | 1224 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_read_coin_status, NULL) |
| 1231 | 1225 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Game Select") PORT_TOGGLE |
| 1232 | 1226 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 1233 | 1227 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1234 | 1228 | |
| 1235 | 1229 | PORT_COIN |
| 1230 | |
| 1231 | PORT_START("FAKE_LIVES1") |
| 1232 | PORT_DIPNAME( 0x03, 0x01, "Head On 2 Lives" ) PORT_DIPLOCATION("SW1:1,2") |
| 1233 | PORT_DIPSETTING( 0x00, "2" ) |
| 1234 | PORT_DIPSETTING( 0x01, "3" ) |
| 1235 | // PORT_DIPSETTING( 0x02, "3" ) // dupe |
| 1236 | PORT_DIPSETTING( 0x03, "4" ) |
| 1237 | |
| 1238 | /* There's probably a bug in the Invinco game code: |
| 1239 | it does support lives set to 5 or 6, but the game |
| 1240 | reads IN3 bit 3 instead of bit 2. |
| 1241 | Note that the manual only lists setting it to 3 or 4. |
| 1242 | */ |
| 1243 | PORT_START("FAKE_LIVES2") |
| 1244 | PORT_DIPNAME( 0x03, 0x03, "Invinco Lives" ) PORT_DIPLOCATION("SW1:3,4") |
| 1245 | PORT_DIPSETTING( 0x03, "3" ) |
| 1246 | PORT_DIPSETTING( 0x02, "4" ) |
| 1247 | // PORT_DIPSETTING( 0x01, "5" ) // results in 3, see above |
| 1248 | // PORT_DIPSETTING( 0x00, "6" ) // results in 4, see above |
| 1249 | |
| 1236 | 1250 | INPUT_PORTS_END |
| 1237 | 1251 | |
| 1238 | 1252 | |
| r18104 | r18105 | |
| 1240 | 1254 | PORT_START("IN0") |
| 1241 | 1255 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1242 | 1256 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1243 | | PORT_DIPNAME( 0x04, 0x00, "Invinco Lives (1/2)" ) |
| 1244 | | PORT_DIPSETTING( 0x00, "+0" ) |
| 1245 | | PORT_DIPSETTING( 0x04, "+1" ) |
| 1257 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1246 | 1258 | PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) ) |
| 1247 | 1259 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1248 | 1260 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r18104 | r18105 | |
| 1253 | 1265 | PORT_START("IN1") |
| 1254 | 1266 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1255 | 1267 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1256 | | PORT_DIPNAME( 0x04, 0x00, "Invinco Lives (2/2)" ) |
| 1257 | | PORT_DIPSETTING( 0x00, "+0" ) |
| 1258 | | PORT_DIPSETTING( 0x04, "+2" ) |
| 1268 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1259 | 1269 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL) |
| 1260 | 1270 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY |
| 1261 | 1271 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY |
| r18104 | r18105 | |
| 1264 | 1274 | PORT_START("IN2") |
| 1265 | 1275 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1266 | 1276 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1267 | | PORT_DIPNAME( 0x04, 0x00, "Deep Scan Lives (1/2)" ) |
| 1268 | | PORT_DIPSETTING( 0x00, "+0" ) |
| 1269 | | PORT_DIPSETTING( 0x04, "+1" ) |
| 1277 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x101) |
| 1270 | 1278 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_timer_value, NULL) |
| 1271 | 1279 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 1272 | 1280 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) |
| r18104 | r18105 | |
| 1275 | 1283 | PORT_START("IN3") |
| 1276 | 1284 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1277 | 1285 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1278 | | /* +1 and +2 gives 2 lives instead of 6 */ |
| 1279 | | PORT_DIPNAME( 0x04, 0x00, "Deep Scan Lives (2/2)" ) |
| 1280 | | PORT_DIPSETTING( 0x04, "+0" ) |
| 1281 | | PORT_DIPSETTING( 0x00, "+2" ) |
| 1286 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x102) |
| 1282 | 1287 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_read_coin_status, NULL) |
| 1283 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Game Select") PORT_TOGGLE |
| 1288 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Game Select") PORT_TOGGLE |
| 1284 | 1289 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) |
| 1285 | 1290 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1286 | 1291 | |
| 1287 | 1292 | PORT_COIN |
| 1293 | |
| 1294 | PORT_START("FAKE_LIVES1") |
| 1295 | PORT_DIPNAME( 0x03, 0x03, "Invinco Lives" ) PORT_DIPLOCATION("SW1:1,2") |
| 1296 | PORT_DIPSETTING( 0x03, "3" ) |
| 1297 | PORT_DIPSETTING( 0x02, "4" ) |
| 1298 | PORT_DIPSETTING( 0x01, "5" ) |
| 1299 | PORT_DIPSETTING( 0x00, "6" ) |
| 1300 | |
| 1301 | PORT_START("FAKE_LIVES2") |
| 1302 | PORT_DIPNAME( 0x03, 0x01, "Deep Scan Lives" ) PORT_DIPLOCATION("SW1:3,4") |
| 1303 | PORT_DIPSETTING( 0x02, "2" ) |
| 1304 | PORT_DIPSETTING( 0x01, "3" ) |
| 1305 | PORT_DIPSETTING( 0x00, "4" ) |
| 1306 | PORT_DIPSETTING( 0x03, "5" ) |
| 1288 | 1307 | INPUT_PORTS_END |
| 1289 | 1308 | |
| 1290 | 1309 | |
| r18104 | r18105 | |
| 1292 | 1311 | PORT_START("IN0") |
| 1293 | 1312 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL |
| 1294 | 1313 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL |
| 1295 | | PORT_DIPNAME( 0x04, 0x04, "S.A. Lives (1/2)" ) |
| 1296 | | PORT_DIPSETTING( 0x00, "+0" ) |
| 1297 | | PORT_DIPSETTING( 0x04, "+1" ) |
| 1298 | | PORT_DIPNAME( 0x08, 0x00, "H.O. Lives" ) |
| 1314 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1315 | PORT_DIPNAME( 0x08, 0x00, "Head On Lives" ) |
| 1299 | 1316 | PORT_DIPSETTING( 0x00, "3" ) |
| 1300 | 1317 | PORT_DIPSETTING( 0x08, "4" ) |
| 1301 | 1318 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY |
| r18104 | r18105 | |
| 1305 | 1322 | PORT_START("IN1") |
| 1306 | 1323 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL |
| 1307 | 1324 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1308 | | PORT_DIPNAME( 0x04, 0x00, "S.A. Lives (2/2)" ) |
| 1309 | | PORT_DIPSETTING( 0x00, "+0" ) |
| 1310 | | PORT_DIPSETTING( 0x04, "+2" ) |
| 1325 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1311 | 1326 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL) |
| 1312 | 1327 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| 1313 | 1328 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY |
| r18104 | r18105 | |
| 1316 | 1331 | PORT_START("IN2") |
| 1317 | 1332 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL |
| 1318 | 1333 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1319 | | PORT_DIPNAME( 0x04, 0x00, "S.A. Bonus Life" ) |
| 1334 | PORT_DIPNAME( 0x04, 0x00, "Space Attack Bonus Life" ) |
| 1320 | 1335 | PORT_DIPSETTING( 0x00, "10000" ) |
| 1321 | 1336 | PORT_DIPSETTING( 0x04, "15000" ) |
| 1322 | 1337 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_timer_value, NULL) |
| r18104 | r18105 | |
| 1327 | 1342 | PORT_START("IN3") |
| 1328 | 1343 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL |
| 1329 | 1344 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1330 | | PORT_DIPNAME( 0x04, 0x00, "S.A. Bonus Life For Final UFO" ) |
| 1345 | PORT_DIPNAME( 0x04, 0x00, "Space Attack Final UFO Bonus" ) |
| 1331 | 1346 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1332 | 1347 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1333 | 1348 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_read_coin_status, NULL) |
| r18104 | r18105 | |
| 1336 | 1351 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1337 | 1352 | |
| 1338 | 1353 | PORT_COIN |
| 1354 | |
| 1355 | PORT_START("FAKE_LIVES1") |
| 1356 | PORT_DIPNAME( 0x03, 0x03, "Space Attack Lives" ) |
| 1357 | PORT_DIPSETTING( 0x03, "3" ) |
| 1358 | PORT_DIPSETTING( 0x02, "4" ) |
| 1359 | PORT_DIPSETTING( 0x01, "5" ) |
| 1360 | PORT_DIPSETTING( 0x00, "6" ) |
| 1339 | 1361 | INPUT_PORTS_END |
| 1340 | 1362 | |
| 1341 | 1363 | |
| r18104 | r18105 | |
| 1407 | 1429 | PORT_START("IN1") |
| 1408 | 1430 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1409 | 1431 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1410 | | PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) /* unknown, but used */ |
| 1432 | PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) /* unknown, but used */ |
| 1411 | 1433 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 1412 | 1434 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 1413 | 1435 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL) |
| r18104 | r18105 | |
| 1624 | 1646 | PORT_COIN |
| 1625 | 1647 | INPUT_PORTS_END |
| 1626 | 1648 | |
| 1627 | | /* brdrline lives DIPs are spread across two input ports */ |
| 1628 | | CUSTOM_INPUT_MEMBER(vicdual_state::brdrline_lives) |
| 1629 | | { |
| 1630 | | int bit_mask = (FPTR)param; |
| 1631 | | return (ioport("FAKE_LIVES")->read() & bit_mask) ? 0x00 : 0x01; |
| 1632 | | } |
| 1633 | 1649 | |
| 1634 | 1650 | static INPUT_PORTS_START( brdrline ) |
| 1635 | 1651 | PORT_START("IN0") |
| r18104 | r18105 | |
| 1653 | 1669 | PORT_START("IN1") |
| 1654 | 1670 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL |
| 1655 | 1671 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1656 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,brdrline_lives, (void *)0x01) |
| 1672 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1657 | 1673 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_vblank_comp, NULL) |
| 1658 | 1674 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| 1659 | 1675 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY |
| r18104 | r18105 | |
| 1662 | 1678 | PORT_START("IN2") |
| 1663 | 1679 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL |
| 1664 | 1680 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1665 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,brdrline_lives, (void *)0x02) |
| 1681 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1666 | 1682 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_64v, NULL) /* yes, this is different */ |
| 1667 | 1683 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 1668 | 1684 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| r18104 | r18105 | |
| 1681 | 1697 | |
| 1682 | 1698 | PORT_COIN |
| 1683 | 1699 | |
| 1684 | | PORT_START("FAKE_LIVES") |
| 1700 | PORT_START("FAKE_LIVES1") |
| 1685 | 1701 | PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) |
| 1702 | PORT_DIPSETTING( 0x00, "3" ) |
| 1703 | PORT_DIPSETTING( 0x01, "4" ) |
| 1686 | 1704 | PORT_DIPSETTING( 0x02, "5" ) |
| 1687 | | PORT_DIPSETTING( 0x01, "4" ) |
| 1688 | | PORT_DIPSETTING( 0x00, "3" ) |
| 1705 | // PORT_DIPSETTING( 0x03, "5" ) // dupe |
| 1689 | 1706 | INPUT_PORTS_END |
| 1690 | 1707 | |
| 1708 | |
| 1691 | 1709 | static INPUT_PORTS_START( starrkr ) |
| 1692 | 1710 | PORT_START("IN0") |
| 1693 | 1711 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL |
| r18104 | r18105 | |
| 1710 | 1728 | PORT_START("IN1") |
| 1711 | 1729 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL |
| 1712 | 1730 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1713 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,brdrline_lives, (void *)0x01) |
| 1731 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1714 | 1732 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_vblank_comp, NULL) |
| 1715 | 1733 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY |
| 1716 | 1734 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY |
| r18104 | r18105 | |
| 1719 | 1737 | PORT_START("IN2") |
| 1720 | 1738 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL |
| 1721 | 1739 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1722 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,brdrline_lives, (void *)0x02) |
| 1740 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1723 | 1741 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_64v, NULL) /* yes, this is different */ |
| 1724 | 1742 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) |
| 1725 | 1743 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) |
| r18104 | r18105 | |
| 1738 | 1756 | |
| 1739 | 1757 | PORT_COIN |
| 1740 | 1758 | |
| 1741 | | PORT_START("FAKE_LIVES") |
| 1759 | PORT_START("FAKE_LIVES1") |
| 1742 | 1760 | PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) |
| 1761 | PORT_DIPSETTING( 0x00, "3" ) |
| 1762 | PORT_DIPSETTING( 0x01, "4" ) |
| 1743 | 1763 | PORT_DIPSETTING( 0x02, "5" ) |
| 1744 | | PORT_DIPSETTING( 0x01, "4" ) |
| 1745 | | PORT_DIPSETTING( 0x00, "3" ) |
| 1764 | // PORT_DIPSETTING( 0x03, "5" ) // dupe |
| 1746 | 1765 | INPUT_PORTS_END |
| 1747 | 1766 | |
| 1767 | |
| 1748 | 1768 | static INPUT_PORTS_START( pulsar ) |
| 1749 | 1769 | PORT_START("IN0") |
| 1750 | 1770 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1751 | 1771 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1752 | | PORT_DIPNAME( 0x04, 0x04, "Lives (1/2)" ) |
| 1753 | | PORT_DIPSETTING( 0x04, "+0" ) |
| 1754 | | PORT_DIPSETTING( 0x00, "+2" ) |
| 1772 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1755 | 1773 | PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) ) |
| 1756 | 1774 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 1757 | 1775 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r18104 | r18105 | |
| 1762 | 1780 | PORT_START("IN1") |
| 1763 | 1781 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1764 | 1782 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1765 | | PORT_DIPNAME( 0x04, 0x04, "Lives (2/2)" ) |
| 1766 | | PORT_DIPSETTING( 0x04, "+0" ) |
| 1767 | | PORT_DIPSETTING( 0x00, "+1" ) |
| 1783 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1768 | 1784 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL) |
| 1769 | 1785 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| 1770 | 1786 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY |
| r18104 | r18105 | |
| 1793 | 1809 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 1794 | 1810 | |
| 1795 | 1811 | PORT_COIN |
| 1812 | |
| 1813 | PORT_START("FAKE_LIVES1") |
| 1814 | PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) |
| 1815 | PORT_DIPSETTING( 0x00, "2" ) |
| 1816 | PORT_DIPSETTING( 0x02, "3" ) |
| 1817 | PORT_DIPSETTING( 0x01, "4" ) |
| 1818 | PORT_DIPSETTING( 0x03, "5" ) |
| 1796 | 1819 | INPUT_PORTS_END |
| 1797 | 1820 | |
| 1798 | 1821 | |
| r18104 | r18105 | |
| 1851 | 1874 | PORT_START("IN0") |
| 1852 | 1875 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL |
| 1853 | 1876 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL |
| 1854 | | PORT_DIPNAME( 0x04, 0x00, "Alpha Fighter Lives (1/2)" ) |
| 1855 | | PORT_DIPSETTING( 0x00, "+0" ) |
| 1856 | | PORT_DIPSETTING( 0x04, "+1" ) |
| 1877 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x001) |
| 1857 | 1878 | PORT_DIPNAME( 0x08, 0x00, "Head On Lives" ) |
| 1858 | 1879 | PORT_DIPSETTING( 0x00, "3" ) |
| 1859 | 1880 | PORT_DIPSETTING( 0x08, "4" ) |
| r18104 | r18105 | |
| 1864 | 1885 | PORT_START("IN1") |
| 1865 | 1886 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL |
| 1866 | 1887 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1867 | | PORT_DIPNAME( 0x04, 0x00, "Alpha Fighter Lives (2/2)" ) |
| 1868 | | PORT_DIPSETTING( 0x00, "+0" ) |
| 1869 | | PORT_DIPSETTING( 0x04, "+2" ) |
| 1888 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_fake_lives_r, (void *)0x002) |
| 1870 | 1889 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, vicdual_state,vicdual_get_composite_blank_comp, NULL) |
| 1871 | 1890 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY |
| 1872 | 1891 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY |
| r18104 | r18105 | |
| 1893 | 1912 | PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ |
| 1894 | 1913 | |
| 1895 | 1914 | PORT_COIN |
| 1915 | |
| 1916 | PORT_START("FAKE_LIVES1") |
| 1917 | PORT_DIPNAME( 0x03, 0x03, "Alpha Fighter Lives" ) |
| 1918 | PORT_DIPSETTING( 0x03, "3" ) |
| 1919 | PORT_DIPSETTING( 0x02, "4" ) |
| 1920 | PORT_DIPSETTING( 0x01, "5" ) |
| 1921 | PORT_DIPSETTING( 0x00, "6" ) |
| 1896 | 1922 | INPUT_PORTS_END |
| 1897 | 1923 | |
| 1898 | 1924 | |
| r18104 | r18105 | |
| 1905 | 1931 | /* video hardware */ |
| 1906 | 1932 | MCFG_SCREEN_MODIFY("screen") |
| 1907 | 1933 | MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color) |
| 1908 | | |
| 1909 | 1934 | MACHINE_CONFIG_END |
| 1910 | 1935 | |
| 1911 | 1936 | |
| r18104 | r18105 | |
| 1919 | 1944 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1920 | 1945 | MCFG_FRAGMENT_ADD(invinco_audio) |
| 1921 | 1946 | MCFG_FRAGMENT_ADD(headon_audio) |
| 1922 | | |
| 1923 | 1947 | MACHINE_CONFIG_END |
| 1924 | 1948 | |
| 1925 | 1949 | |
| r18104 | r18105 | |
| 1932 | 1956 | /* audio hardware */ |
| 1933 | 1957 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1934 | 1958 | MCFG_FRAGMENT_ADD(invinco_audio) |
| 1935 | | |
| 1936 | 1959 | MACHINE_CONFIG_END |
| 1937 | 1960 | |
| 1938 | 1961 | |
| r18104 | r18105 | |
| 1953 | 1976 | /* basic machine hardware */ |
| 1954 | 1977 | MCFG_CPU_MODIFY("maincpu") |
| 1955 | 1978 | MCFG_CPU_IO_MAP(spacetrk_io_map) |
| 1956 | | |
| 1957 | 1979 | MACHINE_CONFIG_END |
| 1958 | 1980 | |
| 1959 | 1981 | |
| r18104 | r18105 | |
| 1966 | 1988 | /* audio hardware */ |
| 1967 | 1989 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1968 | 1990 | MCFG_FRAGMENT_ADD(carnival_audio) |
| 1969 | | |
| 1970 | 1991 | MACHINE_CONFIG_END |
| 1971 | 1992 | |
| 1972 | 1993 | static MACHINE_CONFIG_DERIVED( carnivalh, vicdual_dualgame_root ) |
| r18104 | r18105 | |
| 1978 | 1999 | /* audio hardware */ |
| 1979 | 2000 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1980 | 2001 | MCFG_FRAGMENT_ADD(carnival_audio) |
| 1981 | | |
| 1982 | 2002 | MACHINE_CONFIG_END |
| 1983 | 2003 | |
| 1984 | 2004 | |
| r18104 | r18105 | |
| 1988 | 2008 | /* basic machine hardware */ |
| 1989 | 2009 | MCFG_CPU_MODIFY("maincpu") |
| 1990 | 2010 | MCFG_CPU_IO_MAP(tranqgun_io_map) |
| 1991 | | |
| 1992 | 2011 | MACHINE_CONFIG_END |
| 1993 | 2012 | |
| 1994 | 2013 | |
| r18104 | r18105 | |
| 1997 | 2016 | /* basic machine hardware */ |
| 1998 | 2017 | MCFG_CPU_MODIFY("maincpu") |
| 1999 | 2018 | MCFG_CPU_IO_MAP(brdrline_io_map) |
| 2000 | | |
| 2001 | 2019 | MACHINE_CONFIG_END |
| 2002 | 2020 | |
| 2003 | 2021 | |
| r18104 | r18105 | |
| 2010 | 2028 | /* audio hardware */ |
| 2011 | 2029 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 2012 | 2030 | MCFG_FRAGMENT_ADD(pulsar_audio) |
| 2013 | | |
| 2014 | 2031 | MACHINE_CONFIG_END |
| 2015 | 2032 | |
| 2016 | 2033 | |
| r18104 | r18105 | |
| 2019 | 2036 | /* basic machine hardware */ |
| 2020 | 2037 | MCFG_CPU_MODIFY("maincpu") |
| 2021 | 2038 | MCFG_CPU_IO_MAP(heiankyo_io_map) |
| 2022 | | |
| 2023 | 2039 | MACHINE_CONFIG_END |
| 2024 | 2040 | |
| 2025 | 2041 | |
| r18104 | r18105 | |
| 2028 | 2044 | /* basic machine hardware */ |
| 2029 | 2045 | MCFG_CPU_MODIFY("maincpu") |
| 2030 | 2046 | MCFG_CPU_IO_MAP(alphaho_io_map) |
| 2031 | | |
| 2032 | 2047 | MACHINE_CONFIG_END |
| 2033 | 2048 | |
| 2034 | 2049 | |
| r18104 | r18105 | |
| 2152 | 2167 | /* video hardware */ |
| 2153 | 2168 | MCFG_SCREEN_MODIFY("screen") |
| 2154 | 2169 | MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color) |
| 2155 | | |
| 2156 | 2170 | MACHINE_CONFIG_END |
| 2157 | 2171 | |
| 2158 | 2172 | |
| r18104 | r18105 | |
| 2247 | 2261 | /* video hardware */ |
| 2248 | 2262 | MCFG_SCREEN_MODIFY("screen") |
| 2249 | 2263 | MCFG_SCREEN_UPDATE_DRIVER(vicdual_state, screen_update_vicdual_color) |
| 2250 | | |
| 2251 | 2264 | MACHINE_CONFIG_END |
| 2252 | 2265 | |
| 2253 | 2266 | |
| r18104 | r18105 | |
| 2350 | 2363 | /* audio hardware */ |
| 2351 | 2364 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 2352 | 2365 | MCFG_FRAGMENT_ADD(invinco_audio) |
| 2353 | | |
| 2354 | 2366 | MACHINE_CONFIG_END |
| 2355 | 2367 | |
| 2356 | 2368 | |