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
This commit is contained in:
Aaron Giles 2008-09-18 16:01:44 +00:00
parent 2cb15a9047
commit d4cfc65c9b

View File

@ -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 )