diff --git a/src/engine/fileOps/tfm.cpp b/src/engine/fileOps/tfm.cpp index 6fadee58e..d53e51925 100644 --- a/src/engine/fileOps/tfm.cpp +++ b/src/engine/fileOps/tfm.cpp @@ -36,12 +36,12 @@ class TFMRLEReader { size_t curSeek; bool inTag; int tagLenLeft; - char tagChar; + signed char tagChar; - void decodeRLE(char prevChar) { + void decodeRLE(signed char prevChar) { int lenShift=0; tagLenLeft=0; - char rleTag=0; + signed char rleTag=0; do { rleTag=readC(); tagLenLeft|=(rleTag&0x7F)<len) throw TFMEndOfFileException(this,len); return buf[curSeek++]; } @@ -369,7 +369,7 @@ bool DivEngine::loadTFM(unsigned char* file, size_t len) { logD("parsing volumes of pattern %d channel %d",i,j); for (int k=0; k<256; k++) { if (patDataBuf[k]==0) continue; - else pat->data[k][3]=patDataBuf[k]*4; + else pat->data[k][3]=0x41+(patDataBuf[k]*2); } // instrument @@ -416,6 +416,7 @@ bool DivEngine::loadTFM(unsigned char* file, size_t len) { // vibrato + volume slide pat->data[k][4]=0x05; pat->data[k][5]=effectVal[k]; + break; default: break; }