mirror of
https://github.com/holub/mame
synced 2025-04-28 19:14:55 +03:00
Added validity check to ensure that AM_READ_PORT() macros reference
valid ports. Fixed several cases where the check failed.
This commit is contained in:
parent
e58907ac1a
commit
6c21097922
@ -94,7 +94,6 @@ static quark_table *source_table;
|
||||
static quark_table *name_table;
|
||||
static quark_table *description_table;
|
||||
static quark_table *roms_table;
|
||||
static quark_table *inputs_table;
|
||||
static quark_table *defstr_table;
|
||||
|
||||
|
||||
@ -199,7 +198,6 @@ static void quark_tables_create(void)
|
||||
name_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE);
|
||||
description_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE);
|
||||
roms_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE);
|
||||
inputs_table = quark_table_alloc(drivnum, QUARK_HASH_SIZE);
|
||||
|
||||
/* build the quarks and the hash tables */
|
||||
for (drivnum = 0; drivers[drivnum]; drivnum++)
|
||||
@ -643,7 +641,7 @@ static int validate_roms(int drivnum, const machine_config *config, region_info
|
||||
validate_cpu - validate CPUs and memory maps
|
||||
-------------------------------------------------*/
|
||||
|
||||
static int validate_cpu(int drivnum, const machine_config *config, region_info *rgninfo)
|
||||
static int validate_cpu(int drivnum, const machine_config *config, const input_port_config *portlist, region_info *rgninfo)
|
||||
{
|
||||
const game_driver *driver = drivers[drivnum];
|
||||
cpu_validity_check_func cpu_validity_check;
|
||||
@ -814,6 +812,13 @@ static int validate_cpu(int drivnum, const machine_config *config, region_info *
|
||||
mame_printf_error("%s: %s CPU %d space %d memory map entry references nonexistant device type %s, tag %s\n", driver->source_file, driver->name, cpunum, spacenum, devtype_name(entry->write_devtype), entry->write_devtag);
|
||||
error = TRUE;
|
||||
}
|
||||
|
||||
/* make sure ports exist */
|
||||
if (entry->read_porttag != NULL && input_port_by_tag(portlist, entry->read_porttag) == NULL)
|
||||
{
|
||||
mame_printf_error("%s: %s CPU %d space %d memory map entry references nonexistant port tag %s\n", driver->source_file, driver->name, cpunum, spacenum, entry->read_porttag);
|
||||
error = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* release the address map */
|
||||
@ -1286,34 +1291,22 @@ static void validate_dip_settings(const input_field_config *field, const game_dr
|
||||
validate_inputs - validate input configuration
|
||||
-------------------------------------------------*/
|
||||
|
||||
static int validate_inputs(int drivnum, const machine_config *config)
|
||||
static int validate_inputs(int drivnum, const machine_config *config, const input_port_config **portlistptr)
|
||||
{
|
||||
const input_port_config *portlist;
|
||||
const input_port_config *scanport;
|
||||
const input_port_config *port;
|
||||
const input_field_config *field;
|
||||
const game_driver *driver = drivers[drivnum];
|
||||
int empty_string_found = FALSE;
|
||||
char errorbuf[1024];
|
||||
quark_entry *entry;
|
||||
int error = FALSE;
|
||||
UINT32 crc;
|
||||
|
||||
/* skip if no ports */
|
||||
if (driver->ipt == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* skip if we already validated these ports */
|
||||
crc = (FPTR)driver->ipt;
|
||||
for (entry = quark_table_get_first(inputs_table, crc); entry != NULL; entry = entry->next)
|
||||
if (entry->crc == crc && driver->ipt == drivers[entry - inputs_table->entry]->ipt)
|
||||
return FALSE;
|
||||
|
||||
/* otherwise, add ourself to the list */
|
||||
quark_add(inputs_table, drivnum, crc);
|
||||
|
||||
/* allocate the input ports */
|
||||
portlist = input_port_config_alloc(driver->ipt, errorbuf, sizeof(errorbuf));
|
||||
*portlistptr = input_port_config_alloc(driver->ipt, errorbuf, sizeof(errorbuf));
|
||||
if (errorbuf[0] != 0)
|
||||
{
|
||||
mame_printf_error("%s: %s has input port errors:\n%s\n", driver->source_file, driver->name, errorbuf);
|
||||
@ -1321,7 +1314,7 @@ static int validate_inputs(int drivnum, const machine_config *config)
|
||||
}
|
||||
|
||||
/* check for duplicate tags */
|
||||
for (port = portlist; port != NULL; port = port->next)
|
||||
for (port = *portlistptr; port != NULL; port = port->next)
|
||||
if (port->tag != NULL)
|
||||
for (scanport = port->next; scanport != NULL; scanport = scanport->next)
|
||||
if (scanport->tag != NULL && strcmp(port->tag, scanport->tag) == 0)
|
||||
@ -1331,7 +1324,7 @@ static int validate_inputs(int drivnum, const machine_config *config)
|
||||
}
|
||||
|
||||
/* iterate over the results */
|
||||
for (port = portlist; port != NULL; port = port->next)
|
||||
for (port = *portlistptr; port != NULL; port = port->next)
|
||||
for (field = port->fieldlist; field != NULL; field = field->next)
|
||||
{
|
||||
int strindex = 0;
|
||||
@ -1391,12 +1384,11 @@ static int validate_inputs(int drivnum, const machine_config *config)
|
||||
}
|
||||
|
||||
#ifdef MESS
|
||||
if (mess_validate_input_ports(drivnum, config, portlist))
|
||||
if (mess_validate_input_ports(drivnum, config, *portlistptr))
|
||||
error = TRUE;
|
||||
#endif /* MESS */
|
||||
|
||||
/* free the config */
|
||||
input_port_config_free(portlist);
|
||||
return error;
|
||||
}
|
||||
|
||||
@ -1575,6 +1567,7 @@ int mame_validitychecks(const game_driver *curdriver)
|
||||
for (drivnum = 0; drivers[drivnum]; drivnum++)
|
||||
{
|
||||
const game_driver *driver = drivers[drivnum];
|
||||
const input_port_config *portlist = NULL;
|
||||
machine_config *config;
|
||||
region_info rgninfo;
|
||||
|
||||
@ -1600,9 +1593,14 @@ int mame_validitychecks(const game_driver *curdriver)
|
||||
error = validate_roms(drivnum, config, &rgninfo) || error;
|
||||
rom_checks += osd_profiling_ticks();
|
||||
|
||||
/* validate input ports */
|
||||
input_checks -= osd_profiling_ticks();
|
||||
error = validate_inputs(drivnum, config, &portlist) || error;
|
||||
input_checks += osd_profiling_ticks();
|
||||
|
||||
/* validate the CPU information */
|
||||
cpu_checks -= osd_profiling_ticks();
|
||||
error = validate_cpu(drivnum, config, &rgninfo) || error;
|
||||
error = validate_cpu(drivnum, config, portlist, &rgninfo) || error;
|
||||
cpu_checks += osd_profiling_ticks();
|
||||
|
||||
/* validate the display */
|
||||
@ -1615,11 +1613,6 @@ int mame_validitychecks(const game_driver *curdriver)
|
||||
error = validate_gfx(drivnum, config, &rgninfo) || error;
|
||||
gfx_checks += osd_profiling_ticks();
|
||||
|
||||
/* validate input ports */
|
||||
input_checks -= osd_profiling_ticks();
|
||||
error = validate_inputs(drivnum, config) || error;
|
||||
input_checks += osd_profiling_ticks();
|
||||
|
||||
/* validate sounds and speakers */
|
||||
sound_checks -= osd_profiling_ticks();
|
||||
error = validate_sound(drivnum, config) || error;
|
||||
@ -1630,6 +1623,8 @@ int mame_validitychecks(const game_driver *curdriver)
|
||||
error = validate_devices(drivnum, config) || error;
|
||||
device_checks += osd_profiling_ticks();
|
||||
|
||||
if (portlist != NULL)
|
||||
input_port_config_free(portlist);
|
||||
machine_config_free(config);
|
||||
}
|
||||
|
||||
|
@ -120,6 +120,9 @@ static INPUT_PORTS_START( sicv )
|
||||
PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(invaders_in1_control_r, NULL)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN2") /* referenced by invaders_io_map, used in several drivers; this is fairly hacky */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("DSW0")
|
||||
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
@ -479,6 +482,9 @@ static INPUT_PORTS_START( spclaser )
|
||||
//PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2) /* This is not 2 Player ??? */
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN2") /* referenced by invaders_io_map, used in several drivers; this is fairly hacky */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_MODIFY("DSW0")
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x00, "SW1:1" )
|
||||
PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "SW1:2" )
|
||||
|
@ -208,7 +208,7 @@ ADDRESS_MAP_END
|
||||
PORT_DIPSETTING( 0x0020, DEF_STR( Normal ) ) \
|
||||
PORT_DIPSETTING( 0x0000, "x2" )
|
||||
|
||||
static INPUT_PORTS_START( weststry )
|
||||
static INPUT_PORTS_START( weststry_base )
|
||||
PORT_START("DSW")
|
||||
BLOODBRO_COINAGE
|
||||
/* SW1:7,8 is listed as "ROM change option", "optional"
|
||||
@ -281,8 +281,17 @@ static INPUT_PORTS_START( weststry )
|
||||
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( weststry )
|
||||
PORT_INCLUDE( weststry_base )
|
||||
|
||||
PORT_START("COIN") /* referenced by seibu sound board */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
static INPUT_PORTS_START( bloodbro )
|
||||
PORT_INCLUDE( weststry )
|
||||
PORT_INCLUDE( weststry_base )
|
||||
|
||||
PORT_MODIFY("IN1")
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
|
||||
|
@ -2892,6 +2892,9 @@ static INPUT_PORTS_START( wof )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
|
||||
|
||||
PORT_START("IN3") /* Player 4 - not used */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* Needs further checking */
|
||||
@ -2945,6 +2948,9 @@ static INPUT_PORTS_START( dino )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
|
||||
|
||||
PORT_START("IN3") /* Player 4 - not used */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* Needs further checking */
|
||||
@ -2988,6 +2994,12 @@ static INPUT_PORTS_START( punisher )
|
||||
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN2") /* Player 3 - not used */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("IN3") /* Player 4 - not used */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/* Needs further checking */
|
||||
|
@ -875,7 +875,7 @@ ADDRESS_MAP_END
|
||||
***************************************************************************/
|
||||
|
||||
static INPUT_PORTS_START( bakubrkr )
|
||||
PORT_START("DSW_P1") /* e00000.w */
|
||||
PORT_START("P1") /* e00000.w */
|
||||
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
|
||||
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
|
@ -237,6 +237,9 @@ static INPUT_PORTS_START( hasamu )
|
||||
IREM_COIN_MODE_1_NEW_HIGH
|
||||
/* Coin Mode 2 */
|
||||
IREM_COIN_MODE_2_HIGH
|
||||
|
||||
PORT_START("P3_P4") /* unused */
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( dynablst )
|
||||
@ -388,6 +391,9 @@ static INPUT_PORTS_START( bombrman ) /* Does not appear to support 4 players or
|
||||
IREM_COIN_MODE_1_NEW_HIGH
|
||||
/* Coin Mode 2 */
|
||||
IREM_COIN_MODE_2_HIGH
|
||||
|
||||
PORT_START("P3_P4") /* unused */
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( bbmanw )
|
||||
@ -495,6 +501,9 @@ static INPUT_PORTS_START( quizf1 )
|
||||
IREM_COIN_MODE_1_NEW_HIGH
|
||||
/* Coin Mode 2 */
|
||||
IREM_COIN_MODE_2_HIGH
|
||||
|
||||
PORT_START("P3_P4") /* unused */
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( matchit2 )
|
||||
@ -547,6 +556,9 @@ static INPUT_PORTS_START( matchit2 )
|
||||
IREM_COIN_MODE_1_NEW_HIGH
|
||||
/* Coin Mode 2 */
|
||||
IREM_COIN_MODE_2_HIGH
|
||||
|
||||
PORT_START("P3_P4") /* unused */
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( shisen2 )
|
||||
@ -601,6 +613,9 @@ static INPUT_PORTS_START( shisen2 )
|
||||
IREM_COIN_MODE_1_NEW_HIGH
|
||||
/* Coin Mode 2 */
|
||||
IREM_COIN_MODE_2_HIGH
|
||||
|
||||
PORT_START("P3_P4") /* unused */
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( riskchal )
|
||||
@ -648,6 +663,9 @@ static INPUT_PORTS_START( riskchal )
|
||||
IREM_COIN_MODE_1_NEW_HIGH
|
||||
/* Coin Mode 2 */
|
||||
IREM_COIN_MODE_2_HIGH
|
||||
|
||||
PORT_START("P3_P4") /* unused */
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -219,12 +219,26 @@ static INPUT_PORTS_START ( megaplay )
|
||||
PORT_DIPSETTING( 0x20, "1 coin/1 credit - 4 coins/5 credits" )
|
||||
PORT_DIPSETTING( 0x10, "1 coin/1 credit - 2 coins/3 credits" )
|
||||
PORT_DIPSETTING( 0x00, " 1 coin/1 credit" )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:1")
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:2")
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:3")
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:4")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START ( mp_sonic )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x03, 0x01, "Initial Players" ) PORT_DIPLOCATION("SW3:1,2")
|
||||
PORT_DIPSETTING( 0x00, "4" )
|
||||
PORT_DIPSETTING( 0x01, "3" )
|
||||
@ -245,7 +259,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_gaxe2 )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW3:1")
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Normal ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Hard ) )
|
||||
@ -269,7 +283,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_col3 )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Language ) ) PORT_DIPLOCATION("SW3:1")
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( English ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Japanese ) )
|
||||
@ -292,7 +306,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_twc )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x01, 0x01, "Time" ) PORT_DIPLOCATION("SW3:1")
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Normal ) )
|
||||
PORT_DIPSETTING( 0x00, "Short" )
|
||||
@ -310,7 +324,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_sor2 )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW3:1,2")
|
||||
PORT_DIPSETTING( 0x00, "4" )
|
||||
PORT_DIPSETTING( 0x01, "3" )
|
||||
@ -326,7 +340,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_bio )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW3:1,2")
|
||||
PORT_DIPSETTING( 0x00, "5" )
|
||||
PORT_DIPSETTING( 0x01, "4" )
|
||||
@ -342,7 +356,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_gslam )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x07, 0x04, DEF_STR ( Game_Time ) ) PORT_DIPLOCATION("SW3:1,2,3")
|
||||
PORT_DIPSETTING( 0x00, "5:00" )
|
||||
PORT_DIPSETTING( 0x01, "4:30" )
|
||||
@ -360,7 +374,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_mazin )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x01, 0x01, "Initial Player" ) PORT_DIPLOCATION("SW3:1")
|
||||
PORT_DIPSETTING( 0x01, "2" )
|
||||
PORT_DIPSETTING( 0x00, "1" )
|
||||
@ -378,7 +392,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_soni2 )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x03, 0x01, "Initial Players (Normal mode)" ) PORT_DIPLOCATION("SW3:1,2")
|
||||
PORT_DIPSETTING( 0x00, "4" )
|
||||
PORT_DIPSETTING( 0x01, "3" )
|
||||
@ -394,7 +408,7 @@ INPUT_PORTS_END
|
||||
static INPUT_PORTS_START ( mp_shnb3 )
|
||||
PORT_INCLUDE( megaplay )
|
||||
|
||||
PORT_START("DSW1") /* DSW C (per game settings) */
|
||||
PORT_MODIFY("DSW1") /* DSW C (per game settings) */
|
||||
PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW3:1,2")
|
||||
PORT_DIPSETTING( 0x00, "4" )
|
||||
PORT_DIPSETTING( 0x01, "3" )
|
||||
|
@ -321,7 +321,7 @@ static INPUT_PORTS_START( mlanding )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
|
||||
|
||||
PORT_START("STICX") /* Stick 1 (3) */
|
||||
PORT_START("STICKX") /* Stick 1 (3) */
|
||||
PORT_BIT( 0xffff, 0x0000, IPT_AD_STICK_X ) PORT_MINMAX(0xffd8,0x28) PORT_SENSITIVITY(30) PORT_KEYDELTA(1) PORT_PLAYER(1)
|
||||
|
||||
PORT_START("STICKY") /* Stick 2 (4) */
|
||||
|
@ -225,6 +225,9 @@ static INPUT_PORTS_START( vliner )
|
||||
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Stop/Double Up")
|
||||
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Start/Collect")
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
@ -1548,6 +1548,9 @@ static INPUT_PORTS_START( mustang )
|
||||
PORT_DIPSETTING( 0xc000, "3" )
|
||||
PORT_DIPSETTING( 0x8000, "4" )
|
||||
PORT_DIPSETTING( 0x0000, "5" )
|
||||
|
||||
PORT_START("COIN") /* referenced by seibu sound board */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( hachamf )
|
||||
@ -2019,6 +2022,9 @@ static INPUT_PORTS_START( tdragonb )
|
||||
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unused ) ) /* The manual states this dip is "Unused" */
|
||||
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
|
||||
PORT_START("COIN") /* referenced by seibu sound board */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( ssmissin )
|
||||
|
@ -6269,7 +6269,7 @@ static INPUT_PORTS_START( inttoote )
|
||||
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN0")
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SPECIAL ) // P1 coin out
|
||||
@ -6287,7 +6287,7 @@ static INPUT_PORTS_START( inttoote )
|
||||
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_START("P2")
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Door Open") PORT_TOGGLE
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Question Mark")
|
||||
|
@ -651,7 +651,7 @@ static ADDRESS_MAP_START( myangel2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM") // Coins
|
||||
AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r ) // Watchdog
|
||||
AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1") // DSW 1
|
||||
AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW0") // DSW 2
|
||||
AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2") // DSW 2
|
||||
AM_RANGE(0xb00000, 0xb03fff) AM_READ(seta_sound_word_r ) // Sound
|
||||
AM_RANGE(0xd00000, 0xd3ffff) AM_READ(SMH_RAM ) // Sprites
|
||||
AM_RANGE(0xd40000, 0xd4ffff) AM_READ(SMH_RAM ) // Palette
|
||||
|
@ -188,7 +188,7 @@ static INPUT_PORTS_START( simpsn2p )
|
||||
// PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) //BUTTON3 Unused
|
||||
// PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START4 )
|
||||
|
||||
PORT_START("COINS") /* IN4 */
|
||||
PORT_START("COIN") /* IN4 */
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) //COIN3 Unused
|
||||
|
@ -1442,6 +1442,9 @@ static INPUT_PORTS_START( dynagear )
|
||||
PORT_DIPNAME( 0x0080, 0x0080, "Health" ) PORT_DIPLOCATION( "DSW2:8" )
|
||||
PORT_DIPSETTING( 0x0000, "3 Hearts" )
|
||||
PORT_DIPSETTING( 0x0080, "4 Hearts" )
|
||||
|
||||
PORT_START("ADD_BUTTONS") // IN5 - $500008
|
||||
PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
@ -704,7 +704,7 @@ static DRIVER_INIT( smoto16 )
|
||||
|
||||
GAME( 1990, victor5, 0, victor5, 0, 0, ROT0, "Subsino", "Victor 5", GAME_NOT_WORKING )
|
||||
GAME( 1990, victor21, 0, victor21, 0, 0, ROT0, "Subsino", "Victor 21", GAME_NOT_WORKING )
|
||||
GAME( 1993, sharkpy, 0, srider, 0, 0, ROT0, "Subsino", "Shark Party", GAME_NOT_WORKING )
|
||||
GAME( 1993, sharkpya, sharkpy, srider, 0, 0, ROT0, "Subsino", "Shark Party (alt)", GAME_NOT_WORKING )
|
||||
GAME( 1993, sharkpy, 0, srider, smoto, 0, ROT0, "Subsino", "Shark Party", GAME_NOT_WORKING )
|
||||
GAME( 1993, sharkpya, sharkpy, srider, smoto, 0, ROT0, "Subsino", "Shark Party (alt)", GAME_NOT_WORKING )
|
||||
GAME( 1996, smoto20, 0, srider, smoto, smoto20, ROT0, "Subsino", "Super Rider (Italy, v2.0)", GAME_WRONG_COLORS )
|
||||
GAME( 1996, smoto16, smoto20, srider, smoto, smoto16, ROT0, "Subsino", "Super Moto (Italy, v1.6)", GAME_WRONG_COLORS )
|
||||
|
@ -455,6 +455,9 @@ static INPUT_PORTS_START( rallybik )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
|
||||
|
||||
TOAPLAN1_SYSTEM_INPUTS
|
||||
|
||||
PORT_START("TJUMP") /* Territory Jumper Block (not present?) */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( truxton )
|
||||
|
@ -66,7 +66,7 @@ UINT8 invaders_is_flip_screen(void);
|
||||
void invaders_set_flip_screen(UINT8 data);
|
||||
int invaders_is_cabinet_cocktail(running_machine *machine);
|
||||
|
||||
#define BLUESHRK_SPEAR_PORT_TAG ("SPEAR")
|
||||
#define BLUESHRK_SPEAR_PORT_TAG ("IN0")
|
||||
|
||||
#define INVADERS_CONTROL_PORT_P1 \
|
||||
PORT_START(INVADERS_P1_CONTROL_PORT_TAG) \
|
||||
|
Loading…
Reference in New Issue
Block a user