summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ville Linde <villedevs@gmail.com>2021-06-18 17:42:16 +0300
committer Ville Linde <villedevs@gmail.com>2021-06-18 17:42:16 +0300
commit7034c3456d7b8cecaf73e0eae565c4c6f7bfe911 (patch)
tree3881e4824e1bd4836ee3fa810757f6f5024dd1e9
parentc585ae63ce3d6eabb540c092af11a50a1fb71f08 (diff)
re-enable SHARC recompiler for Gradius 4
-rw-r--r--src/devices/cpu/sharc/sharc.cpp10
-rw-r--r--src/devices/cpu/sharc/sharcdma.hxx2
-rw-r--r--src/mame/drivers/hornet.cpp10
-rw-r--r--src/mame/drivers/nwk-tr.cpp3
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);