clean up dac code a bit
[picodrive.git] / pico / debug.c
index efcd3fd..e780262 100644 (file)
@@ -233,6 +233,7 @@ void PDebugShowSprite(unsigned short *screen, int stride, int which)
   struct PicoVideo *pvid=&Pico.video;
   int table=0,u,link=0,*sprite=0,*fsprite,oldsprite[2];
   int x,y,max_sprites = 80, oldcol, oldreg;
+  unsigned char olddbg;
 
   if (!(pvid->reg[12]&1))
     max_sprites = 64;
@@ -257,9 +258,10 @@ void PDebugShowSprite(unsigned short *screen, int stride, int which)
   fsprite[1] = (sprite[1] & ~0x01ff8000) | 0x800000;
   oldreg = pvid->reg[7];
   oldcol = Pico.cram[0];
+  olddbg = pvid->debug_p;
   pvid->reg[7] = 0;
   Pico.cram[0] = 0;
-  PicoDrawMask = PDRAW_SPRITES_LOW_ON;
+  pvid->debug_p = PVD_KILL_A | PVD_KILL_B;
 
   PicoFrameFull();
   for (y = 0; y < 8*4; y++)
@@ -274,7 +276,7 @@ void PDebugShowSprite(unsigned short *screen, int stride, int which)
   fsprite[1] = oldsprite[1];
   pvid->reg[7] = oldreg;
   Pico.cram[0] = oldcol;
-  PicoDrawMask = -1;
+  pvid->debug_p = olddbg;
 }
 
 #define dump_ram(ram,fname) \
@@ -364,31 +366,31 @@ void PDebugZ80Frame(void)
   }
 
   z80_resetCycles();
-  emustatus &= ~1;
+  PsndStartFrame();
 
-  if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
-    PicoSyncZ80(line_sample*488);
-  if (ym2612.dacen && PsndDacLine <= line_sample)
-    PsndDoDAC(line_sample);
+  if (/*Pico.m.z80Run &&*/ !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
+    PicoSyncZ80(SekCycleCnt + line_sample * 488);
   if (PsndOut)
     PsndGetSamples(line_sample);
 
-  if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80)) {
-    PicoSyncZ80(224*488);
+  if (/*Pico.m.z80Run &&*/ !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80)) {
+    PicoSyncZ80(SekCycleCnt + 224 * 488);
     z80_int();
   }
-  if (ym2612.dacen && PsndDacLine <= 224)
-    PsndDoDAC(224);
   if (PsndOut)
     PsndGetSamples(224);
 
   // sync z80
-  if (Pico.m.z80Run && !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80))
-    PicoSyncZ80(Pico.m.pal ? 151809 : 127671); // cycles adjusted for converter
-  if (PsndOut && ym2612.dacen && PsndDacLine <= lines-1)
-    PsndDoDAC(lines-1);
+  if (/*Pico.m.z80Run &&*/ !Pico.m.z80_reset && (PicoOpt&POPT_EN_Z80)) {
+    SekCycleCnt += Pico.m.pal ? 151809 : 127671; // cycles adjusted for converter
+    PicoSyncZ80(SekCycleCnt);
+  }
+  if (PsndOut && ym2612.dacen && PsndDacLine < lines)
+    PsndDoDAC(lines - 1);
+  PsndDoPSG(lines - 1);
 
   timers_cycle();
+  SekCycleAim = SekCycleCnt;
 }
 
 void PDebugCPUStep(void)