OPL cycles fixes.

This commit is contained in:
OBattler
2020-07-19 21:32:23 +02:00
parent d1fca11137
commit 146d041945
3 changed files with 20 additions and 3 deletions

View File

@@ -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);