aboutsummaryrefslogtreecommitdiff
path: root/audio/stymulator/files/patch-stsoundlib_YmMusic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'audio/stymulator/files/patch-stsoundlib_YmMusic.cpp')
-rw-r--r--audio/stymulator/files/patch-stsoundlib_YmMusic.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/audio/stymulator/files/patch-stsoundlib_YmMusic.cpp b/audio/stymulator/files/patch-stsoundlib_YmMusic.cpp
new file mode 100644
index 000000000000..58f60414c1df
--- /dev/null
+++ b/audio/stymulator/files/patch-stsoundlib_YmMusic.cpp
@@ -0,0 +1,54 @@
+--- stsoundlib/YmMusic.cpp.orig 2016-07-26 16:04:42 UTC
++++ stsoundlib/YmMusic.cpp
+@@ -167,12 +167,12 @@ ymbool CYmMusic::isSeekable(void)
+ return getAttrib()&A_TIMECONTROL;
+ }
+
+-void CYmMusic::setLastError(char *pError)
++void CYmMusic::setLastError(const char *pError)
+ {
+ pLastError = pError;
+ }
+
+-char *CYmMusic::getLastError(void)
++const char *CYmMusic::getLastError(void)
+ {
+ return pLastError;
+ }
+@@ -364,11 +364,14 @@ void CYmMusic::player(void)
+
+ if (ptr[12])
+ {
+- sampleFrq = (MFP_CLOCK / ptr[12]);
+- ymChip.drumStart( 2, // Voice C
+- sampleAdress[sampleNum],
+- sampleLen[sampleNum],
+- sampleFrq);
++ if (sampleNum < MAX_DIGIDRUM)
++ {
++ sampleFrq = (MFP_CLOCK / ptr[12]);
++ ymChip.drumStart( 2, // Voice C
++ sampleAdress[sampleNum],
++ sampleLen[sampleNum],
++ sampleFrq);
++ }
+ }
+ }
+ }
+@@ -612,7 +615,6 @@ ymTrackerLine_t *pLine;
+ for (i=0;i<nbVoice;i++)
+ {
+ ymint n;
+- ymint freq =
+ pVoice[i].sampleFreq = ((ymint)pLine->freqHigh<<8) | pLine->freqLow;
+ if (pVoice[i].sampleFreq)
+ {
+@@ -677,7 +679,7 @@ double step;
+ #ifdef _LINEAR_OVRS
+ ymint vb = va;
+ if (samplePos < (sampleEnd-(1<<YMTPREC)))
+- ymint vb = pVolumeTab[pSample[(samplePos>>YMTPREC)+1]];
++ vb = pVolumeTab[pSample[(samplePos>>YMTPREC)+1]];
+ ymint frac = samplePos & ((1<<YMTPREC)-1);
+ va += (((vb-va)*frac)>>YMTPREC);
+ #endif