mirror of
https://github.com/holub/mame
synced 2025-04-26 18:23:08 +03:00
ninjaw.cpp: saner interleave CPU timings, attempt to fix missing enemies bug in Ninja Warriors [Angelo Salese]
This commit is contained in:
parent
d46093315a
commit
2ba92b043b
@ -742,7 +742,11 @@ static MACHINE_CONFIG_START( ninjaw )
|
|||||||
MCFG_CPU_PROGRAM_MAP(ninjaw_slave_map)
|
MCFG_CPU_PROGRAM_MAP(ninjaw_slave_map)
|
||||||
MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold)
|
MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold)
|
||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices */
|
// TODO: if CPUs are unsynched then seldomly stages loads up with no enemies
|
||||||
|
// Let's use a better timer (was 6000 before) based off actual CPU timing.
|
||||||
|
// Might as well bump the divider in case the bug still occurs before resorting to perfect CPU.
|
||||||
|
MCFG_QUANTUM_TIME(attotime::from_hz(16000000/1024)) /* CPU slices */
|
||||||
|
//MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("tc0040ioc", TC0040IOC, 0)
|
MCFG_DEVICE_ADD("tc0040ioc", TC0040IOC, 0)
|
||||||
MCFG_TC0040IOC_READ_0_CB(IOPORT("DSWA"))
|
MCFG_TC0040IOC_READ_0_CB(IOPORT("DSWA"))
|
||||||
@ -863,7 +867,8 @@ static MACHINE_CONFIG_START( darius2 )
|
|||||||
MCFG_CPU_PROGRAM_MAP(darius2_slave_map)
|
MCFG_CPU_PROGRAM_MAP(darius2_slave_map)
|
||||||
MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold)
|
MCFG_CPU_VBLANK_INT_DRIVER("lscreen", ninjaw_state, irq4_line_hold)
|
||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices */
|
MCFG_QUANTUM_TIME(attotime::from_hz(16000000/1024)) /* CPU slices */
|
||||||
|
//MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("tc0040ioc", TC0040IOC, 0)
|
MCFG_DEVICE_ADD("tc0040ioc", TC0040IOC, 0)
|
||||||
MCFG_TC0040IOC_READ_0_CB(IOPORT("DSWA"))
|
MCFG_TC0040IOC_READ_0_CB(IOPORT("DSWA"))
|
||||||
|
@ -277,10 +277,12 @@ void mb60553_zooming_tilemap_device::draw( screen_device &screen, bitmap_ind16&
|
|||||||
|
|
||||||
|
|
||||||
incxx = m_lineram[(line)*8+0]<<4;
|
incxx = m_lineram[(line)*8+0]<<4;
|
||||||
|
incyy = m_lineram[(line)*8+3]<<4;
|
||||||
|
|
||||||
// startx has an offset based off current x zoom value
|
// startx has an offset based off current x zoom value
|
||||||
// This is confirmed by Tecmo World Cup '94 startx being 0xff40 (-192) when showing footballer pics on attract mode (incxx is 0x800)
|
// This is confirmed by Tecmo World Cup '94 startx being 0xff40 (-192) when showing footballer pics on attract mode (incxx is 0x800)
|
||||||
// TODO: slightly offset?
|
// TODO: slightly offset?
|
||||||
xoffset = (float)incxx/(float)0x10000 * 384.0;
|
xoffset = ((float)incxx/(float)0x10000) * 384.0;
|
||||||
|
|
||||||
startx = m_regs[0] + (uint32_t)xoffset;
|
startx = m_regs[0] + (uint32_t)xoffset;
|
||||||
starty = m_regs[1];
|
starty = m_regs[1];
|
||||||
@ -288,7 +290,6 @@ void mb60553_zooming_tilemap_device::draw( screen_device &screen, bitmap_ind16&
|
|||||||
// TODO: what's this? Used by Grand Striker playfield
|
// TODO: what's this? Used by Grand Striker playfield
|
||||||
// startx -= m_lineram[(line)*8+7]/2;
|
// startx -= m_lineram[(line)*8+7]/2;
|
||||||
|
|
||||||
incyy = m_lineram[(line)*8+3]<<4;
|
|
||||||
|
|
||||||
clip.min_y = clip.max_y = line;
|
clip.min_y = clip.max_y = line;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user