diff options
author | Ted Green <tedgreen99@protonmail.com> | 2017-09-13 10:32:09 -0600 |
---|---|---|
committer | Ted Green <tedgreen99@protonmail.com> | 2017-09-13 10:32:09 -0600 |
commit | 50ae2d7bcfbe485a20d89d6d39a9bc7a3ca70c2b (patch) | |
tree | baf46e57fe7c2df70784d2490827ed65f508e553 /src/mame/drivers/iteagle.cpp | |
parent | 77153bcb6eeffd7bdf8060e59a30845df8714494 (diff) |
iteagle: Promote virtpool from MACHINE_NOT_WORKING to MACHINE_IMPERFECT_GRAPHICS.
iteagle: Update dip settings for bbh series and virtpool. (nw)
iteagle: Added new 1.60.01 version of bbh2sc. (nw)
iteagle_fpga: Add vblank handling and update gun control. (nw)
iteagle_fpga: Add proper eagle1 (virtpool) battery ram functionality. (nw)
Diffstat (limited to 'src/mame/drivers/iteagle.cpp')
-rw-r--r-- | src/mame/drivers/iteagle.cpp | 117 |
1 files changed, 94 insertions, 23 deletions
diff --git a/src/mame/drivers/iteagle.cpp b/src/mame/drivers/iteagle.cpp index 82f9c71dd9a..74bb9477c85 100644 --- a/src/mame/drivers/iteagle.cpp +++ b/src/mame/drivers/iteagle.cpp @@ -41,8 +41,7 @@ * 3DFX Voodoo 1 video TODO: - * Add support for Eagle 1 (Virtual Pool) PCBs - * Add support for later RED boards + * Big buck hunter sportmans paradise and shooters challenge only work with secondary targeting (reduced threshold) Notes: Sound volume may be muted, it can be adjusted through the service menu or with volume up/down buttons (+/-) @@ -156,9 +155,10 @@ void iteagle_state::machine_reset() static MACHINE_CONFIG_START( iteagle ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", VR4310LE, 166666666) + MCFG_CPU_ADD("maincpu", VR4310LE, 133333333) MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(8192) + MCFG_MIPS3_SYSTEM_CLOCK(66666667) MCFG_PCI_ROOT_ADD( ":pci") MCFG_VRC4373_ADD( PCI_ID_NILE, ":maincpu") @@ -173,8 +173,12 @@ static MACHINE_CONFIG_START( iteagle ) MCFG_SOUND_ROUTE(0, PCI_ID_SOUND":lspeaker", 1.0) MCFG_SOUND_ROUTE(1, PCI_ID_SOUND":rspeaker", 1.0) MCFG_ES1373_IRQ_ADD( ":maincpu", MIPS3_IRQ3) + MCFG_VOODOO_PCI_ADD( PCI_ID_VIDEO, TYPE_VOODOO_3, ":maincpu") MCFG_VOODOO_PCI_FBMEM(16) + MCFG_DEVICE_MODIFY(PCI_ID_VIDEO":voodoo") + MCFG_VOODOO_VBLANK_CB(DEVWRITELINE(PCI_ID_FPGA, iteagle_fpga_device, vblank_update)) + MCFG_ITEAGLE_EEPROM_ADD( PCI_ID_EEPROM) MCFG_SCREEN_ADD("screen", RASTER) @@ -243,23 +247,30 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( bbh2sp, iteagle ) MCFG_DEVICE_MODIFY(PCI_ID_FPGA) - MCFG_ITEAGLE_FPGA_INIT(0x02000602, 0x0d0a0a) + MCFG_ITEAGLE_FPGA_INIT(0x02010602, 0x0d0a0a) MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) MCFG_ITEAGLE_EEPROM_INIT(0x0000, 0x7) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( bbhcotw, iteagle ) MCFG_DEVICE_MODIFY(PCI_ID_FPGA) - MCFG_ITEAGLE_FPGA_INIT(0x02000603, 0x080704) + MCFG_ITEAGLE_FPGA_INIT(0x02010603, 0x080704) MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( virtpool, iteagle ) + // Not sure what the actual value should be + // Setting a lower frequency helps delay the tutorial screen premature cut-out + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_CLOCK(99999999) + MCFG_MIPS3_SYSTEM_CLOCK(33333333) + MCFG_DEVICE_REMOVE(PCI_ID_VIDEO) MCFG_VOODOO_PCI_ADD(PCI_ID_VIDEO, TYPE_VOODOO_1, ":maincpu") MCFG_VOODOO_PCI_FBMEM(4) MCFG_VOODOO_PCI_TMUMEM(4, 4) + MCFG_DEVICE_MODIFY(PCI_ID_FPGA) MCFG_ITEAGLE_FPGA_INIT(0x01000202, 0x080808) MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) @@ -275,10 +286,16 @@ MACHINE_CONFIG_END static INPUT_PORTS_START( iteagle ) PORT_START("SW5") - PORT_DIPNAME( 0xf, 0x1, "Resolution" ) + PORT_DIPNAME( 0x3, 0x1, "Resolution" ) PORT_DIPSETTING(0x1, "Medium" ) PORT_DIPSETTING(0x0, "Low" ) PORT_DIPSETTING(0x2, "Low_Alt" ) + PORT_DIPNAME(0x4, 0x0, "SW5-3") + PORT_DIPSETTING(0x0, DEF_STR(On)) + PORT_DIPSETTING(0x4, DEF_STR(Off)) + PORT_DIPNAME(0x8, 0x0, "SW5-4") + PORT_DIPSETTING(0x0, DEF_STR(On)) + PORT_DIPSETTING(0x8, DEF_STR(Off)) PORT_START("IN1") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -296,14 +313,18 @@ static INPUT_PORTS_START( iteagle ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME( "Service" ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x000c, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_DIPNAME( 0x0010, 0x00, "SW51-1" ) - PORT_DIPSETTING(0x00, "Normal" ) - PORT_DIPSETTING(0x10, "Operator Mode" ) + PORT_DIPNAME( 0x0010, 0x00, "Operator Mode" ) + PORT_DIPSETTING(0x00, DEF_STR(No)) + PORT_DIPSETTING(0x10, DEF_STR(Yes)) PORT_DIPNAME( 0x0020, 0x00, "SW51-2" ) - PORT_DIPSETTING(0x00, "On" ) - PORT_DIPSETTING(0x20, "Off" ) - PORT_DIPNAME( 0xc0, 0x00, "SW51-34" ) - PORT_DIPSETTING(0x00, "On" ) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPSETTING(0x20, DEF_STR(Off)) + PORT_DIPNAME( 0x40, 0x00, "SW51-3" ) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPSETTING(0x40, DEF_STR(Off)) + PORT_DIPNAME(0x80, 0x00, "SW51-4") + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPSETTING(0x80, DEF_STR(Off)) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_VOLUME_UP ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BILL1 ) @@ -328,13 +349,19 @@ static INPUT_PORTS_START( iteagle ) PORT_START("GUNY1") PORT_BIT( 0x1ff, 0x100, IPT_LIGHTGUN_Y ) - PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_MINMAX(0, 383) + PORT_SENSITIVITY(50) PORT_KEYDELTA(10) INPUT_PORTS_END static INPUT_PORTS_START( virtpool ) PORT_INCLUDE( iteagle ) + PORT_MODIFY("SW5") + PORT_DIPNAME( 0x3, 0x3, "Resolution" ) + PORT_DIPSETTING(0x1, "Medium" ) + PORT_DIPSETTING(0x0, "Low" ) + PORT_DIPSETTING(0x3, "VGA" ) + PORT_MODIFY("IN1") PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "English" ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Aim" ) @@ -343,30 +370,65 @@ static INPUT_PORTS_START( virtpool ) PORT_MODIFY("SYSTEM") PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME( "Slop" ) + PORT_DIPNAME(0x0010, 0x00, "SW51-1") // Turning this on freezes virtpool at boot + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPSETTING(0x10, DEF_STR(Off)) + PORT_DIPNAME(0x80, 0x00, "Operator Mode") + PORT_DIPSETTING(0x00, DEF_STR(No)) + PORT_DIPSETTING(0x80, DEF_STR(Yes)) INPUT_PORTS_END static INPUT_PORTS_START( bbh ) PORT_INCLUDE( iteagle ) + // bbhsc is low resolution only, bbhsc version 1.60.01 will set low resolution automatically + PORT_MODIFY("SW5") + PORT_DIPNAME(0x3, 0x0, "Resolution") + PORT_DIPSETTING(0x1, "Medium" ) + PORT_DIPSETTING(0x0, "Low" ) + PORT_DIPSETTING(0x2, "Low_Alt" ) + PORT_MODIFY("IN1") PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Trigger" ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME( "Pump" ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_MODIFY("SYSTEM") + // bbhsc and bbh2sp only work with seconday targeting + PORT_DIPNAME(0x0020, 0x20, "Targeting") + PORT_DIPSETTING(0x00, "Regular") + PORT_DIPSETTING(0x20, "Secondary") + PORT_MODIFY("GUNX1") - PORT_BIT( 0x1ff, 0x100, IPT_LIGHTGUN_X ) - PORT_SENSITIVITY(50) PORT_KEYDELTA(10) + PORT_BIT( 0x3ff, 0x200, IPT_LIGHTGUN_X ) + PORT_SENSITIVITY(50) PORT_KEYDELTA(24) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MODIFY("GUNY1") PORT_BIT( 0x1ff, 0x100, IPT_LIGHTGUN_Y ) - PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_MINMAX(0, 383) + PORT_SENSITIVITY(50) PORT_KEYDELTA(12) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) INPUT_PORTS_END +static INPUT_PORTS_START( bbh2 ) + PORT_INCLUDE( bbh ) + + // Default bbh2sp and bbhcotw to medium resolution + PORT_MODIFY("SW5") + PORT_DIPNAME(0x3, 0x1, "Resolution") + PORT_DIPSETTING(0x1, "Medium" ) + PORT_DIPSETTING(0x0, "Low" ) + PORT_DIPSETTING(0x2, "Low_Alt" ) + + PORT_MODIFY("GUNX1") + PORT_BIT( 0x1ff, 0x100, IPT_LIGHTGUN_X ) + PORT_SENSITIVITY(50) PORT_KEYDELTA(12) + PORT_CROSSHAIR(X, 1.0, 0.0, 0) +INPUT_PORTS_END + /************************************* * * ROM definition(s) @@ -551,10 +613,18 @@ ROM_START( bbhsc ) ROM_LOAD( "bb15-us.u53", 0x0000, 0x0880, NO_DUMP ) DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) + DISK_IMAGE("bbhsc_v1.60.01", 0, SHA1(8554fdd7193ee27c0fe8ca921aa8db9c0378b313)) /* Build 09:50:13, May 29 2002 */ +ROM_END + +ROM_START( bbhsca ) + EAGLE_BIOS + + ROM_REGION( 0x0880, "atmel", 0 ) /* Atmel 90S2313 AVR internal CPU code */ + ROM_LOAD( "bb15-us.u53", 0x0000, 0x0880, NO_DUMP ) + + DISK_REGION( PCI_ID_IDE":ide:0:hdd:image" ) DISK_IMAGE( "bbhsc_v1.50.07_cf", 0, SHA1(21dcf1f7e5ab901ac64e6afb099c35e273b3bf1f) ) /* Build 16:35:34, Feb 26 2002 - 4gb Compact Flash conversion */ ROM_END - //DISK_IMAGE( "bbhsc_v1.50.07_cf", 0, SHA1(21dcf1f7e5ab901ac64e6afb099c35e273b3bf1f) ) /* Build 16:35:34, Feb 26 2002 - 4gb Compact Flash conversion */ - //DISK_IMAGE( "bbhsc_v1.60.01", 0, SHA1(8554fdd7193ee27c0fe8ca921aa8db9c0378b313) ) ROM_START( bbh2sp ) EAGLE_BIOS @@ -586,7 +656,7 @@ ROM_END *************************************/ GAME( 2000, iteagle, 0, iteagle, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT ) -GAME( 1998, virtpool, iteagle, virtpool, virtpool, iteagle_state, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random lockups on loading screens +GAME( 1998, virtpool, iteagle, virtpool, virtpool, iteagle_state, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 2002, carnking, iteagle, carnking, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_SUPPORTS_SAVE ) GAME( 2000, gtfore01, iteagle, gtfore01, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", MACHINE_SUPPORTS_SAVE ) GAME( 2001, gtfore02, iteagle, gtfore02, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", MACHINE_SUPPORTS_SAVE ) @@ -599,6 +669,7 @@ GAME( 2004, gtfore05a, gtfore05, gtfore05, iteagle, iteagle_state, 0, ROT0, "I GAME( 2004, gtfore05b, gtfore05, gtfore05, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", MACHINE_SUPPORTS_SAVE ) GAME( 2004, gtfore05c, gtfore05, gtfore05, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", MACHINE_SUPPORTS_SAVE ) GAME( 2005, gtfore06, iteagle, gtfore06, iteagle, iteagle_state, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", MACHINE_SUPPORTS_SAVE ) -GAME( 2002, bbhsc, iteagle, bbhsc, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // doesn't boot -GAME( 2002, bbh2sp, iteagle, bbh2sp, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter II - Sportsman's Paradise (v2.02.11)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // SW51-2 needs to be off -GAME( 2006, bbhcotw, iteagle, bbhcotw, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random lockups +GAME( 2002, bbhsc, iteagle, bbhsc, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.60.01)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random lockups +GAME( 2002, bbhsca, bbhsc, bbhsc, bbh, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random lockups +GAME( 2002, bbh2sp, iteagle, bbh2sp, bbh2, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter II - Sportsman's Paradise (v2.02.11)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // SW51-2 needs to be off +GAME( 2006, bbhcotw, iteagle, bbhcotw, bbh2, iteagle_state, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // random lockups |