additional movie tweaking
authornotaz <notasas@gmail.com>
Tue, 26 Dec 2006 01:13:52 +0000 (01:13 +0000)
committernotaz <notasas@gmail.com>
Tue, 26 Dec 2006 01:13:52 +0000 (01:13 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@7 be3aeb3a-fb24-0410-a615-afba39da0efa

Pico/Pico.c
Pico/VideoPort.c
Pico/cd/Memory.c
platform/gp2x/Makefile
platform/gp2x/emu.c

index 5ab8483..b430d66 100644 (file)
@@ -621,6 +621,8 @@ int PicoFrame(void)
 {\r
   int acc;\r
 \r
+  Pico.m.frame_count++;\r
+\r
   if (PicoMCD & 1) {\r
     PicoFrameMCD();\r
     return 0;\r
index 7f3d009..75267c3 100644 (file)
@@ -189,7 +189,8 @@ static void DmaCopy(int len)
   dprintf("DmaCopy len %i [%i|%i]", len, Pico.m.scanline, SekCyclesDone());\r
 \r
   Pico.m.dma_bytes += len;\r
-  Pico.video.status|=2; // dma busy\r
+  if(Pico.m.scanline != -1)\r
+    Pico.video.status|=2; // dma busy\r
 \r
   source =Pico.video.reg[0x15];\r
   source|=Pico.video.reg[0x16]<<8;\r
@@ -222,7 +223,8 @@ static void DmaFill(int data)
   dprintf("DmaFill len %i inc %i [%i|%i]", len, inc, Pico.m.scanline, SekCyclesDone());\r
 \r
   Pico.m.dma_bytes += len;\r
-  Pico.video.status|=2; // dma busy\r
+  if(Pico.m.scanline != -1)\r
+    Pico.video.status|=2; // dma busy (in accurate mode)\r
 \r
   // from Charles MacDonald's genvdp.txt:\r
   // Write lower byte to address specified\r
@@ -416,7 +418,7 @@ unsigned int PicoVideoRead(unsigned int a)
            hc=hcounts_40[lineCycles];\r
       else hc=hcounts_32[lineCycles];\r
 \r
-      if(lineCycles > 488-12) d++; // Wheel of Fortune\r
+      //if(lineCycles > 488-12) d++; // Wheel of Fortune\r
     } else {\r
       // get approximate V-Counter\r
       d=vcounts[SekCyclesDone()>>8];\r
index b8322d8..a1cadb1 100644 (file)
@@ -25,7 +25,7 @@ typedef unsigned int   u32;
 \r
 // -----------------------------------------------------------------\r
 \r
-extern m68ki_cpu_core m68ki_cpu;\r
+// extern m68ki_cpu_core m68ki_cpu;\r
 \r
 extern int counter75hz;\r
 \r
index c634c3d..a524cc0 100644 (file)
@@ -40,6 +40,9 @@ OBJS += 940ctl_ym2612.o
 # Pico\r
 OBJS += ../../Pico/Area.o ../../Pico/Cart.o ../../Pico/Utils.o ../../Pico/Memory.o ../../Pico/Misc.o \\r
                ../../Pico/Pico.o ../../Pico/Sek.o ../../Pico/VideoPort.o ../../Pico/Draw2.o ../../Pico/Draw.o\r
+# Pico - CD\r
+OBJS += ../../Pico/cd/Pico.o ../../Pico/cd/Memory.o ../../Pico/cd/Sek.o ../../Pico/cd/LC89510.o \\r
+               ../../Pico/cd/cd_sys.o\r
 # asm stuff\r
 ifeq "$(asm_render)" "1"\r
 DEFINC += -D_ASM_DRAW_C\r
index d84b053..6e0021b 100644 (file)
@@ -95,21 +95,28 @@ static int try_rfn_ext(char *ext)
        return 0;\r
 }\r
 \r
+static void get_ext(char *ext)\r
+{\r
+       char *p;\r
+\r
+       p = romFileName + strlen(romFileName) - 4;\r
+       if (p < romFileName) p = romFileName;\r
+       strncpy(ext, p, 4);\r
+       ext[4] = 0;\r
+       strlwr(ext);\r
+}\r
+\r
 int emu_ReloadRom(void)\r
 {\r
        unsigned int rom_size = 0;\r
-       char ext[5], *p;\r
+       char ext[5];\r
        FILE *rom;\r
        int ret;\r
 \r
        printf("emu_ReloadRom(%s)\n", romFileName);\r
 \r
-       // detect wrong extensions (.srm and .mds)\r
-       p = romFileName + strlen(romFileName) - 4;\r
-       if (p < romFileName) p = romFileName;\r
-       strncpy(ext, p, 4);\r
-       ext[4] = 0;\r
-       strlwr(ext);\r
+       // detect wrong extensions\r
+       get_ext(ext);\r
 \r
        if(!strcmp(ext, ".srm") || !strcmp(ext, "s.gz") || !strcmp(ext, ".mds")) { // s.gz ~ .mds.gz\r
                sprintf(menuErrorMsg, "Not a ROM selected.");\r
@@ -155,6 +162,7 @@ int emu_ReloadRom(void)
                        sprintf(menuErrorMsg, "Could't find a ROM for movie.");\r
                        return 0;\r
                }\r
+               get_ext(ext);\r
        }\r
 \r
        rom = fopen(romFileName, "rb");\r
@@ -615,6 +623,8 @@ static void RunEvents(unsigned int which)
                }\r
                if (do_it) {\r
                        blit("", (which & 0x1000) ? "LOADING GAME" : "SAVING GAME");\r
+                       if(movie_data) {\r
+                       }\r
                        emu_SaveLoadGame(which & 0x1000, 0);\r
                }\r
 \r
@@ -654,6 +664,35 @@ static void RunEvents(unsigned int which)
 }\r
 \r
 \r
