diff options
| author | 2021-06-18 17:42:16 +0300 | |
|---|---|---|
| committer | 2021-06-18 17:42:16 +0300 | |
| commit | 7034c3456d7b8cecaf73e0eae565c4c6f7bfe911 (patch) | |
| tree | 3881e4824e1bd4836ee3fa810757f6f5024dd1e9 | |
| parent | c585ae63ce3d6eabb540c092af11a50a1fb71f08 (diff) | |
re-enable SHARC recompiler for Gradius 4
| -rw-r--r-- | src/devices/cpu/sharc/sharc.cpp | 10 | ||||
| -rw-r--r-- | src/devices/cpu/sharc/sharcdma.hxx | 2 | ||||
| -rw-r--r-- | src/mame/drivers/hornet.cpp | 10 | ||||
| -rw-r--r-- | src/mame/drivers/nwk-tr.cpp | 3 |
4 files changed, 22 insertions, 3 deletions
diff --git a/src/devices/cpu/sharc/sharc.cpp b/src/devices/cpu/sharc/sharc.cpp index 391520f688b..134611079a8 100644 --- a/src/devices/cpu/sharc/sharc.cpp +++ b/src/devices/cpu/sharc/sharc.cpp @@ -980,7 +980,15 @@ void adsp21062_device::set_flag_input(int flag_num, int state) WRITE_LINE_MEMBER(adsp21062_device::write_stall) { - m_core->write_stalled = (state == 0) ? false : true; + m_core->write_stalled = (state == 0) ? false : true; + + if (m_enable_drc) + { + if (m_core->write_stalled) + spin_until_trigger(45757); + else + machine().scheduler().trigger(45757); + } } void adsp21062_device::check_interrupts() diff --git a/src/devices/cpu/sharc/sharcdma.hxx b/src/devices/cpu/sharc/sharcdma.hxx index 63ea0b85c38..e0df2cb5e54 100644 --- a/src/devices/cpu/sharc/sharcdma.hxx +++ b/src/devices/cpu/sharc/sharcdma.hxx @@ -335,7 +335,7 @@ TIMER_CALLBACK_MEMBER(adsp21062_device::sharc_dma_callback) } dma_op(channel); - if (m_core->dma_op[channel].chain_ptr != 0) + if ((m_core->dma_op[channel].chain_ptr & 0x1ffff) != 0) { schedule_chained_dma_op(channel, m_core->dma_op[channel].chain_ptr, m_core->dma_op[channel].chained_direction); } diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp index 4aa91fc24a3..15e81ac9cd5 100644 --- a/src/mame/drivers/hornet.cpp +++ b/src/mame/drivers/hornet.cpp @@ -409,6 +409,7 @@ public: void init_hornet(); void init_sscope(); void init_sscope2(); + void init_gradius4(); protected: virtual void machine_start() override; @@ -1401,6 +1402,13 @@ void hornet_state::init_hornet() //m_dsp[0]->enable_recompiler(); } +void hornet_state::init_gradius4() +{ + init_hornet(); + + m_dsp[0]->enable_recompiler(); +} + void hornet_state::init_sscope() { m_konppc->set_cgboard_texture_bank(0, "master_cgboard_bank", memregion("master_cgboard")->base()); @@ -1705,7 +1713,7 @@ ROM_END /*************************************************************************/ -GAME( 1998, gradius4, 0, hornet, gradius4, hornet_state, init_hornet, ROT0, "Konami", "Gradius IV: Fukkatsu (ver JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1998, gradius4, 0, hornet, gradius4, hornet_state, init_gradius4, ROT0, "Konami", "Gradius IV: Fukkatsu (ver JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1998, nbapbp, 0, hornet, nbapbp, hornet_state, init_hornet, ROT0, "Konami", "NBA Play By Play (ver JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1998, nbapbpa, nbapbp, hornet, nbapbp, hornet_state, init_hornet, ROT0, "Konami", "NBA Play By Play (ver AAB)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1998, terabrst, 0, terabrst, terabrst, hornet_state, init_hornet, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/nwk-tr.cpp b/src/mame/drivers/nwk-tr.cpp index f968ccf9e23..fead2fd0c0c 100644 --- a/src/mame/drivers/nwk-tr.cpp +++ b/src/mame/drivers/nwk-tr.cpp @@ -452,6 +452,9 @@ void nwktr_state::sysreg_w(offs_t offset, uint8_t data) m_konppc->set_cgboard_id((data >> 4) & 0x3); + // Racing Jam sets CG board ID to 2 when writing to the tilemap chip. + // This could mean broadcast to both CG boards? + m_exrgb = data & 0x1; // Select which CG Board outputs signal m_cg_view.select(m_konppc->get_cgboard_id() ? 1 : 0); |
