From 9d3f9aa4ad47dcfcc9d77b92d4ca5cc71d212406 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Thu, 28 Jan 2016 11:31:53 +1100 Subject: [PATCH 01/17] pulsarlb: added extra bios --- src/mame/drivers/pulsar.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mame/drivers/pulsar.cpp b/src/mame/drivers/pulsar.cpp index 48030adce83..eda3535ee2d 100644 --- a/src/mame/drivers/pulsar.cpp +++ b/src/mame/drivers/pulsar.cpp @@ -254,7 +254,10 @@ MACHINE_CONFIG_END /* ROM definition */ ROM_START( pulsarlb ) ROM_REGION( 0x10800, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD( "mp7a.bin", 0x10000, 0x800, CRC(726b8a19) SHA1(43b2af84d5622c1f67584c501b730acf002a6113) ) + ROM_SYSTEM_BIOS(0, "mon7", "MP7A") + ROMX_LOAD( "mp7a.bin", 0x10000, 0x800, CRC(726b8a19) SHA1(43b2af84d5622c1f67584c501b730acf002a6113), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "mon6", "LBOOT6") // Blank screen until floppy boots + ROMX_LOAD( "lboot6.rom", 0x10000, 0x800, CRC(3bca9096) SHA1(ff99288e51a9e832785ce8e3ab5a9452b1064231), ROM_BIOS(2)) ROM_END /* Driver */ From 664196e04755d8f0f3ef06229a7afbe0d143542c Mon Sep 17 00:00:00 2001 From: Ted Green Date: Thu, 28 Jan 2016 09:01:32 -0700 Subject: [PATCH 02/17] Carnival King now working --- src/mame/drivers/iteagle.cpp | 24 ++++++++--------- src/mame/machine/iteagle_fpga.cpp | 43 +++++++++++++++++-------------- src/mame/machine/iteagle_fpga.h | 2 +- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/src/mame/drivers/iteagle.cpp b/src/mame/drivers/iteagle.cpp index 2ff0a30f1bb..ff6b387bc45 100644 --- a/src/mame/drivers/iteagle.cpp +++ b/src/mame/drivers/iteagle.cpp @@ -179,7 +179,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gtfore01, iteagle ) MCFG_DEVICE_MODIFY(PCI_ID_FPGA) - MCFG_ITEAGLE_FPGA_INIT(0x01000401, 0x0b0b0b) + MCFG_ITEAGLE_FPGA_INIT(0x00000401, 0x0b0b0b) MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) MCFG_ITEAGLE_EEPROM_INIT(0x0401, 0x7) MACHINE_CONFIG_END @@ -187,7 +187,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gtfore02, iteagle ) MCFG_DEVICE_MODIFY(PCI_ID_FPGA) MCFG_ITEAGLE_FPGA_INIT(0x01000402, 0x020201) - MCFG_DEVICE_MODIFY(":pci:0a.0") + MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) MCFG_ITEAGLE_EEPROM_INIT(0x0402, 0x7) MACHINE_CONFIG_END @@ -215,28 +215,28 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( gtfore06, iteagle ) MCFG_DEVICE_MODIFY(PCI_ID_FPGA) MCFG_ITEAGLE_FPGA_INIT(0x01000406, 0x0c0b0d) - MCFG_DEVICE_MODIFY(":pci:0a.0") + MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) MCFG_ITEAGLE_EEPROM_INIT(0x0406, 0x9); MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( carnking, iteagle ) MCFG_DEVICE_MODIFY(PCI_ID_FPGA) - MCFG_ITEAGLE_FPGA_INIT(0x01000603, 0x0c0b0d) + MCFG_ITEAGLE_FPGA_INIT(0x01000a01, 0x0e0a0a) MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) - MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9) + MCFG_ITEAGLE_EEPROM_INIT(0x0a01, 0x9) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( bbhsc, iteagle ) MCFG_DEVICE_MODIFY(PCI_ID_FPGA) - MCFG_ITEAGLE_FPGA_INIT(0x01000600, 0x0c0a0a) + MCFG_ITEAGLE_FPGA_INIT(0x02000600, 0x0c0a0a) MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) - MCFG_ITEAGLE_EEPROM_INIT(0x0600, 0x9) + 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_DEVICE_MODIFY(":pci:0a.0") + MCFG_DEVICE_MODIFY(PCI_ID_EEPROM) MCFG_ITEAGLE_EEPROM_INIT(0x0603, 0x9) MACHINE_CONFIG_END @@ -331,7 +331,7 @@ static INPUT_PORTS_START( virtpool ) INPUT_PORTS_END -static INPUT_PORTS_START( bbhcotw ) +static INPUT_PORTS_START( bbh ) PORT_INCLUDE( iteagle ) PORT_MODIFY("IN1") @@ -557,7 +557,7 @@ ROM_END GAME( 2000, iteagle, 0, iteagle, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT ) GAME( 1998, virtpool, iteagle, virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", MACHINE_NOT_WORKING ) // random lockups on loading screens -GAME( 2002, carnking, iteagle, carnking, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_NOT_WORKING ) +GAME( 2002, carnking, iteagle, carnking, bbh, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", 0 ) GAME( 2000, gtfore01, iteagle, gtfore01, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", 0 ) GAME( 2001, gtfore02, iteagle, gtfore02, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", 0 ) GAME( 2002, gtfore03, iteagle, gtfore03, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.10)", 0 ) @@ -569,5 +569,5 @@ GAME( 2004, gtfore05a, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "I GAME( 2004, gtfore05b, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", 0 ) GAME( 2004, gtfore05c, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", 0 ) GAME( 2005, gtfore06, iteagle, gtfore06, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", 0 ) -GAME( 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 -GAME( 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 +GAME( 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 +GAME( 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 diff --git a/src/mame/machine/iteagle_fpga.cpp b/src/mame/machine/iteagle_fpga.cpp index 9fa7cef6da8..40e1a9bb19e 100644 --- a/src/mame/machine/iteagle_fpga.cpp +++ b/src/mame/machine/iteagle_fpga.cpp @@ -4,6 +4,7 @@ #include "coreutil.h" #define LOG_FPGA (0) +#define LOG_SERIAL (0) #define LOG_RTC (0) #define LOG_RAM (0) #define LOG_EEPROM (0) @@ -80,14 +81,14 @@ void iteagle_fpga_device::device_reset() m_serial_str.clear(); m_serial_idx = 0; m_serial_data = false; + memset(m_serial_com0, 0, sizeof(m_serial_com0)); memset(m_serial_com1, 0, sizeof(m_serial_com1)); memset(m_serial_com2, 0, sizeof(m_serial_com2)); memset(m_serial_com3, 0, sizeof(m_serial_com3)); - memset(m_serial_com4, 0, sizeof(m_serial_com4)); + m_serial_com0[0] = 0x2c; m_serial_com1[0] = 0x2c; m_serial_com2[0] = 0x2c; m_serial_com3[0] = 0x2c; - m_serial_com4[0] = 0x2c; } void iteagle_fpga_device::update_sequence(UINT32 data) @@ -130,12 +131,10 @@ void iteagle_fpga_device::update_sequence_eg1(UINT32 data) val1 = ((m_seq & 0x2)<<6) | ((m_seq & 0x4)<<4) | ((m_seq & 0x8)<<2) | ((m_seq & 0x10)<<0) | ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4) | ((m_seq & 0x80)>>6) | ((m_seq & 0x100)>>8); m_seq = (m_seq>>8) | ((feed&0xff)<<16); - //m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1)&0xFF); m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF); } else if (data & 0x2) { val1 = ((m_seq & 0x2)<<1) | ((m_seq & 0x4)>>1) | ((m_seq & 0x8)>>3); m_seq_rem1 = ((m_seq & 0x10)) | ((m_seq & 0x20)>>2) | ((m_seq & 0x40)>>4); - //m_seq_rem2 = ((m_seq & 0x80)>>1) | ((m_seq & 0x100)>>3) | ((m_seq & 0x200)>>5); m_seq = (m_seq>>6) | ((feed&0x3f)<<18); m_fpga_regs[offset] = (m_fpga_regs[offset]&0xFFFFFF00) | ((val1 + m_seq_rem1 + m_seq_rem2)&0xFF); } else { @@ -197,16 +196,16 @@ READ32_MEMBER( iteagle_fpga_device::fpga_r ) logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask); break; case 0x0c/4: // 1d = modem byte - result = (result & 0xFFFF0000) | ((m_serial_com2[m_serial_idx]&0xff)<<8) | (m_serial_com1[m_serial_idx]&0xff); + result = (result & 0xFFFF0000) | ((m_serial_com1[m_serial_idx]&0xff)<<8) | (m_serial_com0[m_serial_idx]&0xff); if (ACCESSING_BITS_0_15) { m_serial_data = false; m_serial_idx = 0; } - if (LOG_FPGA) + if (0 && LOG_FPGA) logerror("%s:fpga_r offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, result, mem_mask); break; case 0x1c/4: // 1d = modem byte - result = (result & 0xFFFF0000) | ((m_serial_com4[m_serial_idx]&0xff)<<8) | (m_serial_com3[m_serial_idx]&0xff); + result = (result & 0xFFFF0000) | ((m_serial_com3[m_serial_idx]&0xff)<<8) | (m_serial_com2[m_serial_idx]&0xff); if (ACCESSING_BITS_0_15) { m_serial_data = false; m_serial_idx = 0; @@ -233,8 +232,8 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w ) if ((m_version & 0xff00) == 0x0200) update_sequence_eg1(data & 0xff); else - // ATMEL Chip access. Returns version id's when bit 7 is set. - update_sequence(data & 0xff); + // ATMEL Chip access. Returns version id's when bit 7 is set. + update_sequence(data & 0xff); if (0 && LOG_FPGA) logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask); } @@ -242,7 +241,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w ) if (ACCESSING_BITS_24_31 && (data & 0x01000000)) { m_cpu->set_input_line(m_irq_num, CLEAR_LINE); // Not sure what value to use here, needed for lightgun - m_timer->adjust(attotime::from_hz(25)); + m_timer->adjust(attotime::from_hz(59)); if (LOG_FPGA) logerror("%s:fpga_w offset %04X = %08X & %08X Clearing interrupt(%i)\n", machine().describe_context(), offset*4, data, mem_mask, m_irq_num); } else { @@ -269,7 +268,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w ) if (!m_serial_data) { m_serial_idx = data&0xf; } else { - m_serial_com1[m_serial_idx] = data&0xff; + m_serial_com0[m_serial_idx] = data&0xff; m_serial_idx = 0; } m_serial_data = !m_serial_data; @@ -278,29 +277,31 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w ) if (!m_serial_data) { m_serial_idx = (data&0x0f00)>>8; } else { - m_serial_com2[m_serial_idx] = (data&0xff00)>>8; + m_serial_com1[m_serial_idx] = (data&0xff00)>>8; } m_serial_data = !m_serial_data; } if (ACCESSING_BITS_16_23) { if (m_serial_str.size()==0) - m_serial_str = "com1: "; + m_serial_str = "com0: "; m_serial_str += (data>>16)&0xff; if (((data>>16)&0xff)==0xd) { + if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str()); osd_printf_debug("%s\n", m_serial_str.c_str()); m_serial_str.clear(); } } if (ACCESSING_BITS_24_31) { if (m_serial_str.size()==0) - m_serial_str = "com2: "; + m_serial_str = "com1: "; m_serial_str += (data>>24)&0xff; if (1 || ((data>>24)&0xff)==0xd) { + if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str()); osd_printf_debug("%s\n", m_serial_str.c_str()); m_serial_str.clear(); } } - if (LOG_FPGA) + if (0 && LOG_FPGA) logerror("%s:fpga_w offset %04X = %08X & %08X\n", machine().describe_context(), offset*4, data, mem_mask); break; case 0x1c/4: @@ -308,7 +309,7 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w ) if (!m_serial_data) { m_serial_idx = data&0xf; } else { - m_serial_com3[m_serial_idx] = data&0xff; + m_serial_com2[m_serial_idx] = data&0xff; m_serial_idx = 0; } m_serial_data = !m_serial_data; @@ -317,24 +318,26 @@ WRITE32_MEMBER( iteagle_fpga_device::fpga_w ) if (!m_serial_data) { m_serial_idx = (data&0x0f00)>>8; } else { - m_serial_com4[m_serial_idx] = (data&0xff00)>>8; + m_serial_com3[m_serial_idx] = (data&0xff00)>>8; } m_serial_data = !m_serial_data; } if (ACCESSING_BITS_16_23) { if (m_serial_str.size()==0) - m_serial_str = "com3: "; + m_serial_str = "com2: "; m_serial_str += (data>>16)&0xff; if (1 || ((data>>16)&0xff)==0xd) { + if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str()); osd_printf_debug("%s\n", m_serial_str.c_str()); m_serial_str.clear(); } } if (ACCESSING_BITS_24_31) { if (m_serial_str.size()==0) - m_serial_str = "com4: "; + m_serial_str = "com3: "; m_serial_str += (data>>24)&0xff; if (((data>>24)&0xff)==0xd) { + if (LOG_SERIAL) logerror("%s\n", m_serial_str.c_str()); osd_printf_debug("%s\n", m_serial_str.c_str()); m_serial_str.clear(); } @@ -649,7 +652,7 @@ void iteagle_ide_device::device_reset() { pci_device::device_reset(); memset(m_ctrl_regs, 0, sizeof(m_ctrl_regs)); - m_ctrl_regs[0x10/4] = 0x00000000; // 0x6=No SIMM, 0x2, 0x1, 0x0 = SIMM . Top 16 bits are compared to 0x3. + 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. memset(m_rtc_regs, 0, sizeof(m_rtc_regs)); m_rtc_regs[0xa] = 0x20; // 32.768 MHz m_rtc_regs[0xb] = 0x02; // 24-hour format diff --git a/src/mame/machine/iteagle_fpga.h b/src/mame/machine/iteagle_fpga.h index 5d150e66116..fe5f9a76687 100644 --- a/src/mame/machine/iteagle_fpga.h +++ b/src/mame/machine/iteagle_fpga.h @@ -63,10 +63,10 @@ private: std::string m_serial_str; UINT8 m_serial_idx; bool m_serial_data; + UINT8 m_serial_com0[0x10]; UINT8 m_serial_com1[0x10]; UINT8 m_serial_com2[0x10]; UINT8 m_serial_com3[0x10]; - UINT8 m_serial_com4[0x10]; UINT32 m_version; UINT32 m_seq_init; From 688069fcf86036e0990e0beb8ab927baeede7ebc Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 28 Jan 2016 19:02:30 +0100 Subject: [PATCH 03/17] mmodular: removed gen32_oc custom MESS overclocked version of gen32_41 --- src/mame/drivers/mmodular.cpp | 26 +++----------------------- src/mame/mess.lst | 1 - 2 files changed, 3 insertions(+), 24 deletions(-) diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp index aa1b5b6a236..eb1e9b4d6d7 100644 --- a/src/mame/drivers/mmodular.cpp +++ b/src/mame/drivers/mmodular.cpp @@ -15,7 +15,6 @@ Vancouver 68020 12Mhz Genius 68030 V4.00 33.333 Mhz Genius 68030 V4.01 33.333 Mhz - Genius 68030 V4.01 33.333x2 Mhz (custom MESS overclocked version for higher ELO) Berlin Pro 68020 24.576 Mhz (not modular board, but otherwise close to milano) Berlin Pro (London) 68020 24.576 Mhz (not modular board, but otherwise close to milano) London 68030 V5.00k 33.333 Mhz (probably the Genius 3/4 update ROM) @@ -998,16 +997,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(polgar_state::timer_update_irq_academy) MACHINE_START_MEMBER(polgar_state,van32) { // patch LCD delay loop on the 68030 machines until waitstates and/or opcode timings are fixed in MAME core -// patches gen32 gen32_41 gen32_oc lond030 +// patches gen32 gen32_41 lond030 UINT8 *rom = memregion("maincpu")->base(); - if(rom[0x870] == 0x0c && rom[0x871] == 0x78) { - if (!strcmp(machine().system().name,"gen32_oc")) { - rom[0x870] = 0x6c; - } else { - rom[0x870] = 0x38; - } + if(rom[0x870] == 0x0c && rom[0x871] == 0x78) + rom[0x870] = 0x38; } } @@ -1692,15 +1687,6 @@ static MACHINE_CONFIG_START( gen32, polgar_state ) MCFG_NVRAM_ADD_0FILL("nvram") -MACHINE_CONFIG_END - -static MACHINE_CONFIG_DERIVED( gen32_oc, gen32 ) - MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_CLOCK( XTAL_33_333MHz * 2 ) - MCFG_DEVICE_REMOVE("int_timer") - MCFG_TIMER_DRIVER_ADD_PERIODIC("int_timer", polgar_state, timer_update_irq6, attotime::from_hz(500)) - - MACHINE_CONFIG_END static MACHINE_CONFIG_START( bpl32, polgar_state ) @@ -1851,11 +1837,6 @@ ROM_START( gen32_41 ) ROM_LOAD("gen32_41.bin", 0x00000, 0x40000,CRC(ea9938c0) SHA1(645cf0b5b831b48104ad6cec8d78c63dbb6a588c)) ROM_END -ROM_START( gen32_oc ) - ROM_REGION32_BE( 0x40000, "maincpu", 0 ) - ROM_LOAD("gen32_41.bin", 0x00000, 0x40000,CRC(ea9938c0) SHA1(645cf0b5b831b48104ad6cec8d78c63dbb6a588c)) -ROM_END - ROM_START( berlinp ) ROM_REGION32_BE( 0x40000, "maincpu", 0 ) ROM_LOAD("berlinp.bin", 0x00000, 0x40000,CRC(82FBAF6E) SHA1(729B7CEF3DFAECC4594A6178FC4BA6015AFA6202)) @@ -1904,7 +1885,6 @@ DRIVER_INIT_MEMBER(polgar_state,polgar) CONS( 1992, risc, 0, 0, risc, van16, driver_device, 0, "Saitek", "RISC2500", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) CONS( 1993, gen32, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.00", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) CONS( 1993, gen32_41, van16, 0, gen32, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) - CONS( 1993, gen32_oc, van16, 0, gen32_oc, gen32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Genius030 V4.01OC", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_UNOFFICIAL | MACHINE_CLICKABLE_ARTWORK ) CONS( 1994, berlinp, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro 68020", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) CONS( 1996, bpl32, van16, 0, bpl32, bpl32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Berlin Pro London Upgrade V5.00", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) CONS( 1996, lond020, van16, 0, van32, van32, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto London 68020 32 Bit", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/mess.lst b/src/mame/mess.lst index 48389c18b54..8bcee333384 100644 --- a/src/mame/mess.lst +++ b/src/mame/mess.lst @@ -2187,7 +2187,6 @@ van16 // 1991 Mephisto Vancouver 68000 van32 // 1991 Mephisto Vancouver 68020 gen32 // 1993 Mephisto Genius030 V4.00 gen32_41 // 1993 Mephisto Genius030 V4.01 -gen32_oc // 1993 Mephisto Genius030 V4.01OC berlinp // 1994 Mephisto Berlin Pro 68020 bpl32 // 1996 Mephisto Berlin Pro London Upgrade V5.00 lond020 // 1996 Mephisto London 68020 32 Bit From 681a5e48fe687ca61e2b0393a78ee87c6c8ffcef Mon Sep 17 00:00:00 2001 From: cracyc Date: Thu, 28 Jan 2016 12:18:48 -0600 Subject: [PATCH 04/17] i86: fix notes (nw) --- src/devices/cpu/i86/i86.txt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/devices/cpu/i86/i86.txt b/src/devices/cpu/i86/i86.txt index 39b54d6a8d0..fb27b8526fe 100644 --- a/src/devices/cpu/i86/i86.txt +++ b/src/devices/cpu/i86/i86.txt @@ -29,6 +29,7 @@ mov sreg, doesnot disable until next operation is executed 8086/8088 --------- "mov cs, " causes unconditional jump! +0xd6 is salc (sbb al,al) as all other intel x86-16 and -32 cpus 80C86/80C88 ----------- @@ -36,9 +37,10 @@ mov sreg, doesnot disable until next operation is executed 80186/80188 ----------- -integrated pic8259, pit8253, dma8253 (but not at standard pc addresses) +integrated pic, timer and dmac entirely incompatible with 8259, 825[3,4] and 82[3,5]7 additional instructions -"mov cs, " ? +#BR/bound/int 5, #UD/illegal instruction/int 6, #NM/coprocessor unavailable/int 7 support +"mov cs, " ignored (likely causes int 6) shift count anded with 0x1f 80188 @@ -52,6 +54,7 @@ although it is based on 80186 instruction set, some behaviours follow 8086 8080 emulation mode "mov cs, " ignored shift count not anded (acts like 8086) +0xd6 is xlat alias NEC 70116 (V30) --------------- @@ -69,11 +72,11 @@ no 8080 emulation mode NEC V40 ------- -pinout, integrated peripherals as 80186 +pinout, integrated peripherals 8259,54,37 clones at nonpc compatible addresses NEC V50 ------- -pinout, integrated peripherals as 80188 +pinout, integrated peripherals as v40 NEC V33? -------- @@ -92,9 +95,9 @@ v30? emulation mode (without 8080 emulation mode) 80286 ----- -80186 with additional instructions +80186 with additional instructions but no peripherals 24 bit address bus, -protected mode +protected mode selector/descriptor 80386 and later --------------- From b0cc7ab9e0985bf80cffad27fcd67f383573b688 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 28 Jan 2016 22:05:17 +0100 Subject: [PATCH 05/17] fidelz80: added VSC foreign language sets --- src/mame/drivers/fidelz80.cpp | 91 +++++++++++++++++++++++++++-------- src/mame/includes/fidelz80.h | 2 +- src/mame/mess.lst | 3 ++ 3 files changed, 75 insertions(+), 21 deletions(-) diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index 5f85a1e49a4..71f36d55537 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -598,7 +598,7 @@ PB.3 - violet wire PB.4 - white wire (and TSI BUSY line) PB.5 - selection jumper input (see below) PB.6 - TSI start line -PB.7 - TSI ROM D0 line +PB.7 - TSI ROM A12 line selection jumpers: @@ -1070,7 +1070,7 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w) { // d0-d3: select digits // d0-d7: select leds, input mux low bits - m_inp_mux = (m_inp_mux & 0x300) | data; + m_inp_mux = (m_inp_mux & ~0xff) | data; m_led_select = data; vsc_prepare_display(); } @@ -1081,7 +1081,8 @@ WRITE8_MEMBER(fidelz80_state::vsc_ppi_portc_w) READ8_MEMBER(fidelz80_state::vsc_pio_porta_r) { // d0-d7: multiplexed inputs - return read_inputs(10); + return read_inputs(11); + } READ8_MEMBER(fidelz80_state::vsc_pio_portb_r) @@ -1090,18 +1091,26 @@ READ8_MEMBER(fidelz80_state::vsc_pio_portb_r) // d4: TSI BUSY line ret |= (m_speech->busy_r()) ? 0 : 0x10; - + return ret; } WRITE8_MEMBER(fidelz80_state::vsc_pio_portb_w) { // d0,d1: input mux highest bits - m_inp_mux = (m_inp_mux & 0xff) | (data << 8 & 0x300); - + // d5: enable language switch + m_inp_mux = (m_inp_mux & ~0x700) | (data << 8 & 0x300) | (data << 5 & 0x400); + + //if (m_inp_mux & 0x400) debugger_break(machine()); + + // d7: TSI ROM A12 + + m_speech->force_update(); // update stream to now + m_speech_bank = data >> 7 & 1; + // d6: TSI START line m_speech->start_w(data >> 6 & 1); - + // d2: lower TSI volume m_speech->set_output_gain(0, (data & 4) ? 0.5 : 1.0); } @@ -1298,26 +1307,26 @@ static INPUT_PORTS_START( cc10 ) PORT_START("IN.4") PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_UNUSED) - PORT_START("LEVEL") // factory setting - PORT_CONFNAME( 0x80, 0x00, "PPI.B.7: Maximum Levels" ) - PORT_CONFSETTING( 0x00, "10" ) + PORT_START("LEVEL") // hardwired (VCC/GND?) + PORT_CONFNAME( 0x80, 0x00, "Maximum Levels" ) + PORT_CONFSETTING( 0x00, "10" ) // factory setting PORT_CONFSETTING( 0x80, "3" ) INPUT_PORTS_END static INPUT_PORTS_START( vcc ) PORT_INCLUDE( vcc_base ) - PORT_START("IN.4") // not consumer accessible - PORT_CONFNAME( 0x01, 0x00, "PCB Jumper: French" ) + PORT_START("IN.4") // PCB jumpers, not consumer accessible + PORT_CONFNAME( 0x01, 0x00, "Language: French" ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) - PORT_CONFNAME( 0x02, 0x00, "PCB Jumper: Spanish" ) + PORT_CONFNAME( 0x02, 0x00, "Language: Spanish" ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x02, DEF_STR( On ) ) - PORT_CONFNAME( 0x04, 0x00, "PCB Jumper: German" ) + PORT_CONFNAME( 0x04, 0x00, "Language: German" ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x04, DEF_STR( On ) ) - PORT_CONFNAME( 0x08, 0x00, "PCB Jumper: Special" ) + PORT_CONFNAME( 0x08, 0x00, "Language: Special" ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x08, DEF_STR( On ) ) INPUT_PORTS_END @@ -1326,7 +1335,7 @@ static INPUT_PORTS_START( vccfr ) PORT_INCLUDE( vcc ) PORT_MODIFY("IN.4") - PORT_CONFNAME( 0x01, 0x01, "PCB Jumper: French" ) + PORT_CONFNAME( 0x01, 0x01, "Language: French" ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x01, DEF_STR( On ) ) INPUT_PORTS_END @@ -1335,7 +1344,7 @@ static INPUT_PORTS_START( vccsp ) PORT_INCLUDE( vcc ) PORT_MODIFY("IN.4") - PORT_CONFNAME( 0x02, 0x02, "PCB Jumper: Spanish" ) + PORT_CONFNAME( 0x02, 0x02, "Language: Spanish" ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x02, DEF_STR( On ) ) INPUT_PORTS_END @@ -1344,7 +1353,7 @@ static INPUT_PORTS_START( vccg ) PORT_INCLUDE( vcc ) PORT_MODIFY("IN.4") - PORT_CONFNAME( 0x04, 0x04, "PCB Jumper: German" ) + PORT_CONFNAME( 0x04, 0x04, "Language: German" ) PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) PORT_CONFSETTING( 0x04, DEF_STR( On ) ) INPUT_PORTS_END @@ -1449,6 +1458,13 @@ static INPUT_PORTS_START( vsc ) PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S) PORT_BIT(0xc0, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START("IN.10") // hardwired (2 diodes) + PORT_CONFNAME( 0x03, 0x00, "Language" ) + PORT_CONFSETTING( 0x00, "English" ) + PORT_CONFSETTING( 0x01, "1" ) // todo: game dasm says it checks against 0/not0, 2, 3.. which language is which? + PORT_CONFSETTING( 0x02, "2" ) + PORT_CONFSETTING( 0x03, "3" ) INPUT_PORTS_END static INPUT_PORTS_START( vbrc ) @@ -1582,6 +1598,7 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state ) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("speech", S14001A, 25000) // R/C circuit, around 25khz + MCFG_S14001A_EXT_READ_HANDLER(READ8(fidelz80_state, vcc_speech_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) MACHINE_CONFIG_END @@ -1705,8 +1722,39 @@ ROM_START( vsc ) ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) ) ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) ) - ROM_REGION( 0x1000, "speech", 0 ) + ROM_REGION( 0x2000, "speech", 0 ) ROM_LOAD("101-32107.bin", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d) ) + ROM_RELOAD( 0x1000, 0x1000) +ROM_END + +ROM_START( vscsp ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) ) + ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) ) + ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) ) + + ROM_REGION( 0x2000, "speech", 0 ) + ROM_LOAD("vcc-spanish.bin", 0x0000, 0x2000, BAD_DUMP CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9) ) // taken from vcc/fexcelv, assume correct +ROM_END + +ROM_START( vscg ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) ) + ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) ) + ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) ) + + ROM_REGION( 0x2000, "speech", 0 ) + ROM_LOAD("vcc-german.bin", 0x0000, 0x2000, BAD_DUMP CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff) ) // taken from fexcelv, assume correct +ROM_END + +ROM_START( vscfr ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(c9c98490) SHA1(e6db883df088d60463e75db51433a4b01a3e7626) ) + ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(08a3577c) SHA1(69fe379d21a9d4b57c84c3832d7b3e7431eec341) ) + ROM_LOAD("101-32024.bin", 0x4000, 0x1000, CRC(2a078676) SHA1(db2f0aba7e8ac0f84a17bae7155210cdf0813afb) ) + + ROM_REGION( 0x2000, "speech", 0 ) + ROM_LOAD("vcc-french.bin", 0x0000, 0x2000, BAD_DUMP CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3) ) // taken from fexcelv, assume correct ROM_END @@ -1757,7 +1805,10 @@ COMP( 1980, uvcsp, vcc, 0, vcc, vccsp, driver_device, 0, "Fideli COMP( 1980, uvcg, vcc, 0, vcc, vccg, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) COMP( 1980, uvcfr, vcc, 0, vcc, vccfr, driver_device, 0, "Fidelity Electronics", "Advanced Voice Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) +COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (English)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) +COMP( 1980, vscsp, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (Spanish)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) +COMP( 1980, vscg, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (German)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) +COMP( 1980, vscfr, vsc, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (French)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK ) COMP( 1979, vbrc, 0, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) COMP( 1980, bridgec3, vbrc, 0, vbrc, vbrc, driver_device, 0, "Fidelity Electronics", "Voice Bridge Challenger III", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) diff --git a/src/mame/includes/fidelz80.h b/src/mame/includes/fidelz80.h index c9aea6bafc4..a27f4e7aabc 100644 --- a/src/mame/includes/fidelz80.h +++ b/src/mame/includes/fidelz80.h @@ -25,7 +25,7 @@ public: // devices/pointers required_device m_maincpu; - optional_ioport_array<10> m_inp_matrix; // max 10 + optional_ioport_array<11> m_inp_matrix; // max 11 optional_device m_speech; optional_region_ptr m_speech_rom; diff --git a/src/mame/mess.lst b/src/mame/mess.lst index 8bcee333384..b98dc063fd4 100644 --- a/src/mame/mess.lst +++ b/src/mame/mess.lst @@ -2153,6 +2153,9 @@ uvcsp bridgec3 vbrc vsc +vscg +vscfr +vscsp csc fscc12 fexcelv From cb1d7fe7fc942677c6aae668e283073f08a11199 Mon Sep 17 00:00:00 2001 From: hap Date: Thu, 28 Jan 2016 22:07:40 +0100 Subject: [PATCH 06/17] woop --- src/mame/drivers/mmodular.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/mmodular.cpp b/src/mame/drivers/mmodular.cpp index eb1e9b4d6d7..09e83e6dcf6 100644 --- a/src/mame/drivers/mmodular.cpp +++ b/src/mame/drivers/mmodular.cpp @@ -1001,7 +1001,7 @@ MACHINE_START_MEMBER(polgar_state,van32) UINT8 *rom = memregion("maincpu")->base(); - if(rom[0x870] == 0x0c && rom[0x871] == 0x78) + if(rom[0x870] == 0x0c && rom[0x871] == 0x78) { rom[0x870] = 0x38; } } From 361d32d37ffbe133760fcbfa314f60ccd4a8e8a8 Mon Sep 17 00:00:00 2001 From: dankan1890 Date: Fri, 29 Jan 2016 00:43:18 +0100 Subject: [PATCH 07/17] Small code cleanup: - corealloc.h: added macro definition for global_alloc (nothrow) memory allocation. - textbuf.cpp / wavwrite.cpp: removed pointless cast. - debugcmd.cpp / luaengine.cpp / render.cpp: avoid strlen calls in a loop. - diimage.cpp: simplified "device_image_interface::set_image_filename" function. - miscmenu.cpp / selgame.h / video.cpp(h): replaced int with bool where applicable. - ui.cpp: removed unused code. --- src/emu/debug/debugcmd.cpp | 5 +++-- src/emu/debug/textbuf.cpp | 6 +++--- src/emu/diimage.cpp | 26 ++++++++++++-------------- src/emu/luaengine.cpp | 2 +- src/emu/render.cpp | 3 ++- src/emu/sound/wavwrite.cpp | 2 +- src/emu/ui/miscmenu.cpp | 6 +++--- src/emu/ui/selgame.h | 2 +- src/emu/ui/ui.cpp | 3 +-- src/emu/video.cpp | 2 +- src/emu/video.h | 2 +- src/lib/util/corealloc.h | 2 ++ 12 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp index 4558413b2c3..7ad039806ea 100644 --- a/src/emu/debug/debugcmd.cpp +++ b/src/emu/debug/debugcmd.cpp @@ -2381,11 +2381,12 @@ static void execute_find(running_machine &machine, int ref, int params, const ch for (int i = 2; i < params; i++) { const char *pdata = param[i]; + size_t pdatalen = strlen(pdata) - 1; /* check for a string */ - if (pdata[0] == '"' && pdata[strlen(pdata) - 1] == '"') + if (pdata[0] == '"' && pdata[pdatalen] == '"') { - for (j = 1; j < strlen(pdata) - 1; j++) + for (j = 1; j < pdatalen; j++) { data_to_find[data_count] = pdata[j]; data_size[data_count++] = 1; diff --git a/src/emu/debug/textbuf.cpp b/src/emu/debug/textbuf.cpp index e7daf96571a..476fe6e1efc 100644 --- a/src/emu/debug/textbuf.cpp +++ b/src/emu/debug/textbuf.cpp @@ -86,12 +86,12 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines) text_buffer *text; /* allocate memory for the text buffer object */ - text = (text_buffer *)global_alloc(text_buffer); + text = global_alloc_nothrow(text_buffer); if (!text) return nullptr; /* allocate memory for the buffer itself */ - text->buffer = (char *)global_alloc_array(char, bytes); + text->buffer = global_alloc_array_nothrow(char, bytes); if (!text->buffer) { global_free(text); @@ -99,7 +99,7 @@ text_buffer *text_buffer_alloc(UINT32 bytes, UINT32 lines) } /* allocate memory for the lines array */ - text->lineoffs = (INT32 *)global_alloc_array(INT32, lines); + text->lineoffs = global_alloc_array_nothrow(INT32, lines); if (!text->lineoffs) { global_free_array(text->buffer); diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 392da316dbb..d33bdb1d78b 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -161,29 +161,27 @@ image_error_t device_image_interface::set_image_filename(const char *filename) zippath_parent(m_working_directory, filename); m_basename.assign(m_image_name); - int loc1 = m_image_name.find_last_of('\\'); - int loc2 = m_image_name.find_last_of('/'); - int loc3 = m_image_name.find_last_of(':'); - int loc = MAX(loc1,MAX(loc2,loc3)); - if (loc!=-1) { + size_t loc1 = m_image_name.find_last_of('\\'); + size_t loc2 = m_image_name.find_last_of('/'); + size_t loc3 = m_image_name.find_last_of(':'); + size_t loc = MAX(loc1,MAX(loc2, loc3)); + if (loc != -1) { if (loc == loc3) { // temp workaround for softlists now that m_image_name contains the part name too (e.g. list:gamename:cart) m_basename = m_basename.substr(0, loc); - std::string tmpstr = std::string(m_basename); - int tmploc = tmpstr.find_last_of(':'); - m_basename = m_basename.substr(tmploc + 1,loc-tmploc); + size_t tmploc = m_basename.find_last_of(':'); + m_basename = m_basename.substr(tmploc + 1, loc - tmploc); } else - m_basename = m_basename.substr(loc + 1, m_basename.length() - loc); + m_basename = m_basename.substr(loc + 1); } - m_basename_noext = m_basename.assign(m_basename); + m_basename_noext = m_basename; m_filetype = ""; loc = m_basename_noext.find_last_of('.'); - if (loc!=-1) { - m_basename_noext = m_basename_noext.substr(0,loc); - m_filetype = m_basename.assign(m_basename); - m_filetype = m_filetype.substr(loc + 1, m_filetype.length() - loc); + if (loc != -1) { + m_basename_noext = m_basename_noext.substr(0, loc); + m_filetype = m_basename.substr(loc + 1); } return IMAGE_ERROR_SUCCESS; diff --git a/src/emu/luaengine.cpp b/src/emu/luaengine.cpp index 733c99537c7..f1d12757ed7 100644 --- a/src/emu/luaengine.cpp +++ b/src/emu/luaengine.cpp @@ -1049,7 +1049,7 @@ void lua_engine::periodic_check() osd_lock_acquire(lock); if (msg.ready == 1) { lua_settop(m_lua_state, 0); - int status = luaL_loadbuffer(m_lua_state, msg.text.c_str(), strlen(msg.text.c_str()), "=stdin"); + int status = luaL_loadbuffer(m_lua_state, msg.text.c_str(), msg.text.length(), "=stdin"); if (incomplete(status)==0) /* cannot try to add lines? */ { if (status == LUA_OK) status = docall(0, LUA_MULTRET); diff --git a/src/emu/render.cpp b/src/emu/render.cpp index baa5aa8db1b..1f8e5d0be1f 100644 --- a/src/emu/render.cpp +++ b/src/emu/render.cpp @@ -1055,8 +1055,9 @@ int render_target::configured_view(const char *viewname, int targetindex, int nu if (strcmp(viewname, "auto") != 0) { // scan for a matching view name + size_t viewlen = strlen(viewname); for (view = view_by_index(viewindex = 0); view != nullptr; view = view_by_index(++viewindex)) - if (core_strnicmp(view->name(), viewname, strlen(viewname)) == 0) + if (core_strnicmp(view->name(), viewname, viewlen) == 0) break; } diff --git a/src/emu/sound/wavwrite.cpp b/src/emu/sound/wavwrite.cpp index 210b1bcc9d5..b535e91a675 100644 --- a/src/emu/sound/wavwrite.cpp +++ b/src/emu/sound/wavwrite.cpp @@ -18,7 +18,7 @@ wav_file *wav_open(const char *filename, int sample_rate, int channels) UINT16 align, temp16; /* allocate memory for the wav struct */ - wav = (wav_file *) global_alloc(wav_file); + wav = global_alloc(wav_file); if (!wav) return nullptr; diff --git a/src/emu/ui/miscmenu.cpp b/src/emu/ui/miscmenu.cpp index 1eaa9fe1366..9d96692a15a 100644 --- a/src/emu/ui/miscmenu.cpp +++ b/src/emu/ui/miscmenu.cpp @@ -434,9 +434,9 @@ void ui_menu_crosshair::populate() file_enumerator path(machine().options().crosshair_path()); const osd_directory_entry *dir; /* reset search flags */ - int using_default = false; - int finished = false; - int found = false; + bool using_default = false; + bool finished = false; + bool found = false; /* if we are using the default, then we just need to find the first in the list */ if (*(settings.name) == 0) diff --git a/src/emu/ui/selgame.h b/src/emu/ui/selgame.h index b5e6687c4f3..006f972b22b 100644 --- a/src/emu/ui/selgame.h +++ b/src/emu/ui/selgame.h @@ -31,7 +31,7 @@ private: // internal state enum { VISIBLE_GAMES_IN_LIST = 15 }; UINT8 m_error; - UINT8 m_rerandomize; + bool m_rerandomize; char m_search[40]; int m_matchlist[VISIBLE_GAMES_IN_LIST]; std::vector m_driverlist; diff --git a/src/emu/ui/ui.cpp b/src/emu/ui/ui.cpp index 3f2d252c107..e9a03243eae 100644 --- a/src/emu/ui/ui.cpp +++ b/src/emu/ui/ui.cpp @@ -236,7 +236,7 @@ ui_manager::ui_manager(running_machine &machine) m_handler_param = 0; m_single_step = false; m_showfps = false; - m_showfps_end = false; + m_showfps_end = 0; m_show_profiler = false; m_popup_text_end = 0; m_use_natural_keyboard = false; @@ -1503,7 +1503,6 @@ UINT32 ui_manager::handler_ingame(running_machine &machine, render_container *co // first draw the FPS counter if (machine.ui().show_fps_counter()) { - std::string tempstring; machine.ui().draw_text_full(container, machine.video().speed_text().c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_RIGHT, WRAP_WORD, DRAW_OPAQUE, ARGB_WHITE, ARGB_BLACK, nullptr, nullptr); } diff --git a/src/emu/video.cpp b/src/emu/video.cpp index 41fb5e1726e..d05a1b8327c 100644 --- a/src/emu/video.cpp +++ b/src/emu/video.cpp @@ -584,7 +584,7 @@ void video_manager::postload() // forward //------------------------------------------------- -inline int video_manager::effective_autoframeskip() const +inline bool video_manager::effective_autoframeskip() const { // if we're fast forwarding or paused, autoframeskip is disabled if (m_fastforward || machine().paused()) diff --git a/src/emu/video.h b/src/emu/video.h index 4938cf67f34..aef70a57f15 100644 --- a/src/emu/video.h +++ b/src/emu/video.h @@ -100,7 +100,7 @@ private: void postload(); // effective value helpers - int effective_autoframeskip() const; + bool effective_autoframeskip() const; int effective_frameskip() const; bool effective_throttle() const; diff --git a/src/lib/util/corealloc.h b/src/lib/util/corealloc.h index 4f0b961eb59..2c1df6dd46c 100644 --- a/src/lib/util/corealloc.h +++ b/src/lib/util/corealloc.h @@ -27,7 +27,9 @@ // global allocation helpers -- use these instead of new and delete #define global_alloc(_type) new _type +#define global_alloc_nothrow(_type) new (std::nothrow) _type #define global_alloc_array(_type, _num) new _type[_num] +#define global_alloc_array_nothrow(_type, _num) new (std::nothrow) _type[_num] #define global_free(_ptr) do { delete _ptr; } while (0) #define global_free_array(_ptr) do { delete[] _ptr; } while (0) From 1e8d53c167439502c84b8bd9b7108af7f99eb2b5 Mon Sep 17 00:00:00 2001 From: dankan1890 Date: Fri, 29 Jan 2016 00:47:01 +0100 Subject: [PATCH 08/17] wavwrite.cpp: call to nothrow allocation. --- src/emu/sound/wavwrite.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emu/sound/wavwrite.cpp b/src/emu/sound/wavwrite.cpp index b535e91a675..173962ea46c 100644 --- a/src/emu/sound/wavwrite.cpp +++ b/src/emu/sound/wavwrite.cpp @@ -18,7 +18,7 @@ wav_file *wav_open(const char *filename, int sample_rate, int channels) UINT16 align, temp16; /* allocate memory for the wav struct */ - wav = global_alloc(wav_file); + wav = global_alloc_nothrow(wav_file); if (!wav) return nullptr; From c4a66568e7fb1f5a55819974e69eb097bc7fe629 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 29 Jan 2016 01:16:42 +0100 Subject: [PATCH 09/17] make internal mousepointer(that big orange one) smaller and less jaggies --- src/emu/ui/ui.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/emu/ui/ui.cpp b/src/emu/ui/ui.cpp index 3f2d252c107..c741d31e970 100644 --- a/src/emu/ui/ui.cpp +++ b/src/emu/ui/ui.cpp @@ -183,7 +183,8 @@ static inline int is_breakable_char(unicode_char ch) CORE IMPLEMENTATION ***************************************************************************/ -static const UINT32 mouse_bitmap[] = { +static const UINT32 mouse_bitmap[32*32] = +{ 0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff, 0x09a46f30,0x81ac7c43,0x24af8049,0x00ad7d45,0x00a8753a,0x00a46f30,0x009f6725,0x009b611c,0x00985b14,0x0095560d,0x00935308,0x00915004,0x00904e02,0x008f4e01,0x008f4d00,0x008f4d00,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff, 0x00a16a29,0xa2aa783d,0xffbb864a,0xc0b0824c,0x5aaf7f48,0x09ac7b42,0x00a9773c,0x00a67134,0x00a26b2b,0x009e6522,0x009a5e19,0x00965911,0x0094550b,0x00925207,0x00915004,0x008f4e01,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff,0x00ffffff, @@ -457,7 +458,7 @@ void ui_manager::update_and_render(render_container *container) { float mouse_y=-1,mouse_x=-1; if (mouse_target->map_point_container(mouse_target_x, mouse_target_y, *container, mouse_x, mouse_y)) { - container->add_quad(mouse_x,mouse_y,mouse_x + 0.05f*container->manager().ui_aspect(container),mouse_y + 0.05f,UI_TEXT_COLOR,m_mouse_arrow_texture,PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); + container->add_quad(mouse_x,mouse_y,mouse_x + 0.02f*container->manager().ui_aspect(container),mouse_y + 0.02f,UI_TEXT_COLOR,m_mouse_arrow_texture,PRIMFLAG_ANTIALIAS(1)|PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA)); } } } From 8baa2b6b69c6183670b97026d4785a2afc05ae74 Mon Sep 17 00:00:00 2001 From: angelosa Date: Thu, 28 Jan 2016 23:33:46 +0100 Subject: [PATCH 10/17] overdriv.cpp: screen raw params. --- src/mame/drivers/overdriv.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index c611c2b32eb..d4feb91680c 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -297,10 +297,7 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(64*8, 40*8) - MCFG_SCREEN_VISIBLE_AREA(13*8, (64-13)*8-1, 0*8, 32*8-1 ) + MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4,384,0,305,264,0,224) MCFG_SCREEN_UPDATE_DRIVER(overdriv_state, screen_update_overdriv) MCFG_SCREEN_PALETTE("palette") From 2323219c5c7b80fefe78c79d14f80a5a1322446d Mon Sep 17 00:00:00 2001 From: angelosa Date: Thu, 28 Jan 2016 23:49:55 +0100 Subject: [PATCH 11/17] Added sound irq ack, removed hack (doesn't seem necessary) --- src/mame/drivers/overdriv.cpp | 17 +++++++++++++---- src/mame/includes/overdriv.h | 4 +--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index d4feb91680c..6af30811242 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -127,9 +127,10 @@ WRITE16_MEMBER(overdriv_state::cpuB_ctrl_w) WRITE16_MEMBER(overdriv_state::overdriv_soundirq_w) { - m_audiocpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE); + m_audiocpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); } + WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_x_w) { m_subcpu->set_input_line(5, HOLD_LINE); // likely wrong @@ -167,7 +168,7 @@ static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state ) AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq_x_w) ADDRESS_MAP_END -// HACK ALERT +#if UNUSED_FUNCTION WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w ) { m_k053246->k053246_word_w(space,offset,data,mem_mask); @@ -190,6 +191,7 @@ WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w ) //printf("%02x %04x %04x\n", offset, data, mem_mask); } +#endif static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state ) AM_RANGE(0x000000, 0x03ffff) AM_ROM @@ -197,17 +199,24 @@ static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state ) AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM //AM_DEVREADWRITE("k053250_1", k053250_device, ram_r, ram_w) AM_RANGE(0x100000, 0x10000f) AM_DEVREADWRITE("k053250_1", k053250_device, reg_r, reg_w) AM_RANGE(0x108000, 0x10800f) AM_DEVREADWRITE("k053250_2", k053250_device, reg_r, reg_w) - AM_RANGE(0x118000, 0x118fff) AM_RAM AM_SHARE("sprram") //AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA.. + AM_RANGE(0x118000, 0x118fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) // data gets copied to sprite chip with DMA.. AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r, cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */ - AM_RANGE(0x130000, 0x130007) AM_WRITE(overdriv_k053246_word_w) // AM_DEVWRITE("k053246", k053247_device, k053246_word_w) + AM_RANGE(0x130000, 0x130007) AM_DEVREADWRITE8("k053246", k053247_device, k053246_r,k053246_w,0xffff) AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x208000, 0x20bfff) AM_RAM AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) AM_RANGE(0x220000, 0x221fff) AM_DEVREAD("k053250_2", k053250_device, rom_r) ADDRESS_MAP_END +WRITE8_MEMBER(overdriv_state::sound_ack_w) +{ + m_audiocpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE); +} + static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state ) + AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_ack_w) + // 0x180 AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, read, write) AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("k053260_2", k053260_device, read, write) diff --git a/src/mame/includes/overdriv.h b/src/mame/includes/overdriv.h index ad0cceba7a7..21652d9f1c8 100644 --- a/src/mame/includes/overdriv.h +++ b/src/mame/includes/overdriv.h @@ -24,7 +24,6 @@ public: m_k053246(*this, "k053246"), m_k053251(*this, "k053251"), m_k053252(*this, "k053252"), - m_sprram(*this, "sprram"), m_screen(*this, "screen") { } @@ -45,13 +44,13 @@ public: required_device m_k053246; required_device m_k053251; required_device m_k053252; - required_shared_ptr m_sprram; required_device m_screen; DECLARE_WRITE16_MEMBER(eeprom_w); DECLARE_WRITE16_MEMBER(cpuA_ctrl_w); DECLARE_READ16_MEMBER(cpuB_ctrl_r); DECLARE_WRITE16_MEMBER(cpuB_ctrl_w); DECLARE_WRITE16_MEMBER(overdriv_soundirq_w); + DECLARE_WRITE8_MEMBER(sound_ack_w); DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_x_w); DECLARE_WRITE16_MEMBER(overdriv_cpuB_irq_y_w); virtual void machine_start() override; @@ -60,7 +59,6 @@ public: INTERRUPT_GEN_MEMBER(cpuB_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline); - DECLARE_WRITE16_MEMBER( overdriv_k053246_word_w ); K051316_CB_MEMBER(zoom_callback_1); K051316_CB_MEMBER(zoom_callback_2); K053246_CB_MEMBER(sprite_callback); From 96c5f17b7372865c855f6d8a1a81797cc89de505 Mon Sep 17 00:00:00 2001 From: angelosa Date: Thu, 28 Jan 2016 23:57:24 +0100 Subject: [PATCH 12/17] Seems to work fine like this, guess that crashing issue is caused by master irqs ... --- src/mame/drivers/overdriv.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index 6af30811242..bfe2fdee79a 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -83,8 +83,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline) INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt) { // this doesn't get turned on until the irq has happened? wrong irq? -// if (m_k053246->k053246_is_irq_enabled()) - m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong + if (m_k053246->k053246_is_irq_enabled()) + m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong } @@ -168,7 +168,7 @@ static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state ) AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq_x_w) ADDRESS_MAP_END -#if UNUSED_FUNCTION +#ifdef UNUSED_FUNCTION WRITE16_MEMBER( overdriv_state::overdriv_k053246_word_w ) { m_k053246->k053246_word_w(space,offset,data,mem_mask); From 4ad98de1dcdd989df43d6621662224534beb53d8 Mon Sep 17 00:00:00 2001 From: angelosa Date: Fri, 29 Jan 2016 02:01:14 +0100 Subject: [PATCH 13/17] Fixed gearbox input, flipped around irqs for testing. --- src/mame/drivers/overdriv.cpp | 28 ++++++++++++++++++++-------- src/mame/includes/overdriv.h | 3 ++- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index bfe2fdee79a..be7f0dcbadf 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -70,21 +70,32 @@ WRITE16_MEMBER(overdriv_state::eeprom_w) TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline) { + const int timer_threshold = 160; int scanline = param; - - /* TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?) */ - /* this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow */ - if(scanline == 256 && m_screen->frame_number() & 1) // vblank-out irq + + m_fake_timer ++; + + // TODO: irqs routines are TOO slow right now, it ends up firing spurious irqs for whatever reason (shared ram fighting?) + // this is a temporary solution to get rid of deprecat lib and the crashes, but also makes the game timer to be too slow. + // Update: gameplay is actually too fast compared to timer, first attract mode shouldn't even surpass first blue car on right. + if(scanline == 256) // vblank-out irq + { + // m_screen->frame_number() & 1 m_maincpu->set_input_line(4, HOLD_LINE); - else if((scanline % 128) == 0) // timer irq + m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong + } + else if(m_fake_timer >= timer_threshold) // timer irq + { + m_fake_timer -= timer_threshold; m_maincpu->set_input_line(5, HOLD_LINE); + } } INTERRUPT_GEN_MEMBER(overdriv_state::cpuB_interrupt) { // this doesn't get turned on until the irq has happened? wrong irq? if (m_k053246->k053246_is_irq_enabled()) - m_subcpu->set_input_line(4, HOLD_LINE); // likely wrong + m_subcpu->set_input_line(6, HOLD_LINE); // likely wrong } @@ -138,7 +149,6 @@ WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_x_w) WRITE16_MEMBER(overdriv_state::overdriv_cpuB_irq_y_w) { - m_subcpu->set_input_line(6, HOLD_LINE); // likely wrong } static ADDRESS_MAP_START( overdriv_master_map, AS_PROGRAM, 16, overdriv_state ) @@ -203,6 +213,7 @@ static ADDRESS_MAP_START( overdriv_slave_map, AS_PROGRAM, 16, overdriv_state ) AM_RANGE(0x120000, 0x120001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r, cpuB_ctrl_w) /* enable K053247 ROM reading, plus something else */ AM_RANGE(0x130000, 0x130007) AM_DEVREADWRITE8("k053246", k053247_device, k053246_r,k053246_w,0xffff) + //AM_RANGE(0x140000, 0x140001) used in later stages AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("share1") AM_RANGE(0x208000, 0x20bfff) AM_RAM AM_RANGE(0x218000, 0x219fff) AM_DEVREAD("k053250_1", k053250_device, rom_r) @@ -216,6 +227,7 @@ WRITE8_MEMBER(overdriv_state::sound_ack_w) static ADDRESS_MAP_START( overdriv_sound_map, AS_PROGRAM, 8, overdriv_state ) AM_RANGE(0x0000, 0x0000) AM_WRITE(sound_ack_w) + // 0x012 read during explosions // 0x180 AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ymsnd", ym2151_device,read,write) AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("k053260_1", k053260_device, read, write) @@ -231,7 +243,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( overdriv ) PORT_START("INPUTS") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_TOGGLE + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_TOGGLE PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) diff --git a/src/mame/includes/overdriv.h b/src/mame/includes/overdriv.h index 21652d9f1c8..b5a7c8fa2e0 100644 --- a/src/mame/includes/overdriv.h +++ b/src/mame/includes/overdriv.h @@ -58,7 +58,8 @@ public: UINT32 screen_update_overdriv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(cpuB_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(overdriv_cpuA_scanline); - + int m_fake_timer; + K051316_CB_MEMBER(zoom_callback_1); K051316_CB_MEMBER(zoom_callback_2); K053246_CB_MEMBER(sprite_callback); From d6eb0aff225e14cdb09a0668dd38f86db93c56f0 Mon Sep 17 00:00:00 2001 From: angelosa Date: Fri, 29 Jan 2016 02:12:45 +0100 Subject: [PATCH 14/17] Raw guessing, nw --- src/mame/drivers/overdriv.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index be7f0dcbadf..0dd10fd84e6 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -70,7 +70,7 @@ WRITE16_MEMBER(overdriv_state::eeprom_w) TIMER_DEVICE_CALLBACK_MEMBER(overdriv_state::overdriv_cpuA_scanline) { - const int timer_threshold = 160; + const int timer_threshold = 168; // fwiw matches 0 on mask ROM check, so IF it's a timer irq then should be close ... int scanline = param; m_fake_timer ++; From d207322c523704f8dbeec4e4566fee2edf7c0ca3 Mon Sep 17 00:00:00 2001 From: angelosa Date: Fri, 29 Jan 2016 02:19:29 +0100 Subject: [PATCH 15/17] Note about versions, nw --- src/mame/drivers/overdriv.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index 0dd10fd84e6..7d14ae9aca0 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -493,6 +493,6 @@ ROM_START( overdrivb ) ROM_LOAD( "789e02.f1", 0x100000, 0x100000, CRC(bdd3b5c6) SHA1(412332d64052c0a3714f4002c944b0e7d32980a4) ) ROM_END -GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) -GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) -GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) +GAMEL( 1990, overdriv, 0, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // US version +GAMEL( 1990, overdriva, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? +GAMEL( 1990, overdrivb, overdriv, overdriv, overdriv, driver_device, 0, ROT90, "Konami", "Over Drive (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_overdriv ) // Overseas? From 81c5bc7afcac8b626cdc69c5fd4ee112d7a2eade Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 29 Jan 2016 09:18:07 +0100 Subject: [PATCH 16/17] added clickable artwork flag to some game drivers --- src/mame/drivers/fidel6502.cpp | 34 ++++++++++------------------------ src/mame/drivers/hh_cop400.cpp | 2 +- src/mame/drivers/hh_tms1k.cpp | 10 +++++----- src/mame/drivers/tispeak.cpp | 8 ++++---- 4 files changed, 20 insertions(+), 34 deletions(-) diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp index ed4f53cf112..eb7f45070a8 100644 --- a/src/mame/drivers/fidel6502.cpp +++ b/src/mame/drivers/fidel6502.cpp @@ -36,16 +36,17 @@ public: : fidelz80base_state(mconfig, type, tag), m_6821pia(*this, "6821pia"), m_cart(*this, "cartslot"), - m_speaker(*this, "speaker"), - m_irq_off(*this, "irq_off") + m_speaker(*this, "speaker") { } // devices/pointers optional_device m_6821pia; optional_device m_cart; optional_device m_speaker; - optional_device m_irq_off; + TIMER_DEVICE_CALLBACK_MEMBER(irq_on) { m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); } + TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); } + // model CSC void csc_update_7442(); void csc_prepare_display(); @@ -65,8 +66,6 @@ public: // model SC12 DECLARE_MACHINE_START(sc12); DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge); - TIMER_DEVICE_CALLBACK_MEMBER(irq_off); - TIMER_DEVICE_CALLBACK_MEMBER(sc12_irq); DECLARE_WRITE8_MEMBER(sc12_control_w); DECLARE_READ8_MEMBER(sc12_input_r); }; @@ -247,20 +246,6 @@ MACHINE_START_MEMBER(fidel6502_state, sc12) } -// interrupt handling - -TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::irq_off) -{ - m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); -} - -TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::sc12_irq) -{ - m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE); - m_irq_off->adjust(attotime::from_nsec(15250)); // active low for 15.25us -} - - // TTL WRITE8_MEMBER(fidel6502_state::sc12_control_w) @@ -571,8 +556,9 @@ static MACHINE_CONFIG_START( sc12, fidel6502_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", R65C02, XTAL_4MHz) MCFG_CPU_PROGRAM_MAP(sc12_map) - MCFG_TIMER_DRIVER_ADD_PERIODIC("sc12_irq", fidel6502_state, sc12_irq, attotime::from_hz(780)) // from 556 timer - MCFG_TIMER_DRIVER_ADD("irq_off", fidel6502_state, irq_off) + MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel6502_state, irq_on, attotime::from_hz(780)) // from 556 timer + MCFG_TIMER_START_DELAY(attotime::from_hz(780) - attotime::from_nsec(15250)) // active for 15.25us + MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel6502_state, irq_off, attotime::from_hz(780)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_fidel_sc12) @@ -595,7 +581,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_START( fev, fidel6502_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M65SC02, XTAL_3MHz) // M65SC102 (CMD) + MCFG_CPU_ADD("maincpu", M65SC02, XTAL_12MHz/4) // G65SC102 MCFG_CPU_PROGRAM_MAP(fev_map) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1)) @@ -649,6 +635,6 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ COMP( 1981, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Sensory Chess Challenger", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_NOT_WORKING ) +COMP( 1984, fscc12, 0, 0, sc12, sc12, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger 12-B", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -COMP( 1987, fexcelv, 0, 0, fev, csc, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_NOT_WORKING ) +COMP( 1987, fexcelv, 0, 0, fev, csc, driver_device, 0, "Fidelity Electronics", "Voice Excellence", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/hh_cop400.cpp b/src/mame/drivers/hh_cop400.cpp index 486f6882b28..a4605bbace2 100644 --- a/src/mame/drivers/hh_cop400.cpp +++ b/src/mame/drivers/hh_cop400.cpp @@ -824,4 +824,4 @@ CONS( 1979, funjacks, 0, 0, funjacks, funjacks, driver_device, 0, "Mat CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, driver_device, 0, "Mattel", "Funtronics Red Light Green Light", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) -CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE ) +CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index d87600f8326..11e09d59804 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -4909,19 +4909,19 @@ COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kos CONS( 1980, mdndclab, 0, 0, mdndclab, mdndclab, driver_device, 0, "Mattel", "Dungeons & Dragons - Computer Labyrinth Game", MACHINE_SUPPORTS_SAVE ) // *** CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) -CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE ) -CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // *** CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) // *** -CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE ) +CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // *** CONS( 1979, stopthiep, stopthie, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", MACHINE_SUPPORTS_SAVE ) CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", MACHINE_SUPPORTS_SAVE ) -CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE ) +CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE ) // some of the minigames: *** +CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // some of the minigames: *** CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE ) CONS( 1980, phpball, 0, 0, phpball, phpball, driver_device, 0, "Tomy", "Power House Pinball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK ) diff --git a/src/mame/drivers/tispeak.cpp b/src/mame/drivers/tispeak.cpp index 205574b0a5e..124edffd379 100644 --- a/src/mame/drivers/tispeak.cpp +++ b/src/mame/drivers/tispeak.cpp @@ -1558,9 +1558,9 @@ COMP( 1980, snread, 0, 0, snread, snread, tispeak_state, sn COMP( 1979, lantutor, 0, 0, lantutor, lantutor, tispeak_state, lantutor, "Texas Instruments", "Language Tutor (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) -COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU -COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) -COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) -COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) +COMP( 1981, tntell, 0, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (US, 1981 version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) // assume there is an older version too, with CD8010 MCU +COMP( 1980, tntellp, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING ) +COMP( 1981, tntelluk, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Touch & Tell (UK)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) +COMP( 1981, tntellfr, tntell, 0, tntell, tntell, tispeak_state, tntell, "Texas Instruments", "Le Livre Magique (France)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_CLICKABLE_ARTWORK | MACHINE_REQUIRES_ARTWORK ) COMP( 1982, vocaid, 0, 0, vocaid, tntell, driver_device, 0, "Texas Instruments", "Vocaid", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_REQUIRES_ARTWORK ) From e0da1a72887864ee7fbc9914c54216fb28646d56 Mon Sep 17 00:00:00 2001 From: mahlemiut Date: Fri, 29 Jan 2016 22:20:39 +1300 Subject: [PATCH 17/17] SDL: if binding, listening or connecting to a socket fails, then close the socket handle. --- src/osd/sdl/sdlfile.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/osd/sdl/sdlfile.cpp b/src/osd/sdl/sdlfile.cpp index b6088c8aa54..1f6832b03dd 100644 --- a/src/osd/sdl/sdlfile.cpp +++ b/src/osd/sdl/sdlfile.cpp @@ -134,6 +134,8 @@ file_error osd_open(const char *path, UINT32 openflags, osd_file **file, UINT64 { (*file)->type = SDLFILE_SOCKET; filerr = sdl_open_socket(path, openflags, file, filesize); + if(filerr != FILERR_NONE && (*file)->socket != -1) + close((*file)->socket); goto error; }