commit 4f64a3c27cb99c891f4723eb7d9d3be4a1eb7ecf
parent 3599930aedbecae7d202e8976f41c30884af0a0b
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Wed, 23 Mar 2022 23:07:17 +0100
fix demo might get the stuck because HDI08 not being ready
Diffstat:
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/source/virusLib/demoplayback.cpp b/source/virusLib/demoplayback.cpp
@@ -194,13 +194,15 @@ namespace virusLib
m_remainingDelay -= _samples;
while(m_remainingDelay <= 0 && m_currentEvent < m_events.size())
{
- const auto& e = m_events[m_currentEvent++];
- processEvent(e);
+ const auto& e = m_events[m_currentEvent];
+ if(!processEvent(e))
+ return;
+ ++m_currentEvent;
m_remainingDelay = e.delay * m_timeScale;
}
}
- void DemoPlayback::processEvent(const Event& _event) const
+ bool DemoPlayback::processEvent(const Event& _event) const
{
switch (_event.type)
{
@@ -226,6 +228,9 @@ namespace virusLib
break;
case EventType::RawSerial:
{
+ if(m_mc.needsToWaitForHostBits(0,1))
+ return false;
+
std::vector<dsp56k::TWord> dspWords;
for(size_t i=0; i<_event.data.size(); i += 3)
@@ -243,5 +248,6 @@ namespace virusLib
}
break;
}
+ return true;
}
}
diff --git a/source/virusLib/demoplayback.h b/source/virusLib/demoplayback.h
@@ -37,7 +37,7 @@ namespace virusLib
bool parseData(const std::vector<uint8_t>& _data);
- void processEvent(const Event& _event) const;
+ bool processEvent(const Event& _event) const;
Microcontroller& m_mc;