Some DOSBox Raw OPL v2 indices were off by one.

This caused access violation errors on perfectly fine DRO files. For
reference, scoredata[20] is the hardware type (OPL2, dual OPL2, or
OPL3).
This commit is contained in:
Gaerzi 2014-02-23 23:07:10 +01:00
parent d7478bcd68
commit 732ee11da1
1 changed files with 10 additions and 7 deletions

View File

@ -104,16 +104,19 @@ fail: delete[] scoredata;
}
else if (((DWORD *)scoredata)[2] == MAKE_ID(2,0,0,0))
{
if (scoredata[20] != 0)
{
Printf("Unsupported DOSBox Raw OPL format %d\n", scoredata[20]);
goto fail;
}
bool okay = true;
if (scoredata[21] != 0)
{
Printf("Unsupported DOSBox Raw OPL compression %d\n", scoredata[21]);
goto fail;
Printf("Unsupported DOSBox Raw OPL format %d\n", scoredata[20]);
okay = false;
}
if (scoredata[22] != 0)
{
Printf("Unsupported DOSBox Raw OPL compression %d\n", scoredata[21]);
okay = false;
}
if (!okay)
goto fail;
RawPlayer = DosBox2;
SamplesPerTick = OPL_SAMPLE_RATE / 1000;
int headersize = 0x1A + scoredata[0x19];