diff options
author | Brian Troha <briantro@users.noreply.github.com> | 2009-09-30 21:02:08 +0000 |
---|---|---|
committer | Brian Troha <briantro@users.noreply.github.com> | 2009-09-30 21:02:08 +0000 |
commit | a7ee8827dc67453d24e716ab31c64e4a91cdfdf2 (patch) | |
tree | af0cd84fc5b7eed2263c785b70edb59951b066e2 | |
parent | 6a385f693464f3abfee160f27f8261dc1f6a0eab (diff) |
multfish.c driver fixes and improvements
Credit: MetalliC
MAMETesters bug ID 03403 "Can't init Roll Fruit game."
Hooked up inputs for Roll Fruit
Added hopper emulation, payout now works
Added information on how to initialize Roll Fruit
Added in missing rom to a few MultiFish sets
-rw-r--r-- | src/mame/drivers/multfish.c | 82 |
1 files changed, 75 insertions, 7 deletions
diff --git a/src/mame/drivers/multfish.c b/src/mame/drivers/multfish.c index 3835e816249..306941729b9 100644 --- a/src/mame/drivers/multfish.c +++ b/src/mame/drivers/multfish.c @@ -18,10 +18,17 @@ Turn Service Mode OFF (press 'F2') Reset the game (press 'F3') + To Init Roll Fruit + + Turn Service Mode ON (press 'F2') + Press and hold Service 1 ('9') + Reset the game (press 'F3') + Use Service 2 ('0') to move pointer to INIT + Hold Service 1 ('9') for 5 seconds + Turn Service Mode OFF (press 'F2') Todo: ------------------------------------------------------------------------- - Payout doesn't currently work and causes 'Call Attendant' to be displayed Hook up Lamps Emulate the RTC (real time clock) @@ -210,6 +217,26 @@ static READ8_HANDLER( ray_r ) return video_screen_get_vpos(space->machine->primary_screen); } +static UINT8 multfish_hopper_motor = 0; +static UINT8 multfish_hopper = 0; + +static CUSTOM_INPUT( multfish_hopper_r ) +{ + if ( multfish_hopper_motor != 0 ) + { + multfish_hopper++; + return multfish_hopper>>4; + } + else + { + return 0; + } +} + +static WRITE8_HANDLER( multfish_port33_w ) +{ + multfish_hopper_motor = data & 0x10; //0x10 Hopper Motor (33B) +} static ADDRESS_MAP_START( multfish_map, ADDRESS_SPACE_PROGRAM, 8 ) @@ -239,9 +266,7 @@ static INPUT_PORTS_START( multfish ) PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) // unused? PORT_START("IN1") - PORT_DIPNAME( 0x01, 0x01, "Hopper SW (22 B)" ) - PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM ( multfish_hopper_r, NULL )// Hopper SW (22 B) PORT_DIPNAME( 0x02, 0x02, "BK Door (17 A)" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -335,6 +360,45 @@ static INPUT_PORTS_START( multfish ) PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) // unused? INPUT_PORTS_END +static INPUT_PORTS_START( rollfr ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) // COIN B (18 B) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM ( multfish_hopper_r, NULL )// Hopper SW (22 B) + PORT_DIPNAME( 0x02, 0x02, "BK Door (17 A)" ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN2") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN3") + PORT_DIPNAME( 0x08, 0x08, "Hopper Inhibit (08 B)" ) + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN4") + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) //Service SW (20 B) + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE2 ) //Statistic SW (20 A) + PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN7") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_SERVICE( 0x02, IP_ACTIVE_LOW ) // Fr Door (16 A) + PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + static WRITE8_HANDLER( multfish_f3_w ) { @@ -363,7 +427,7 @@ static ADDRESS_MAP_START( multfish_portmap, ADDRESS_SPACE_IO, 8 ) // AM_RANGE(0x30, 0x30) AM_WRITE(multfish_port30_w) // AM_RANGE(0x31, 0x31) AM_WRITE(multfish_port31_w) // AM_RANGE(0x32, 0x32) AM_WRITE(multfish_port32_w) -// AM_RANGE(0x33, 0x33) AM_WRITE(multfish_port33_w) + AM_RANGE(0x33, 0x33) AM_WRITE(multfish_port33_w) //0x10 Hopper Motor (33B) // AM_RANGE(0x34, 0x34) AM_WRITE(multfish_port34_w) // AM_RANGE(0x35, 0x35) AM_WRITE(multfish_port35_w) // AM_RANGE(0x36, 0x36) AM_WRITE(multfish_port36_w) @@ -639,6 +703,7 @@ ROM_START( mfish_11 ) // 031124 ROM_LOAD( "mf031124.rom", 0x00000, 0x40000, MD5(9cd800719c6e4a2267e3c140467238d3) SHA1(c0d1b541c4b076bbc810ad637acb4a2663a919ba) ) ROM_REGION( 0x400000, "gfx", 0 ) + ROM_LOAD( "1", 0x000000, 0x80000, CRC(2f2a7367) SHA1(ce7ee9ca4f374ec61edc3b89d4752f0edb64a910) ) ROM_LOAD( "2", 0x100000, 0x80000, CRC(606acd73) SHA1(ce5f7b1366dbb16d57fe4b7f395f08725e3cf756) ) ROM_LOAD( "3", 0x200000, 0x80000, CRC(33759c2a) SHA1(6afcee2e00a27542fc9751702abcc84cd7d3a2a8) ) ROM_LOAD( "4", 0x300000, 0x80000, CRC(d0053546) SHA1(01c69be0c594947d57648f491904a3b6938a5570) ) @@ -654,6 +719,7 @@ ROM_START( mfish_12 ) // 040308 ROM_LOAD( "mf040308.rom", 0x00000, 0x40000, CRC(adb9c1d9) SHA1(88c69f48766dc7c98a6f03c1a0a4aa63b76560b6) ) ROM_REGION( 0x400000, "gfx", 0 ) + ROM_LOAD( "1", 0x000000, 0x80000, CRC(2f2a7367) SHA1(ce7ee9ca4f374ec61edc3b89d4752f0edb64a910) ) ROM_LOAD( "2", 0x100000, 0x80000, CRC(606acd73) SHA1(ce5f7b1366dbb16d57fe4b7f395f08725e3cf756) ) ROM_LOAD( "3", 0x200000, 0x80000, CRC(33759c2a) SHA1(6afcee2e00a27542fc9751702abcc84cd7d3a2a8) ) ROM_LOAD( "4", 0x300000, 0x80000, CRC(d0053546) SHA1(01c69be0c594947d57648f491904a3b6938a5570) ) @@ -668,6 +734,7 @@ ROM_START( mfish_12a ) // 040308 ROM_LOAD( "mf040308a.rom", 0x00000, 0x40000, CRC(44537648) SHA1(7bce6085778ff0b21c052ae91703de3b78b8eed0) ) /* Not officially listed on Igrosoft's web site hash page */ ROM_REGION( 0x400000, "gfx", 0 ) + ROM_LOAD( "1", 0x000000, 0x80000, CRC(2f2a7367) SHA1(ce7ee9ca4f374ec61edc3b89d4752f0edb64a910) ) ROM_LOAD( "2", 0x100000, 0x80000, CRC(606acd73) SHA1(ce5f7b1366dbb16d57fe4b7f395f08725e3cf756) ) ROM_LOAD( "3", 0x200000, 0x80000, CRC(33759c2a) SHA1(6afcee2e00a27542fc9751702abcc84cd7d3a2a8) ) ROM_LOAD( "4", 0x300000, 0x80000, CRC(d0053546) SHA1(01c69be0c594947d57648f491904a3b6938a5570) ) @@ -683,6 +750,7 @@ ROM_START( mfish_13 ) // 040316 ROM_LOAD( "mf040316.rom", 0x00000, 0x40000, MD5(66019927201954518261652147b05e43) SHA1(c1f4d1c51632a45b533d19c8b6f63d337d84d9cd) ) ROM_REGION( 0x400000, "gfx", 0 ) + ROM_LOAD( "1", 0x000000, 0x80000, CRC(2f2a7367) SHA1(ce7ee9ca4f374ec61edc3b89d4752f0edb64a910) ) ROM_LOAD( "2", 0x100000, 0x80000, CRC(606acd73) SHA1(ce5f7b1366dbb16d57fe4b7f395f08725e3cf756) ) ROM_LOAD( "3", 0x200000, 0x80000, CRC(33759c2a) SHA1(6afcee2e00a27542fc9751702abcc84cd7d3a2a8) ) ROM_LOAD( "4", 0x300000, 0x80000, CRC(d0053546) SHA1(01c69be0c594947d57648f491904a3b6938a5570) ) @@ -1782,9 +1850,9 @@ GAME( 2003, lhaunt_3, lhaunt, multfish, multfish, 0, ROT0, "Igrosoft", "Lu #endif #if ALL_REVISIONS -GAME( 2003, rollfr, 0, multfish, multfish, 0, ROT0, "Igrosoft", "Roll Fruit (030821)", 0 ) +GAME( 2003, rollfr, 0, multfish, rollfr, 0, ROT0, "Igrosoft", "Roll Fruit (030821)", 0 ) #endif -GAME( 2003, rollfr_2, 0, multfish, multfish, 0, ROT0, "Igrosoft", "Roll Fruit (040318)", 0 ) +GAME( 2003, rollfr_2, 0, multfish, rollfr, 0, ROT0, "Igrosoft", "Roll Fruit (040318)", 0 ) GAME( 2004, garage_4, 0, multfish, multfish, 0, ROT0, "Igrosoft", "Garage (040219, set 1)", 0 ) GAME( 2004, garage_4a, garage_4, multfish, multfish, 0, ROT0, "Igrosoft", "Garage (040219, set 2)", 0 ) |