hooked v53 irq ack callback so that it can get the correct vector from the controller, make a note of which ones get unmasked (nw)

This commit is contained in:
mamehaze 2015-03-13 21:51:27 +00:00
parent 61203a2adb
commit a65c9ef758
2 changed files with 12 additions and 3 deletions

View File

@ -215,6 +215,8 @@ void v53_base_device::device_start()
m_out_dack_1_cb.resolve_safe();
m_out_dack_2_cb.resolve_safe();
m_out_dack_3_cb.resolve_safe();
static_set_irq_acknowledge_callback(*this, device_irq_acknowledge_delegate(FUNC(pic8259_device::inta_cb), (pic8259_device*)m_v53icu));
}
void v53_base_device::install_peripheral_io()
@ -484,6 +486,7 @@ static MACHINE_CONFIG_FRAGMENT( v53 )
MCFG_PIT8253_OUT0_HANDLER(WRITELINE( v53_base_device, tcu_out0_trampoline_cb ))
MCFG_PIT8253_OUT1_HANDLER(WRITELINE( v53_base_device, tcu_out1_trampoline_cb ))
MCFG_PIT8253_OUT2_HANDLER(WRITELINE( v53_base_device, tcu_out2_trampoline_cb ))
MCFG_DEVICE_ADD("upd71071dma", V53_DMAU, 4000000)
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(v53_base_device, hreq_trampoline_cb))
@ -506,6 +509,8 @@ static MACHINE_CONFIG_FRAGMENT( v53 )
MCFG_PIC8259_ADD( "upd71059pic", WRITELINE(v53_base_device, internal_irq_w), VCC, READ8(v53_base_device,get_pic_ack))
MCFG_DEVICE_ADD("v53scu", V53_SCU, 0)
MCFG_I8251_TXD_HANDLER(WRITELINE(v53_base_device, scu_txd_trampoline_cb))
MCFG_I8251_DTR_HANDLER(WRITELINE(v53_base_device, scu_dtr_trampoline_cb))

View File

@ -14,12 +14,15 @@ buriki (#)SNK R&D Center (R) HYPER NEOGEO64 Sound Driver Ver 1.15. (#)Copyrig
The earlier revisions appear to have 2 banks of code (there are vectors at the end of the 0x1e0000 block and the 0x1f0000 block)
Those first two revisions also spam the entire range of I/O ports with values several times on startup causing some unexpected
writes to the V53 internal registers. The important ones are reinitialized after this however, I'm guessing this is harmless
on real hardware, as the code flow seems to be correct.
If the banking setup is wrong then those first two revisions also spam the entire range of I/O ports with values several times
on startup causing some unexpected writes to the V53 internal registers.
data structures look very similar between all of them
IRQ mask register on the internal interrupt controller is set to 0xd8
so levels 0,1,2,5 are unmasked
*/
@ -298,6 +301,7 @@ WRITE_LINE_MEMBER(hng64_state::tcu_tm1_cb)
{
// these are very active, maybe they feed back into the v53 via one of the IRQ pins? TM2 toggles more rapidly than TM1
// printf("tcu_tm1_cb %02x\n", state);
m_audiocpu->set_input_line(0, state? ASSERT_LINE:CLEAR_LINE);
}
WRITE_LINE_MEMBER(hng64_state::tcu_tm2_cb)