trunk/src/mame/drivers/iteagle.c
| r0 | r22534 | |
| 1 | /*************************************************************************** |
| 2 | |
| 3 | Incredible Technologies "Eagle" hardware |
| 4 | |
| 5 | skeleton by R. Belmont |
| 6 | |
| 7 | Known games on this hardware: |
| 8 | * Golden Tee Fore! (2000) |
| 9 | * Golden Tee Fore! 2002 (2001) |
| 10 | * Golden Tee Fore! 2003 (2002) |
| 11 | * Golden Tee Fore! 2004 (2003) |
| 12 | * Silver Strike Bowling (2004) |
| 13 | * Golden Tee Fore! 2005 (2004) |
| 14 | * Golden Tee Fore! Complete (2005) |
| 15 | |
| 16 | Hardware overview: |
| 17 | * NEC VR4310 CPU (similar to the N64's VR4300) |
| 18 | * NEC VR4373 "Nile 3" system controller / PCI bridge |
| 19 | * 3DFX Voodoo Banshee video |
| 20 | |
| 21 | TODO: |
| 22 | * Everything (need new PCI subsystem to do this right) |
| 23 | |
| 24 | ***************************************************************************/ |
| 25 | |
| 26 | #include "emu.h" |
| 27 | #include "cpu/mips/mips3.h" |
| 28 | #include "machine/idectrl.h" |
| 29 | #include "video/voodoo.h" |
| 30 | |
| 31 | class iteagle_state : public driver_device |
| 32 | { |
| 33 | public: |
| 34 | iteagle_state(const machine_config &mconfig, device_type type, const char *tag) |
| 35 | : driver_device(mconfig, type, tag), |
| 36 | m_maincpu(*this, "maincpu"), |
| 37 | m_voodoo(*this, "voodoo") |
| 38 | {} |
| 39 | |
| 40 | required_device<cpu_device> m_maincpu; |
| 41 | required_device<device_t> m_voodoo; |
| 42 | |
| 43 | DECLARE_DRIVER_INIT(iteagle); |
| 44 | DECLARE_WRITE_LINE_MEMBER(ide_interrupt); |
| 45 | UINT32 screen_update_iteagle(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| 46 | }; |
| 47 | |
| 48 | |
| 49 | /************************************* |
| 50 | * |
| 51 | * Machine start |
| 52 | * |
| 53 | *************************************/ |
| 54 | |
| 55 | static MACHINE_START( gtfore ) |
| 56 | { |
| 57 | /* set the fastest DRC options */ |
| 58 | mips3drc_set_options(machine.device("maincpu"), MIPS3DRC_FASTEST_OPTIONS); |
| 59 | } |
| 60 | |
| 61 | |
| 62 | |
| 63 | /************************************* |
| 64 | * |
| 65 | * Machine init |
| 66 | * |
| 67 | *************************************/ |
| 68 | |
| 69 | static MACHINE_RESET( gtfore ) |
| 70 | { |
| 71 | } |
| 72 | |
| 73 | |
| 74 | |
| 75 | /************************************* |
| 76 | * |
| 77 | * Video refresh |
| 78 | * |
| 79 | *************************************/ |
| 80 | |
| 81 | UINT32 iteagle_state::screen_update_iteagle(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 82 | { |
| 83 | return voodoo_update(m_voodoo, bitmap, cliprect) ? 0 : UPDATE_HAS_NOT_CHANGED; |
| 84 | } |
| 85 | |
| 86 | |
| 87 | |
| 88 | /************************************* |
| 89 | * |
| 90 | * Interrupt handling |
| 91 | * |
| 92 | *************************************/ |
| 93 | |
| 94 | WRITE_LINE_MEMBER(iteagle_state::ide_interrupt) |
| 95 | { |
| 96 | } |
| 97 | |
| 98 | /************************************* |
| 99 | * |
| 100 | * Main CPU memory handlers |
| 101 | * |
| 102 | *************************************/ |
| 103 | |
| 104 | static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, iteagle_state ) |
| 105 | ADDRESS_MAP_UNMAP_HIGH |
| 106 | AM_RANGE(0x00000000, 0x01ffffff) AM_RAM |
| 107 | // Nile 3 northbridge/PCI controller at 0f000000 |
| 108 | AM_RANGE(0x1fc00000, 0x1fcfffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("rombase") |
| 109 | ADDRESS_MAP_END |
| 110 | |
| 111 | static void vblank_assert(device_t *device, int state) |
| 112 | { |
| 113 | } |
| 114 | |
| 115 | /************************************* |
| 116 | * |
| 117 | * Port definitions |
| 118 | * |
| 119 | *************************************/ |
| 120 | |
| 121 | static INPUT_PORTS_START( gtfore ) |
| 122 | INPUT_PORTS_END |
| 123 | |
| 124 | /************************************* |
| 125 | * |
| 126 | * Machine driver |
| 127 | * |
| 128 | *************************************/ |
| 129 | |
| 130 | static const voodoo_config iteagle_voodoo_intf = |
| 131 | { |
| 132 | 16, // fbmem; |
| 133 | 0,// tmumem0; |
| 134 | 0,// tmumem1; |
| 135 | "screen",// screen; |
| 136 | "maincpu",// cputag; |
| 137 | vblank_assert,// vblank; |
| 138 | NULL,// stall; |
| 139 | }; |
| 140 | |
| 141 | static const mips3_config r4310_config = |
| 142 | { |
| 143 | 16384, /* code cache size */ |
| 144 | 16384 /* data cache size */ |
| 145 | }; |
| 146 | |
| 147 | static MACHINE_CONFIG_START( gtfore, iteagle_state ) |
| 148 | |
| 149 | /* basic machine hardware */ |
| 150 | MCFG_CPU_ADD("maincpu", VR4310LE, 166666666) |
| 151 | MCFG_CPU_CONFIG(r4310_config) |
| 152 | MCFG_CPU_PROGRAM_MAP(main_map) |
| 153 | |
| 154 | MCFG_MACHINE_START(gtfore) |
| 155 | MCFG_MACHINE_RESET(gtfore) |
| 156 | |
| 157 | MCFG_IDE_CONTROLLER_ADD("ide", ide_devices, "hdd", NULL, true) |
| 158 | MCFG_IDE_CONTROLLER_IRQ_HANDLER(DEVWRITELINE(DEVICE_SELF, iteagle_state, ide_interrupt)) |
| 159 | |
| 160 | /* video hardware */ |
| 161 | MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) |
| 162 | |
| 163 | MCFG_SCREEN_ADD("screen", RASTER) |
| 164 | MCFG_SCREEN_REFRESH_RATE(60) |
| 165 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) |
| 166 | MCFG_SCREEN_SIZE(320, 240) |
| 167 | MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) |
| 168 | MCFG_SCREEN_UPDATE_DRIVER(iteagle_state, screen_update_iteagle) |
| 169 | |
| 170 | MCFG_3DFX_VOODOO_BANSHEE_ADD("voodoo", STD_VOODOO_BANSHEE_CLOCK, iteagle_voodoo_intf) |
| 171 | MACHINE_CONFIG_END |
| 172 | |
| 173 | |
| 174 | |
| 175 | /************************************* |
| 176 | * |
| 177 | * ROM definition(s) |
| 178 | * |
| 179 | *************************************/ |
| 180 | |
| 181 | #define EAGLE_BIOS \ |
| 182 | ROM_REGION( 0x100000, "maincpu", 0 ) /* MIPS code */ \ |
| 183 | ROM_SYSTEM_BIOS( 0, "209", "bootrom 2.09" ) \ |
| 184 | ROM_LOAD( "eagle209.u15", 0x000000, 0x100000, CRC(e0fc1a16) SHA1(c9524f7ee6b95bd484a3b75bcbe2243cb273f84c) ) \ |
| 185 | ROM_SYSTEM_BIOS( 1, "208", "bootrom 2.08" ) \ |
| 186 | ROM_LOAD( "eagle208.u15", 0x000000, 0x100000, CRC(772f2864) SHA1(085063a4e34f29ebe3814823cd2c6323a050da36) ) \ |
| 187 | ROM_SYSTEM_BIOS( 2, "204", "bootrom 2.04" ) \ |
| 188 | ROM_LOAD( "eagle204.u15", 0x000000, 0x100000, CRC(f02e5523) SHA1(b979cf72a6992f1ecad9695a08c8d51e315ab537) ) \ |
| 189 | ROM_SYSTEM_BIOS( 3, "201", "bootrom 2.01" ) \ |
| 190 | ROM_LOAD( "eagle201.u15", 0x000000, 0x100000, CRC(e180442b) SHA1(4f50821fed5bcd786d989520aa2559d6c416fb1f) ) \ |
| 191 | ROM_SYSTEM_BIOS( 4, "107", "bootrom 1.07" ) \ |
| 192 | ROM_LOAD( "eagle107.u15", 0x000000, 0x100000, CRC(97a01fc9) SHA1(a421dbf4d097b2f50cc005d3cd0d63e562e03df8) ) \ |
| 193 | ROM_SYSTEM_BIOS( 5, "106a", "bootrom 1.06a" ) \ |
| 194 | ROM_LOAD( "eagle106a.u15", 0x000000, 0x100000, CRC(9c79b7ad) SHA1(ccf1c86e79d65bee30f399e0fa33a7839570d93b) ) \ |
| 195 | ROM_SYSTEM_BIOS( 6, "106", "bootrom 1.06" ) \ |
| 196 | ROM_LOAD( "eagle106.u15", 0x000000, 0x100000, CRC(56bc193d) SHA1(e531d208ef27f777d0784414885f390d1be654b9) ) \ |
| 197 | ROM_SYSTEM_BIOS( 7, "105", "bootrom 1.05" ) \ |
| 198 | ROM_LOAD( "eagle105.u15", 0x000000, 0x100000, CRC(3870dbe0) SHA1(09be2d86c7259cd81d945c757044b167a76f30db) ) \ |
| 199 | ROM_SYSTEM_BIOS( 8, "103", "bootrom 1.03" ) \ |
| 200 | ROM_LOAD( "eagle103.u15", 0x000000, 0x100000, CRC(c35f4cf2) SHA1(45301c18c7f8f78754c8ad60ea4d2da5a7dc55fb) ) \ |
| 201 | ROM_SYSTEM_BIOS( 9, "101", "bootrom 1.01" ) \ |
| 202 | ROM_LOAD( "eagle101.u15", 0x000000, 0x100000, CRC(2600bc2b) SHA1(c4b89e69c51e4a3bb1874407c4d30b6caed4f396) ) |
| 203 | |
| 204 | ROM_START( iteagle ) |
| 205 | EAGLE_BIOS |
| 206 | |
| 207 | DISK_REGION( "drive_0" ) |
| 208 | ROM_END |
| 209 | |
| 210 | ROM_START( gtfore04 ) |
| 211 | EAGLE_BIOS |
| 212 | |
| 213 | DISK_REGION( "drive_0" ) |
| 214 | DISK_IMAGE( "gt2004", 0, SHA1(739a52d6ce13bb6ac7a543ee0e8086fb66be19b9) ) |
| 215 | ROM_END |
| 216 | |
| 217 | ROM_START( gtfore05 ) |
| 218 | EAGLE_BIOS |
| 219 | |
| 220 | DISK_REGION( "drive_0" ) |
| 221 | DISK_IMAGE( "gt2005", 0, SHA1(d8de569d8cf97b5aaada10ce896eb3c75f1b37f1) ) |
| 222 | ROM_END |
| 223 | |
| 224 | DRIVER_INIT_MEMBER(iteagle_state, iteagle) |
| 225 | { |
| 226 | } |
| 227 | |
| 228 | /************************************* |
| 229 | * |
| 230 | * Game driver(s) |
| 231 | * |
| 232 | *************************************/ |
| 233 | |
| 234 | GAME( 2000, iteagle, 0, gtfore, gtfore, iteagle_state, iteagle, ROT0, "Incredible Technologies", "Eagle BIOS", GAME_IS_BIOS_ROOT ) |
| 235 | GAME( 2003, gtfore04, iteagle, gtfore, gtfore, iteagle_state, iteagle, ROT0, "Incredible Technologies", "Golden Tee Fore! 2004", GAME_NOT_WORKING | GAME_NO_SOUND ) |
| 236 | GAME( 2004, gtfore05, iteagle, gtfore, gtfore, iteagle_state, iteagle, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005", GAME_NOT_WORKING | GAME_NO_SOUND ) |
| 237 | |