clean up dac code a bit
[picodrive.git] / pico / memory.c
index cb1b5ac..fb5fa9b 100644 (file)
@@ -932,7 +932,7 @@ static int ym2612_write_local(u32 a, u32 d, int is_from_z80)
     int scanline = get_scanline(is_from_z80);\r
     //elprintf(EL_STATUS, "%03i -> %03i dac w %08x z80 %i", PsndDacLine, scanline, d, is_from_z80);\r
     ym2612.dacout = ((int)d - 0x80) << 6;\r
-    if (PsndOut && ym2612.dacen && scanline >= PsndDacLine)\r
+    if (ym2612.dacen)\r
       PsndDoDAC(scanline);\r
     return 0;\r
   }\r
@@ -1016,8 +1016,10 @@ static int ym2612_write_local(u32 a, u32 d, int is_from_z80)
         }\r
         case 0x2b: { /* DAC Sel  (YM2612) */\r
           int scanline = get_scanline(is_from_z80);\r
-          ym2612.dacen = d & 0x80;\r
-          if (d & 0x80) PsndDacLine = scanline;\r
+          if (ym2612.dacen != (d & 0x80)) {\r
+            ym2612.dacen = d & 0x80;\r
+            PsndDacLine = scanline;\r
+          }\r
 #ifdef __GP2X__\r
           if (PicoOpt & POPT_EXT_FM) YM2612Write_940(a, d, scanline);\r
 #endif\r