Previous 199869 Revisions Next

r34658 Tuesday 27th January, 2015 at 13:22:36 UTC by MetalliC
MIE: handle Maple reset pattern, made a better hack for it, change frequency to more real (yes, its a 16 or more MHz Z80 core)
TODO: findout why SH4 game code doesnt wait long enough for internal firmware RAM test completes after reset
[src/mame/drivers]naomi.c
[src/mame/machine]mie.c

trunk/src/mame/drivers/naomi.c
r243169r243170
26182618MACHINE_CONFIG_END
26192619
26202620static MACHINE_CONFIG_DERIVED( naomi_base, naomi_aw_base )
2621   MCFG_MIE_ADD("mie", 4000000, "maple_dc", 0, 0, 0, 0, ":MIE.3", 0, ":MIE.5", 0, 0) // Actual frequency unknown
2621   MCFG_MIE_ADD("mie", XTAL_32MHz/2, "maple_dc", 0, 0, 0, 0, ":MIE.3", 0, ":MIE.5", 0, 0) // Actual frequency unknown, most likely 1/2 of 32MHz XTAL or even 2/3 (yes, 21MHz Z80 core)
26222622   MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", ":TILT", ":P1", ":P2", ":A0", ":A1", ":A2", ":A3", ":A4", ":A5", ":A6", ":A7", ":OUTPUT")
26232623   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("mie_eeprom")
26242624
trunk/src/mame/machine/mie.c
r243169r243170
103103   save_item(NAME(irq_enable));
104104   save_item(NAME(irq_pending));
105105   save_item(NAME(maple_irqlevel));
106
107   // patch out MIE RAM test
108   // TODO: figure out why SH4 code doesn't wait long enough for internal firmware's RAM test completed in the case of reset
109   UINT32 *rom = (UINT32*)memregion("mie")->base();
110   rom[0x144/4] = 0x0001d8c3;
106111}
107112
108113void mie_device::device_reset()
r243169r243170
164169         control |= CTRL_TFB|CTRL_EMP;
165170      }
166171   }
172   if(control & CTRL_HRES) {
173      raise_irq(maple_irqlevel);
174   }
167175}
168176
169177void mie_device::maple_w(const UINT32 *data, UINT32 in_size)
170178{
171179   memcpy(tbuf, data, in_size*4);
172180   lreg = in_size-1;
173   control &= ~(CTRL_TXB|CTRL_TFB|CTRL_RFB|CTRL_BFOV);
181   // currently not known how/then CTRL_HRES is cleared after reset, lets clear it at packet receive
182   control &= ~(CTRL_HRES|CTRL_TXB|CTRL_TFB|CTRL_RFB|CTRL_BFOV);
174183   control |= CTRL_RXB;
175184
176185   timer->adjust(attotime::from_usec(20));
r243169r243170
357366
358367void mie_device::maple_reset()
359368{
360   // ignoring reset maple pattern is HUGE HACK
361   // current implementation works only because of in such case procedure of firmware upload by games will be skipped at all
362   // so in better case - inputs doesnt work if game uses very different firmware version than already uploaded by BIOS, in worst case - game hang/reboot
363   // TODO: figure out why game code doesn't wait long enough for internal firmware's RAM test completed in the case of proper reset
369   control &= ~(CTRL_RXB|CTRL_TXB|CTRL_TFB|CTRL_RFB|CTRL_BFOV);
370   control |= CTRL_HRES;
371
372   timer->adjust(attotime::from_usec(20));
364373}


Previous 199869 Revisions Next


© 1997-2024 The MAME Team