OPL cycles fixes.
This commit is contained in:
@@ -162,11 +162,20 @@ opl_write(opl_t *dev, uint16_t port, uint8_t val)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
opl_set_do_cycles(opl_t *dev, int8_t do_cycles)
|
||||
{
|
||||
dev->do_cycles = do_cycles;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
opl_init(opl_t *dev, int is_opl3)
|
||||
{
|
||||
memset(dev, 0x00, sizeof(opl_t));
|
||||
|
||||
dev->is_opl3 = is_opl3;
|
||||
dev->do_cycles = 1;
|
||||
|
||||
/* Create a NukedOPL object. */
|
||||
dev->opl = nuked_init(48000);
|
||||
@@ -192,7 +201,8 @@ opl2_read(uint16_t port, void *priv)
|
||||
{
|
||||
opl_t *dev = (opl_t *)priv;
|
||||
|
||||
cycles -= ISA_CYCLES(8);
|
||||
if (dev->do_cycles)
|
||||
sub_cycles((int) (isa_timing * 8));
|
||||
|
||||
opl2_update(dev);
|
||||
|
||||
@@ -240,7 +250,8 @@ opl3_read(uint16_t port, void *priv)
|
||||
{
|
||||
opl_t *dev = (opl_t *)priv;
|
||||
|
||||
cycles -= ISA_CYCLES(8);
|
||||
if (dev->do_cycles)
|
||||
sub_cycles((int)(isa_timing * 8));
|
||||
|
||||
opl3_update(dev);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user