[Core/Sound] Nuked OPN2: fix envelope generator increment calculation

This commit is contained in:
nukeykt 2017-10-06 00:25:16 +09:00
parent 2345d98b69
commit 64356591d6
2 changed files with 15 additions and 19 deletions

View File

@ -39,7 +39,7 @@
* OPLx decapsulated(Matthew Gambrell, Olli Niemitalo): * OPLx decapsulated(Matthew Gambrell, Olli Niemitalo):
* OPL2 ROMs. * OPL2 ROMs.
* *
* version: 1.0.6 * version: 1.0.7
*/ */
#include <string.h> #include <string.h>
@ -741,28 +741,24 @@ void OPN2_EnvelopePrepare(ym3438_t *chip)
rate = 0x3f; rate = 0x3f;
} }
sum = (rate >> 2) + chip->eg_shift_lock; sum = ((rate >> 2) + chip->eg_shift_lock) & 0x0f;
if (chip->eg_rate != 0 && chip->eg_quotient == 2) if (chip->eg_rate != 0 && chip->eg_quotient == 2)
{ {
if (rate < 48) if (rate < 48)
{ {
if ((sum & 0x0c) == 0x0c) switch (sum)
{
if ((sum & 0x03) == 0)
{ {
case 12:
inc = 1; inc = 1;
} break;
else case 13:
{ inc = (rate >> 1) & 0x01;
if (sum & 0x01) break;
{ case 14:
inc |= (rate >> 1) & 0x01; inc = rate & 0x01;
} break;
if (sum & 0x02) default:
{ break;
inc |= rate & 0x01;
}
}
} }
} }
else else

View File

@ -39,7 +39,7 @@
* OPLx decapsulated(Matthew Gambrell, Olli Niemitalo): * OPLx decapsulated(Matthew Gambrell, Olli Niemitalo):
* OPL2 ROMs. * OPL2 ROMs.
* *
* version: 1.0.6 * version: 1.0.7
*/ */
#ifndef YM3438_H #ifndef YM3438_H