Previous 199869 Revisions Next

r44546 Thursday 28th January, 2016 at 16:02:00 UTC by Ted Green
Carnival King now working
[src/mame/drivers]iteagle.cpp
[src/mame/machine]iteagle_fpga.cpp iteagle_fpga.h

trunk/src/mame/drivers/iteagle.cpp
r253057r253058
179179
180180static MACHINE_CONFIG_DERIVED( gtfore01, iteagle )
181181   MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
182   MCFG_ITEAGLE_FPGA_INIT(0x01000401, 0x0b0b0b)
182   MCFG_ITEAGLE_FPGA_INIT(0x00000401, 0x0b0b0b)
183183   MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
184184   MCFG_ITEAGLE_EEPROM_INIT(0x0401, 0x7)
185185MACHINE_CONFIG_END
r253057r253058
187187static MACHINE_CONFIG_DERIVED( gtfore02, iteagle )
188188   MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
189189   MCFG_ITEAGLE_FPGA_INIT(0x01000402, 0x020201)
190   MCFG_DEVICE_MODIFY(":pci:0a.0")
190   MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
191191   MCFG_ITEAGLE_EEPROM_INIT(0x0402, 0x7)
192192MACHINE_CONFIG_END
193193
r253057r253058
215215static MACHINE_CONFIG_DERIVED( gtfore06, iteagle )
216216   MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
217217   MCFG_ITEAGLE_FPGA_INIT(0x01000406, 0x0c0b0d)
218   MCFG_DEVICE_MODIFY(":pci:0a.0")
218   MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
219219   MCFG_ITEAGLE_EEPROM_INIT(0x0406, 0x9);
220220MACHINE_CONFIG_END
221221
222222static MACHINE_CONFIG_DERIVED( carnking, iteagle )
223223   MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
224   MCFG_ITEAGLE_FPGA_INIT(0x01000603, 0x0c0b0d)
224   MCFG_ITEAGLE_FPGA_INIT(0x01000a01, 0x0e0a0a)
225225   MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
226   MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9)
226   MCFG_ITEAGLE_EEPROM_INIT(0x0a01, 0x9)
227227MACHINE_CONFIG_END
228228
229229static MACHINE_CONFIG_DERIVED( bbhsc, iteagle )
230230   MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
231   MCFG_ITEAGLE_FPGA_INIT(0x01000600, 0x0c0a0a)
231   MCFG_ITEAGLE_FPGA_INIT(0x02000600, 0x0c0a0a)
232232   MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
233   MCFG_ITEAGLE_EEPROM_INIT(0x0600, 0x9)
233   MCFG_ITEAGLE_EEPROM_INIT(0x0000, 0x7)
234234MACHINE_CONFIG_END
235235
236236static MACHINE_CONFIG_DERIVED( bbhcotw, iteagle )
237237   MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
238238   MCFG_ITEAGLE_FPGA_INIT(0x02000603, 0x080704)
239   MCFG_DEVICE_MODIFY(":pci:0a.0")
239   MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
240240   MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9)
241241MACHINE_CONFIG_END
242242
r253057r253058
331331
332332INPUT_PORTS_END
333333
334static INPUT_PORTS_START( bbhcotw )
334static INPUT_PORTS_START( bbh )
335335   PORT_INCLUDE( iteagle )
336336
337337   PORT_MODIFY("IN1")
r253057r253058
557557
558558GAME( 2000, iteagle,          0,  iteagle,  iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT )
559559GAME( 1998, virtpool,   iteagle,  virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_NOT_WORKING ) // random lockups on loading screens
560GAME( 2002, carnking,   iteagle,  carnking, iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_NOT_WORKING )
560GAME( 2002, carnking,   iteagle,  carnking, bbh,  driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", 0 )
561561GAME( 2000, gtfore01,   iteagle,  gtfore01, iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", 0 )
562562GAME( 2001, gtfore02,   iteagle,  gtfore02, iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", 0 )
563563GAME( 2002, gtfore03,   iteagle,  gtfore03, iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.10)", 0 )
r253057r253058
569569GAME( 2004, gtfore05b,  gtfore05, gtfore05, iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", 0 )
570570GAME( 2004, gtfore05c,  gtfore05, gtfore05, iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", 0 )
571571GAME( 2005, gtfore06,   iteagle,  gtfore06, iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", 0 )
572GAME( 2002, bbhsc,      iteagle,  bbhsc,    iteagle,  driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING ) // doesn't boot
573GAME( 2006, bbhcotw,    iteagle,  bbhcotw,  bbhcotw,  driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING ) // random lockups
572GAME( 2002, bbhsc,      iteagle,  bbhsc,    bbh,  driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING ) // doesn't boot
573GAME( 2006, bbhcotw,    iteagle,  bbhcotw,  bbh,  driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", MACHINE_NOT_WORKING ) // random lockups
trunk/src/mame/machine/iteagle_fpga.cpp
r253057r253058
44#include "coreutil.h"
55
66#define LOG_FPGA            (0)
7#define LOG_SERIAL          (0)
78#define LOG_RTC             (0)
89#define LOG_RAM             (0)
910#define LOG_EEPROM          (0)
r253057r253058
8081   m_serial_str.clear();
8182   m_serial_idx = 0;
8283   m_serial_data = false;
84   memset(m_serial_com0, 0, sizeof(m_serial_com0));
8385   memset(m_serial_com1, 0, sizeof(m_serial_com1));
8486   memset(m_serial_com2, 0, sizeof(m_serial_com2));
8587   memset(m_serial_com3, 0, sizeof(m_serial_com3));
86   memset(m_serial_com4, 0, sizeof(m_serial_com4));
88   m_serial_com0[0] = 0x2c;
8789   m_serial_com1[0] = 0x2c;
8890   m_serial_com2[0] = 0x2c;
8991   m_serial_com3[0] = 0x2c;
90   m_serial_com4[0] = 0x2c;
9192}
9293
9394void iteagle_fpga_device::update_sequence(UINT32 data)
r253057r253058
130131      val1 = ((m_seq & 0x2)<<6) | ((m_seq & 0x4)<<4) | ((m_seq & 0x8)<<2) | ((m_seq & 0x10)<<0)
131132            | ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4) | ((m_seq & 0x80)>>6) | ((m_seq & 0x100)>>8);
132133      m_seq = (m_seq>>8) | ((feed&0xff)<<16);
133      //m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1)&0xFF);
134134      m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
135135   } else if (data & 0x2) {
136136      val1 = ((m_seq & 0x2)<<1) | ((m_seq & 0x4)>>1) | ((m_seq & 0x8)>>3);
137137      m_seq_rem1 = ((m_seq & 0x10)) | ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4);
138      //m_seq_rem2 = ((m_seq & 0x80)>>1) | ((m_seq & 0x100)>>3) | ((m_seq & 0x200)>>5);
139138      m_seq = (m_seq>>6) | ((feed&0x3f)<<18);
140139      m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF);
141140   } else {
r253057r253058
197196            logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
198197         break;
199198      case 0x0c/4: // 1d = modem byte
200         result = (result & 0xFFFF0000) | ((m_serial_com2[m_serial_idx]&0xff)<<8) | (m_serial_com1[m_serial_idx]&0xff);
199         result = (result & 0xFFFF0000) | ((m_serial_com1[m_serial_idx]&0xff)<<8) | (m_serial_com0[m_serial_idx]&0xff);
201200         if (ACCESSING_BITS_0_15) {
202201            m_serial_data = false;
203202            m_serial_idx = 0;
204203         }
205         if (LOG_FPGA)
204         if (0 && LOG_FPGA)
206205            logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask);
207206         break;
208207      case 0x1c/4: // 1d = modem byte
209         result = (result & 0xFFFF0000) | ((m_serial_com4[m_serial_idx]&0xff)<<8) | (m_serial_com3[m_serial_idx]&0xff);
208         result = (result & 0xFFFF0000) | ((m_serial_com3[m_serial_idx]&0xff)<<8) | (m_serial_com2[m_serial_idx]&0xff);
210209         if (ACCESSING_BITS_0_15) {
211210            m_serial_data = false;
212211            m_serial_idx = 0;
r253057r253058
233232            if ((m_version & 0xff00) == 0x0200)
234233               update_sequence_eg1(data & 0xff);
235234            else
236            // ATMEL Chip access.  Returns version id's when bit 7 is set.
237            update_sequence(data & 0xff);
235               // ATMEL Chip access.  Returns version id's when bit 7 is set.
236               update_sequence(data & 0xff);
238237            if (0 && LOG_FPGA)
239238                  logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
240239         }
r253057r253058
242241         if (ACCESSING_BITS_24_31 && (data & 0x01000000)) {
243242            m_cpu->set_input_line(m_irq_num, CLEAR_LINE);
244243            // Not sure what value to use here, needed for lightgun
245            m_timer->adjust(attotime::from_hz(25));
244            m_timer->adjust(attotime::from_hz(59));
246245            if (LOG_FPGA)
247246                  logerror("%s:fpga_w offset %04X = %08X & %08X Clearing interrupt(%i)\n", machine().describe_context(), offset*4, data, mem_mask, m_irq_num);
248247         } else {
r253057r253058
269268            if (!m_serial_data) {
270269               m_serial_idx = data&0xf;
271270            } else {
272               m_serial_com1[m_serial_idx] = data&0xff;
271               m_serial_com0[m_serial_idx] = data&0xff;
273272               m_serial_idx = 0;
274273            }
275274            m_serial_data = !m_serial_data;
r253057r253058
278277            if (!m_serial_data) {
279278               m_serial_idx = (data&0x0f00)>>8;
280279            } else {
281               m_serial_com2[m_serial_idx] = (data&0xff00)>>8;
280               m_serial_com1[m_serial_idx] = (data&0xff00)>>8;
282281            }
283282            m_serial_data = !m_serial_data;
284283         }
285284         if (ACCESSING_BITS_16_23) {
286285            if (m_serial_str.size()==0)
287               m_serial_str = "com1: ";
286               m_serial_str = "com0: ";
288287            m_serial_str += (data>>16)&0xff;
289288            if (((data>>16)&0xff)==0xd) {
289               if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
290290               osd_printf_debug("%s\n", m_serial_str.c_str());
291291               m_serial_str.clear();
292292            }
293293         }
294294         if (ACCESSING_BITS_24_31) {
295295            if (m_serial_str.size()==0)
296               m_serial_str = "com2: ";
296               m_serial_str = "com1: ";
297297            m_serial_str += (data>>24)&0xff;
298298            if (1 || ((data>>24)&0xff)==0xd) {
299               if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
299300               osd_printf_debug("%s\n", m_serial_str.c_str());
300301               m_serial_str.clear();
301302            }
302303         }
303         if (LOG_FPGA)
304         if (0 && LOG_FPGA)
304305               logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask);
305306         break;
306307      case 0x1c/4:
r253057r253058
308309            if (!m_serial_data) {
309310               m_serial_idx = data&0xf;
310311            } else {
311               m_serial_com3[m_serial_idx] = data&0xff;
312               m_serial_com2[m_serial_idx] = data&0xff;
312313               m_serial_idx = 0;
313314            }
314315            m_serial_data = !m_serial_data;
r253057r253058
317318            if (!m_serial_data) {
318319               m_serial_idx = (data&0x0f00)>>8;
319320            } else {
320               m_serial_com4[m_serial_idx] = (data&0xff00)>>8;
321               m_serial_com3[m_serial_idx] = (data&0xff00)>>8;
321322            }
322323            m_serial_data = !m_serial_data;
323324         }
324325         if (ACCESSING_BITS_16_23) {
325326            if (m_serial_str.size()==0)
326               m_serial_str = "com3: ";
327               m_serial_str = "com2: ";
327328            m_serial_str += (data>>16)&0xff;
328329            if (1 || ((data>>16)&0xff)==0xd) {
330               if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
329331               osd_printf_debug("%s\n", m_serial_str.c_str());
330332               m_serial_str.clear();
331333            }
332334         }
333335         if (ACCESSING_BITS_24_31) {
334336            if (m_serial_str.size()==0)
335               m_serial_str = "com4: ";
337               m_serial_str = "com3: ";
336338            m_serial_str += (data>>24)&0xff;
337339            if (((data>>24)&0xff)==0xd) {
340               if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str());
338341               osd_printf_debug("%s\n", m_serial_str.c_str());
339342               m_serial_str.clear();
340343            }
r253057r253058
649652{
650653   pci_device::device_reset();
651654   memset(m_ctrl_regs, 0, sizeof(m_ctrl_regs));
652   m_ctrl_regs[0x10/4] =  0x00000000; // 0x6=No SIMM, 0x2, 0x1, 0x0 = SIMM .  Top 16 bits are compared to 0x3.
655   m_ctrl_regs[0x10/4] =  0x00070000; // 0x6=No SIMM, 0x2, 0x1, 0x0 = SIMM .  Top 16 bits are compared to 0x3. Bit 0 might be lan chip present.
653656   memset(m_rtc_regs, 0, sizeof(m_rtc_regs));
654657   m_rtc_regs[0xa] = 0x20; // 32.768 MHz
655658   m_rtc_regs[0xb] = 0x02; // 24-hour format
trunk/src/mame/machine/iteagle_fpga.h
r253057r253058
6363   std::string m_serial_str;
6464   UINT8 m_serial_idx;
6565   bool  m_serial_data;
66   UINT8 m_serial_com0[0x10];
6667   UINT8 m_serial_com1[0x10];
6768   UINT8 m_serial_com2[0x10];
6869   UINT8 m_serial_com3[0x10];
69   UINT8 m_serial_com4[0x10];
7070
7171   UINT32 m_version;
7272   UINT32 m_seq_init;


Previous 199869 Revisions Next


© 1997-2024 The MAME Team