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

View file

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