Ver código fonte

sms: some bugfixes

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@870 be3aeb3a-fb24-0410-a615-afba39da0efa
notaz 14 anos atrás
pai
commit
03065bb617
3 arquivos alterados com 10 adições e 2 exclusões
  1. 1 0
      pico/mode4.c
  2. 2 0
      pico/sms.c
  3. 7 2
      pico/state.c

+ 1 - 0
pico/mode4.c

@@ -260,6 +260,7 @@ void PicoDoHighPal555M4(void)
     t |= (t >> 4) & 0x08610861;
     *dpal = t;
   }
+  HighPal[0xe0] = 0;
 }
 
 static void FinalizeLineRGB555M4(int line)

+ 2 - 0
pico/sms.c

@@ -257,6 +257,8 @@ void PicoFrameMS(void)
   for (y = 0; y < lines; y++)
   {
     pv->v_counter = Pico.m.scanline = y;
+    if (y > 218)
+      pv->v_counter = y - 6;
 
     if (y < lines_vis && !skip)
       PicoLineMode4(y);

+ 7 - 2
pico/state.c

@@ -384,6 +384,10 @@ static int state_load(void *file)
   char header[8];
   int ver, len;
 
+  memset(buff_m68k, 0, sizeof(buff_m68k));
+  memset(buff_s68k, 0, sizeof(buff_s68k));
+  memset(buff_z80, 0, sizeof(buff_z80));
+
   g_read_offs = 0;
   CHECKED_READ(8, header);
   if (strncmp(header, "PicoSMCD", 8) && strncmp(header, "PicoSEXT", 8))
@@ -408,7 +412,6 @@ static int state_load(void *file)
 
       case CHUNK_Z80:
         CHECKED_READ_BUFF(buff_z80);
-        z80_unpack(buff_z80);
         break;
 
       case CHUNK_RAM:     CHECKED_READ_BUFF(Pico.ram); break;
@@ -499,13 +502,15 @@ readend:
     if (!(Pico_mcd->s68k_regs[0x36] & 1) && (Pico_mcd->scd.Status_CDC & 1))
       cdda_start_play();
 
-    // must unpack after mem is set up
     SekUnpackCpu(buff_s68k, 1);
   }
 
+  // must unpack 68k and z80 after banks are set up
   if (!(PicoAHW & PAHW_SMS))
     SekUnpackCpu(buff_m68k, 0);
 
+  z80_unpack(buff_z80);
+
   if (PicoAHW & PAHW_32X)
     Pico32xStateLoaded();