some DAC related regression fixes
authornotaz <notasas@gmail.com>
Tue, 27 May 2008 19:55:08 +0000 (19:55 +0000)
committernotaz <notasas@gmail.com>
Tue, 27 May 2008 19:55:08 +0000 (19:55 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@467 be3aeb3a-fb24-0410-a615-afba39da0efa

Pico/PicoFrameHints.c
Pico/sound/sound.c

index 76ba0ff..7995b9b 100644 (file)
@@ -4,8 +4,6 @@
 #define CYCLES_M68K_LINE     488 // suitable for both PAL/NTSC
 #define CYCLES_M68K_VINT_LAG  68
 #define CYCLES_M68K_ASD      148
-#define CYCLES_Z80_LINE      228
-#define CYCLES_Z80_ASD        69
 #define CYCLES_S68K_LINE     795
 #define CYCLES_S68K_ASD      241
 
 
 // CPUS_RUN
 #ifndef PICO_CD
-#define CPUS_RUN(m68k_cycles,z80_cycles,s68k_cycles) \
+#define CPUS_RUN(m68k_cycles,s68k_cycles) \
     SekRunM68k(m68k_cycles);
 #else
-#define CPUS_RUN(m68k_cycles,z80_cycles,s68k_cycles) \
+#define CPUS_RUN(m68k_cycles,s68k_cycles) \
 { \
     if ((PicoOpt&POPT_EN_MCD_PSYNC) && (Pico_mcd->m.busreq&3) == 1) { \
       SekRunPS(m68k_cycles, s68k_cycles); /* "better/perfect sync" */ \
@@ -40,6 +38,8 @@ static int PicoFrameHints(void)
   int lines, y, lines_vis = 224, line_sample, skip;
   int hint; // Hint counter
 
+  Pico.m.scanline=0;
+
   if ((PicoOpt&POPT_ALT_RENDERER) && !PicoSkipFrame && (pv->reg[1]&0x40)) { // fast rend., display enabled
     // draw a frame just after vblank in alternative render mode
     // yes, this will cause 1 frame lag, but this is inaccurate mode anyway.
@@ -72,7 +72,7 @@ static int PicoFrameHints(void)
   //dprintf("-hint: %i", hint);
 
   // This is to make active scan longer (needed for Double Dragon 2, mainly)
-  CPUS_RUN(CYCLES_M68K_ASD, 0, CYCLES_S68K_ASD);
+  CPUS_RUN(CYCLES_M68K_ASD, CYCLES_S68K_ASD);
 
   for (y=0;y<lines_vis;y++)
   {
@@ -139,7 +139,7 @@ static int PicoFrameHints(void)
 
     // Run scanline:
     if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
-    CPUS_RUN(CYCLES_M68K_LINE, CYCLES_Z80_LINE, CYCLES_S68K_LINE);
+    CPUS_RUN(CYCLES_M68K_LINE, CYCLES_S68K_LINE);
 
 #ifdef PICO_CD
     update_chips();
@@ -208,7 +208,7 @@ static int PicoFrameHints(void)
   // Run scanline:
   if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
   CPUS_RUN(CYCLES_M68K_LINE - CYCLES_M68K_VINT_LAG - CYCLES_M68K_ASD,
-    CYCLES_Z80_LINE - CYCLES_Z80_ASD, CYCLES_S68K_LINE - CYCLES_S68K_ASD);
+    CYCLES_S68K_LINE - CYCLES_S68K_ASD);
 
 #ifdef PICO_CD
   update_chips();
@@ -230,7 +230,7 @@ static int PicoFrameHints(void)
 
     // Run scanline:
     if (Pico.m.dma_xfers) SekCyclesBurn(CheckDMA());
-    CPUS_RUN(CYCLES_M68K_LINE, CYCLES_Z80_LINE, CYCLES_S68K_LINE);
+    CPUS_RUN(CYCLES_M68K_LINE, CYCLES_S68K_LINE);
 
 #ifdef PICO_CD
     update_chips();
index 4bc9292..d49ea68 100644 (file)
@@ -93,8 +93,9 @@ static void dac_recalculate(void)
     if (PsndLen_exc_add) len++;\r
     dac_info[224] = (pos<<4)|len;\r
   }\r
+  mid = (dac_info[lines-1] & 0xfff0) + ((dac_info[lines-1] & 0xf) << 4);\r
   for (i = lines; i < sizeof(dac_info) / sizeof(dac_info[0]); i++)\r
-    dac_info[i] = 0;\r
+    dac_info[i] = mid;\r
   //for(i=len=0; i < lines; i++) {\r
   //  printf("%03i : %03i : %i\n", i, dac_info[i]>>4, dac_info[i]&0xf);\r
   //  len+=dac_info[i]&0xf;\r