From d4cfc65c9b5ea3e0798e4cfc63f5982c46ed5694 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Thu, 18 Sep 2008 16:01:44 +0000 Subject: [PATCH] I was checking the game CATAPULT and noticed this game, despite not working due to bad roms had a fully working service mode. I also noticed the DIP locations were well documented on-screen and differed some from the ones in source. I took the time to read up on how to assign DIPs correctly - but I was frustrated initially thinking I didn't understand it. I spoke to ETABETA about this and it seems I picked an uncommon game/driver which doesn't have normal mapping locations (for whatever reason) and that I'd need to find out what each value is actually doing. As a result and some work and some more help - I was able to understand how to do this and reworked the DIPs to what is output in the service mode for all games (except for Revenger) which did not work enough at all. While I was there, I added DIP LOCATIONS for all sets. I would assume this eventually benefit from a PORT_CUSTOM implementation. This .DIFF is based on 0.127u3 sources. Tafoid tafoid@yahoo.com --- src/mame/drivers/epos.c | 133 +++++++++++++++++++++++++--------------- 1 file changed, 84 insertions(+), 49 deletions(-) diff --git a/src/mame/drivers/epos.c b/src/mame/drivers/epos.c index ff1c59297d6..2cf486bbac3 100644 --- a/src/mame/drivers/epos.c +++ b/src/mame/drivers/epos.c @@ -141,27 +141,31 @@ static const ppi8255_interface ppi8255_intf = static INPUT_PORTS_START( megadon ) PORT_START("DSW") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) + +// There are odd port mappings (old=new) +// 02=10, 04=40, 08=02, 10=20, 20=04, 40=08 + + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x02, 0x00, "Fuel Consumption" ) - PORT_DIPSETTING( 0x00, "Slow" ) - PORT_DIPSETTING( 0x02, "Fast" ) - PORT_DIPNAME( 0x04, 0x00, "Rotation" ) - PORT_DIPSETTING( 0x04, "Slow" ) - PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x08, 0x08, "ERG" ) - PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) - PORT_DIPNAME( 0x20, 0x20, "Enemy Fire Rate" ) - PORT_DIPSETTING( 0x20, "Slow" ) - PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x50, 0x00, DEF_STR( Lives ) ) + PORT_DIPNAME( 0x50, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:2,3") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x10, "4" ) PORT_DIPSETTING( 0x40, "5" ) PORT_DIPSETTING( 0x50, "6" ) - PORT_DIPNAME( 0x80, 0x00, "Game Mode" ) + PORT_DIPNAME( 0x02, 0x00, "Fuel Consumption" ) PORT_DIPLOCATION("SW1:4") + PORT_DIPSETTING( 0x00, "Slow" ) + PORT_DIPSETTING( 0x02, "Fast" ) + PORT_DIPNAME( 0x20, 0x20, "Enemy Fire Rate" ) PORT_DIPLOCATION("SW1:5") + PORT_DIPSETTING( 0x20, "Slow" ) + PORT_DIPSETTING( 0x00, "Fast" ) + PORT_DIPNAME( 0x04, 0x00, "Rotation" ) PORT_DIPLOCATION("SW1:6") + PORT_DIPSETTING( 0x04, "Slow" ) + PORT_DIPSETTING( 0x00, "Fast" ) + PORT_DIPNAME( 0x08, 0x08, "ERG" ) PORT_DIPLOCATION("SW1:7") + PORT_DIPSETTING( 0x08, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Hard ) ) + PORT_DIPNAME( 0x80, 0x00, "Game Mode" ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, "Arcade" ) PORT_DIPSETTING( 0x80, "Contest" ) @@ -189,10 +193,19 @@ INPUT_PORTS_END static INPUT_PORTS_START( suprglob ) PORT_START("DSW") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) + +// There are odd port mappings (old=new) +// 02=10, 04=40, 08=20, 10=02, 20=04, 40=08 + + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x26, 0x00, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x50, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:2,3") + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x40, "5" ) + PORT_DIPSETTING( 0x50, "6" ) + PORT_DIPNAME( 0x26, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5,6") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x02, "2" ) PORT_DIPSETTING( 0x20, "3" ) @@ -201,15 +214,10 @@ static INPUT_PORTS_START( suprglob ) PORT_DIPSETTING( 0x06, "6" ) PORT_DIPSETTING( 0x24, "7" ) PORT_DIPSETTING( 0x26, "8" ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x00, "10000 + Difficulty * 10000" ) PORT_DIPSETTING( 0x08, "90000 + Difficulty * 10000" ) - PORT_DIPNAME( 0x50, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x10, "4" ) - PORT_DIPSETTING( 0x40, "5" ) - PORT_DIPSETTING( 0x50, "6" ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -240,15 +248,24 @@ INPUT_PORTS_END static INPUT_PORTS_START( igmo ) PORT_START("DSW") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) + +// There are odd port mappings (old=new) +// 02=10, 04=40, 08=20, 10=02, 20=04, 40=08 + + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) - PORT_DIPNAME( 0x22, 0x00, DEF_STR( Bonus_Life ) ) + PORT_DIPNAME( 0x50, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:2,3") + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x40, "5" ) + PORT_DIPSETTING( 0x50, "6" ) + PORT_DIPNAME( 0x22, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4,5") PORT_DIPSETTING( 0x00, "20000" ) PORT_DIPSETTING( 0x02, "40000" ) PORT_DIPSETTING( 0x20, "60000" ) PORT_DIPSETTING( 0x22, "80000" ) - PORT_DIPNAME( 0x8c, 0x00, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x8c, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:6,7,8") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x04, "2" ) PORT_DIPSETTING( 0x08, "3" ) @@ -257,11 +274,6 @@ static INPUT_PORTS_START( igmo ) PORT_DIPSETTING( 0x84, "6" ) PORT_DIPSETTING( 0x88, "7" ) PORT_DIPSETTING( 0x8c, "8" ) - PORT_DIPNAME( 0x50, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x10, "4" ) - PORT_DIPSETTING( 0x40, "5" ) - PORT_DIPSETTING( 0x50, "6" ) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) @@ -287,30 +299,53 @@ static INPUT_PORTS_START( igmo ) INPUT_PORTS_END +static INPUT_PORTS_START( catapult ) + PORT_INCLUDE(igmo) + PORT_MODIFY("DSW") + +// There are odd port mappings (old=new) +// 02=08, 04=20, 08=40, 10=02, 20=10, 40=04 + + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1") + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x50, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:2,3") + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPSETTING( 0x40, "5" ) + PORT_DIPSETTING( 0x50, "6" ) + PORT_DIPNAME( 0x22, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5") + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x02, "2" ) + PORT_DIPSETTING( 0x20, "3" ) + PORT_DIPSETTING( 0x22, "4" ) + PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:6,7") + PORT_DIPSETTING( 0x00, "20000" ) + PORT_DIPSETTING( 0x04, "40000" ) + PORT_DIPSETTING( 0x08, "60000" ) + PORT_DIPSETTING( 0x0c, "80000" ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + static INPUT_PORTS_START( dealer ) PORT_START("DSW") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Free_Play ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) ) + PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:4" ) + PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW1:5" ) + PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:6" ) + PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:7" ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x40, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -612,7 +647,7 @@ static DRIVER_INIT( dealer ) *************************************/ GAME( 1982, megadon, 0, epos, megadon, 0, ROT270, "Epos Corporation (Photar Industries license)", "Megadon", 0 ) -GAME( 1982, catapult, 0, epos, igmo, 0, ROT270, "Epos Corporation", "Catapult", GAME_NOT_WORKING) /* bad rom, hold f2 for test mode */ +GAME( 1982, catapult, 0, epos, catapult, 0, ROT270, "Epos Corporation", "Catapult", GAME_NOT_WORKING) /* bad rom, hold f2 for test mode */ GAME( 1983, suprglob, 0, epos, suprglob, 0, ROT270, "Epos Corporation", "Super Glob", 0 ) GAME( 1983, theglob, suprglob, epos, suprglob, 0, ROT270, "Epos Corporation", "The Glob", 0 ) GAME( 1983, theglob2, suprglob, epos, suprglob, 0, ROT270, "Epos Corporation", "The Glob (earlier)", 0 )