After some time, one of the following issues happen:
An invalid DMA transfer is initiated that corrupts parts of the DSP memory. Usually, the DDR is small and DCO is very high. This corrupts large parts of DSP memory. Usually, interrupts stay intact, causing audio to be broken. If interrupts are overwritten, too, the plugin / test console hangs as the DSP doesn't deliver samples anymore
The DSP hits a debugge instruction at $053b19. Sometimes, the DSP execution continues normally, in other cases, the DMA failure follows with the consequences as above. The debugge seems to be part of a memory alloc/free pair. malloc at $053b0f, free at $053b23. In rare cases, the debugle is hit in the free code instead
Observations
Seems to be triggered by certain presets
Happens on both Snow and TI2, firmware 5.1.7
The behaviour is identical in the interpreter and the JIT recompiler
DMA is always used as memFill, it fills a memory area with the value $000005 (asm illegal)
There is a chain of pending DMA transfers. The first DMA transfer is initiated manually, further DMA transfers (if the chain is not empty) are initiated from within the DMA interrupt
As mentioned above, debugge and debugle are most likely part of a malloc/free pair
Tests & Validations
Slowing down or speeding up HDI08 transfer rates didn't make any difference
A pending DMA is never aborted or restarted
As long as a DMA is pending, that area of memory is neither read nor written by any other op
DMA transfers need to be delayed by N instructions (see manual), if a DMA is executed instantly, other problems arise and the code indicates that a proper DMA delay is needed. While respecting a DMA delay, slowing down or speeding up DMAs doesn't make any difference
All synth features, such as Oscillators, Filters, etc seem to sound correct when tested
Issue Description (user view)
HrdshellNM
(Snow/TI2) is played incorrectly, it sounds as if a delay line is brokenRecording from the hardware, how it should sound: https://cdn.discordapp.com/attachments/978250109244555334/1046900855699419156/c3_snow_new.wav
Broken in the emulator: https://cdn.discordapp.com/attachments/978250109244555334/1046895362188787842/virusEmu_HrdshellNM.wav
Issue Description (developer view)
After some time, one of the following issues happen:
debugge
instruction at$053b19.
Sometimes, the DSP execution continues normally, in other cases, the DMA failure follows with the consequences as above. Thedebugge
seems to be part of a memory alloc/free pair. malloc at$053b0f,
free at$053b23.
In rare cases, thedebugle
is hit in the free code insteadObservations
$000005
(asmillegal
)debugge
anddebugle
are most likely part of a malloc/free pairTests & Validations