final tweaks for 1.55 release
[picodrive.git] / platform / win32 / GenaDrive / Emu.cpp
index 4e5bc95..46fa27a 100644 (file)
@@ -2,10 +2,11 @@
 #include "app.h"\r
 \r
 unsigned short *EmuScreen=NULL;\r
-extern "C" unsigned short *framebuff=NULL;\r
-int EmuWidth=0,EmuHeight=0;\r
-static int frame=0;\r
-static int EmuScan(unsigned int num, void *sdata);\r
+int EmuWidth=320,EmuHeight=224;\r
+RECT EmuScreenRect = { 0, 0, 320, 224 };\r
+int PicoPadAdd = 0;\r
+\r
+static int EmuScan(unsigned int num);\r
 unsigned char *PicoDraw2FB = NULL;\r
 \r
 int EmuInit()\r
@@ -18,12 +19,11 @@ int EmuInit()
   EmuWidth=320; EmuHeight=224;\r
   len=EmuWidth*EmuHeight; len<<=1;\r
   EmuScreen=(unsigned short *)malloc(len); if (EmuScreen==NULL) return 1;\r
-  framebuff=(unsigned short *)malloc((8+320)*(8+224+8)*2);\r
+  PicoDraw2FB=(unsigned char *)malloc((8+320)*(8+224+8)*2);\r
   memset(EmuScreen,0,len);\r
 \r
-  PicoDraw2FB = (unsigned char *)framebuff;\r
   PicoDrawSetColorFormat(1);\r
-  PicoScan=EmuScan;\r
+  PicoScanBegin=EmuScan;\r
 \r
   return 0;\r
 }\r
@@ -32,25 +32,16 @@ void EmuExit()
 {\r
   //RomFree();\r
   free(EmuScreen); EmuScreen=NULL; // Deallocate screen\r
-  free(framebuff);\r
+  free(PicoDraw2FB);\r
   EmuWidth=EmuHeight=0;\r
 \r
   PicoExit();\r
 }\r
 \r
 // Megadrive scanline callback:\r
-static int EmuScan(unsigned int num, void *sdata)\r
+static int EmuScan(unsigned int num)\r
 {\r
-  unsigned short *pd=NULL,*end=NULL;\r
-  unsigned short *ps=NULL;\r
-\r
-  if (num>=(unsigned int)EmuHeight) return 0;\r
-\r
-  // Copy scanline to screen buffer:\r
-  pd=EmuScreen+(num<<8)+(num<<6); end=pd+320;\r
-  ps=(unsigned short *)sdata;\r
-\r
-  do { *pd++=*ps++; } while (pd<end);\r
+  DrawLineDest=EmuScreen+(num<<8)+(num<<6);\r
   \r
   return 0;\r
 }\r
@@ -68,20 +59,16 @@ int EmuFrame()
   }\r
 \r
   PicoPad[0]=input;\r
+  PicoPad[0]|=PicoPadAdd;\r
 \r
-  frame++;\r
-  PsndOut=(short *)DSoundNext; PicoFrame(); PsndOut=NULL;\r
+  PsndOut=(short *)DSoundNext;\r
+  PicoFrame();\r
+  PsndOut=NULL;\r
 \r
   return 0;\r
 }\r
 \r
 \r
-\r
-int mp3_get_offset(void) // 0-1023\r
-{\r
-  return 0;\r
-}\r
-\r
 void mp3_update(int *buffer, int length, int stereo)\r
 {\r
 }\r