From a65c9ef758939a9e8052da99804c0801a4f056b7 Mon Sep 17 00:00:00 2001 From: mamehaze Date: Fri, 13 Mar 2015 21:51:27 +0000 Subject: [PATCH] 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) --- src/emu/cpu/nec/v53.c | 5 +++++ src/mame/audio/hng64.c | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/emu/cpu/nec/v53.c b/src/emu/cpu/nec/v53.c index c43db72d35e..0019f5bd959 100644 --- a/src/emu/cpu/nec/v53.c +++ b/src/emu/cpu/nec/v53.c @@ -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)) diff --git a/src/mame/audio/hng64.c b/src/mame/audio/hng64.c index a185b9fc44f..1f5eb542f48 100644 --- a/src/mame/audio/hng64.c +++ b/src/mame/audio/hng64.c @@ -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)