Code:
TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1A_scanline_kazan) { int scanline = param;
if(scanline == 240) // vblank clear all lines { m_maincpu->set_input_line(3, CLEAR_LINE); m_maincpu->set_input_line(2, CLEAR_LINE); m_maincpu->set_input_line(1, CLEAR_LINE); } if(scanline == 0) m_maincpu->set_input_line(1, ASSERT_LINE);
if(scanline == 128) m_maincpu->set_input_line(2, ASSERT_LINE);
if(scanline == 192) // completely a guess m_maincpu->set_input_line(3, ASSERT_LINE); }
and with this line commented out in original source enabled again:
Code:
m_rom_maincpu[0x00006e/2] = 0x0420; // the only game that does not like lev 3 interrupts
NOTE 1: this code breaks ALL other games in the driver, so it should be implemented only for Kazan. NOTE 2: it's a bit hacky, expecially the m_rom_maincpu patch. Though, it's necessary otherwise the game crash after the boot. This patch was enabled before the bug appeared and then commented out.
EDIT for Developers: the usage of HOLD_LINE with scanlines timers should be deprecated in favour of ASSERT_LINE and CLEAR_LINE. Probably my implementation is not 100% correct but hey, it took me an hour of investigations "fix" a 7 years old bug.
Edited by Mamesick (06/19/15 09:27 PM)
|