summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-09-18 16:01:44 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-09-18 16:01:44 +0000
commitd4cfc65c9b5ea3e0798e4cfc63f5982c46ed5694 (patch)
tree16f87bd9351896fe95d95ba35212c2ca8d5e61e4
parent2cb15a90471638124699aada3beaa52610f7eb0a (diff)
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
-rw-r--r--src/mame/drivers/epos.c129
1 files changed, 82 insertions, 47 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_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( 0x02, 0x00, "Fuel Consumption" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x00, "Slow" )
PORT_DIPSETTING( 0x02, "Fast" )
- PORT_DIPNAME( 0x04, 0x00, "Rotation" )
+ 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_DIPNAME( 0x08, 0x08, "ERG" ) PORT_DIPLOCATION("SW1:7")
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_DIPSETTING( 0x00, "3" )
- PORT_DIPSETTING( 0x10, "4" )
- PORT_DIPSETTING( 0x40, "5" )
- PORT_DIPSETTING( 0x50, "6" )
- PORT_DIPNAME( 0x80, 0x00, "Game Mode" )
+ 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 )