mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 06:53:58 +00:00
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:
parent
d7478bcd68
commit
732ee11da1
1 changed files with 10 additions and 7 deletions
|
@ -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];
|
||||||
|
|
Loading…
Reference in a new issue