+static void updateMovie(void)\r
+{\r
+       int offs = Pico.m.frame_count*3 + 0x40;\r
+       if (offs+3 > movie_size) {\r
+               free(movie_data);\r
+               movie_data = 0;\r
+               strcpy(noticeMsg, "END OF MOVIE.");\r
+               printf("END OF MOVIE.\n");\r
+               gettimeofday(&noticeMsgTime, 0);\r
+       } else {\r
+               // MXYZ SACB RLDU\r
+               PicoPad[0] = ~movie_data[offs]   & 0x8f; // ! SCBA RLDU\r
+               if(!(movie_data[offs]   & 0x10)) PicoPad[0] |= 0x40; // A\r
+               if(!(movie_data[offs]   & 0x20)) PicoPad[0] |= 0x10; // B\r
+               if(!(movie_data[offs]   & 0x40)) PicoPad[0] |= 0x20; // A\r
+               PicoPad[1] = ~movie_data[offs+1] & 0x8f; // ! SCBA RLDU\r
+               if(!(movie_data[offs+1] & 0x10)) PicoPad[1] |= 0x40; // A\r
+               if(!(movie_data[offs+1] & 0x20)) PicoPad[1] |= 0x10; // B\r
+               if(!(movie_data[offs+1] & 0x40)) PicoPad[1] |= 0x20; // A\r
+               PicoPad[0] |= (~movie_data[offs+2] & 0x0A) << 8; // ! MZYX\r
+               if(!(movie_data[offs+2] & 0x01)) PicoPad[0] |= 0x0400; // X\r
+               if(!(movie_data[offs+2] & 0x04)) PicoPad[0] |= 0x0100; // Z\r
+               PicoPad[1] |= (~movie_data[offs+2] & 0xA0) << 4; // ! MZYX\r
+               if(!(movie_data[offs+2] & 0x10)) PicoPad[1] |= 0x0400; // X\r
+               if(!(movie_data[offs+2] & 0x40)) PicoPad[1] |= 0x0100; // Z\r
+       }\r
+}\r
+\r
+\r
 static void updateKeys(void)\r
 {\r
        unsigned long keys, allActions[2] = { 0, 0 }, events;\r
@@ -710,39 +749,8 @@ static void updateKeys(void)
                }\r
        }\r
 \r
-       if(movie_data)\r
-       {\r
-               int offs = Pico.m.frame_count*3 + 0x40;\r
-               if (offs+3 > movie_size) {\r
-                       free(movie_data);\r
-                       movie_data = 0;\r
-                       strcpy(noticeMsg, "END OF MOVIE.");\r
-                       printf("END OF MOVIE.\n");\r
-                       gettimeofday(&noticeMsgTime, 0);\r
-               } else {\r
-                       // MXYZ SACB RLDU\r
-                       PicoPad[0] = ~movie_data[offs]   & 0x8f; // ! SCBA RLDU\r
-                       if(!(movie_data[offs]   & 0x10)) PicoPad[0] |= 0x40; // A\r
-                       if(!(movie_data[offs]   & 0x20)) PicoPad[0] |= 0x10; // B\r
-                       if(!(movie_data[offs]   & 0x40)) PicoPad[0] |= 0x20; // A\r
-                       PicoPad[1] = ~movie_data[offs+1] & 0x8f; // ! SCBA RLDU\r
-                       if(!(movie_data[offs+1] & 0x10)) PicoPad[1] |= 0x40; // A\r
-                       if(!(movie_data[offs+1] & 0x20)) PicoPad[1] |= 0x10; // B\r
-                       if(!(movie_data[offs+1] & 0x40)) PicoPad[1] |= 0x20; // A\r
-                       PicoPad[0] |= (~movie_data[offs+2] & 0x0A) << 8; // ! MZYX\r
-                       if(!(movie_data[offs+2] & 0x01)) PicoPad[0] |= 0x0400; // X\r
-                       if(!(movie_data[offs+2] & 0x04)) PicoPad[0] |= 0x0100; // Z\r
-                       PicoPad[1] |= (~movie_data[offs+2] & 0xA0) << 4; // ! MZYX\r
-                       if(!(movie_data[offs+2] & 0x10)) PicoPad[1] |= 0x0400; // X\r
-                       if(!(movie_data[offs+2] & 0x40)) PicoPad[1] |= 0x0100; // Z\r
-               }\r
-       }\r
-       else\r
-       {\r
-               PicoPad[0] = (unsigned short) allActions[0];\r
-               PicoPad[1] = (unsigned short) allActions[1];\r
-       }\r
-       Pico.m.frame_count++;\r
+       PicoPad[0] = (unsigned short) allActions[0];\r
+       PicoPad[1] = (unsigned short) allActions[1];\r
 \r
        events = (allActions[0] | allActions[1]) >> 16;\r
 \r
@@ -762,6 +770,7 @@ static void updateKeys(void)
 \r
        events &= ~prevEvents;\r
        if (events) RunEvents(events);\r
+       if (movie_data) updateMovie();\r
 \r
        prevEvents = (allActions[0] | allActions[1]) >> 16;\r
 }\r