mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
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:
parent
61203a2adb
commit
a65c9ef758
@ -215,6 +215,8 @@ void v53_base_device::device_start()
|
|||||||
m_out_dack_1_cb.resolve_safe();
|
m_out_dack_1_cb.resolve_safe();
|
||||||
m_out_dack_2_cb.resolve_safe();
|
m_out_dack_2_cb.resolve_safe();
|
||||||
m_out_dack_3_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()
|
void v53_base_device::install_peripheral_io()
|
||||||
@ -485,6 +487,7 @@ static MACHINE_CONFIG_FRAGMENT( v53 )
|
|||||||
MCFG_PIT8253_OUT1_HANDLER(WRITELINE( v53_base_device, tcu_out1_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_PIT8253_OUT2_HANDLER(WRITELINE( v53_base_device, tcu_out2_trampoline_cb ))
|
||||||
|
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("upd71071dma", V53_DMAU, 4000000)
|
MCFG_DEVICE_ADD("upd71071dma", V53_DMAU, 4000000)
|
||||||
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(v53_base_device, hreq_trampoline_cb))
|
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(v53_base_device, hreq_trampoline_cb))
|
||||||
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(v53_base_device, eop_trampoline_cb))
|
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(v53_base_device, eop_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_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_DEVICE_ADD("v53scu", V53_SCU, 0)
|
||||||
MCFG_I8251_TXD_HANDLER(WRITELINE(v53_base_device, scu_txd_trampoline_cb))
|
MCFG_I8251_TXD_HANDLER(WRITELINE(v53_base_device, scu_txd_trampoline_cb))
|
||||||
MCFG_I8251_DTR_HANDLER(WRITELINE(v53_base_device, scu_dtr_trampoline_cb))
|
MCFG_I8251_DTR_HANDLER(WRITELINE(v53_base_device, scu_dtr_trampoline_cb))
|
||||||
|
@ -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)
|
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
|
If the banking setup is wrong then those first two revisions also spam the entire range of I/O ports with values several times
|
||||||
writes to the V53 internal registers. The important ones are reinitialized after this however, I'm guessing this is harmless
|
on startup causing some unexpected writes to the V53 internal registers.
|
||||||
on real hardware, as the code flow seems to be correct.
|
|
||||||
|
|
||||||
data structures look very similar between all of them
|
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
|
// 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);
|
// 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)
|
WRITE_LINE_MEMBER(hng64_state::tcu_tm2_cb)
|
||||||
|
Loading…
Reference in New Issue
Block a user