win32 stuff, SIMPLE_WRITE_SOUND
[picodrive.git] / platform / win32 / GenaDrive / Loop.cpp
index 54d3519..b4b3eec 100644 (file)
@@ -1,27 +1,10 @@
 #include "app.h"\r
-#include "FileMenu.h"\r
-\r
-// sram\r
-struct PicoSRAM\r
-{\r
-  unsigned char *data; // actual data\r
-  unsigned int start;  // start address in 68k address space\r
-  unsigned int end;\r
-  unsigned char resize; // 1=SRAM size changed and needs to be reallocated on PicoReset\r
-  unsigned char reg_back; // copy of Pico.m.sram_reg to set after reset\r
-  unsigned char changed;\r
-  unsigned char pad;\r
-};\r
-\r
-extern "C" PicoSRAM SRam;\r
-extern char *romname;\r
-int fastForward=0;\r
-int frameStep=0;\r
+//#include "FileMenu.h"\r
 \r
 char LoopQuit=0;\r
 static FILE *DebugFile=NULL;\r
 int LoopMode=0;\r
-static void UpdateSound();\r
+static void UpdateSound(int len);\r
 \r
 int LoopInit()\r
 {\r
@@ -30,19 +13,18 @@ int LoopInit()
   // bits LSb->MSb:\r
   // enable_ym2612&dac, enable_sn76496, enable_z80, stereo_sound;\r
   // alt_renderer, 6button_gamepad, accurate_timing, accurate_sprites\r
-  PicoOpt=0x1f;\r
+  PicoOpt=0xbcc7;\r
   PsndRate=44100;\r
-  //PsndLen=PsndRate/60;   // calculated later by pico itself\r
 \r
   // Init Direct3D:\r
-  ret=DirectInit(); if (ret) return 1;\r
+  ret=DirectInit(); if (ret) { error("DirectX video init failed"); return 1; }\r
   InputInit();\r
 \r
   // Init DirectSound:\r
   //DSoundInit();\r
 \r
   ret=EmuInit(); if (ret) return 1;\r
-  FileMenu.init();\r
+  //FileMenu.init();\r
 \r
   LoopMode=8;\r
   PicoWriteSound = UpdateSound;\r
@@ -50,39 +32,13 @@ int LoopInit()
   return 0;\r
 }\r
 \r
-void preLoopInit()\r
-{\r
-  romname[strlen(romname)-3] = 0;\r
-  strcat(romname, "srm");\r
-  int sram_size = SRam.end-SRam.start+1;\r
-  if(SRam.reg_back & 4) sram_size=0x2000;\r
-  FILE *f = fopen(romname, "rb");\r
-  if(f && SRam.data)\r
-    fread(SRam.data, 1, sram_size, f);\r
-  if(f) fclose(f);\r
-}\r
-\r
 extern "C" char *debugString();\r
 \r
 void LoopExit()\r
 {\r
   dprintf(debugString());\r
 \r
-  romname[strlen(romname)-3] = 0;\r
-  strcat(romname, "srm");\r
-  int sram_size = SRam.end-SRam.start+1;\r
-  if(SRam.reg_back & 4) sram_size=0x2000;\r
-  for(; sram_size > 0; sram_size--)\r
-       if(SRam.data[sram_size-1]) break;\r
-  if(sram_size) {\r
-    FILE *f = fopen(romname, "wb");\r
-    if(f) {\r
-      fwrite(SRam.data, 1, sram_size, f);\r
-      fclose(f);\r
-       }\r
-  }\r
-\r
-  FileMenu.exit();\r
+  //FileMenu.exit();\r
   EmuExit();\r
   DSoundExit(); PsndLen=0;\r
   InputExit();\r
@@ -94,18 +50,9 @@ void LoopExit()
 \r
 // ----------------------------------------------------------------\r
 \r
-int emu_frame = 0;\r
-\r
 static int DoGame()\r
 {\r
-  if(fastForward) { PicoSkipFrame+=1; PicoSkipFrame&=7; }\r
-  else PicoSkipFrame=0;\r
-\r
-  if(frameStep==1)      return 0;\r
-  else if(frameStep==3) frameStep=1;\r
-\r
   EmuFrame();\r
-  emu_frame++;\r
 \r
   if (Inp.held[7]==1) LoopMode=2; // Right thumb = Toggle Menu\r
 \r
@@ -113,6 +60,7 @@ static int DoGame()
 }\r
 // ----------------------------------------------------------------\r
 \r
+/*\r
 static int MenuUpdate()\r
 {\r
   int delta=0;\r
@@ -149,6 +97,7 @@ static int MenuRender()
 \r
   return 0;\r
 }\r
+*/\r
 \r
 // ----------------------------------------------------------------\r
 \r
@@ -159,11 +108,11 @@ static int ModeUpdate()
 \r
   if (LoopMode==8) { DoGame(); return 0; }\r
 \r
-  if (DSoundNext) memset(DSoundNext,0,PsndLen<<2);\r
+//  if (DSoundNext) memset(DSoundNext,0,PsndLen<<2);\r
 \r
-  if (LoopMode==2) { FileMenu.scan(); LoopMode++; return 0; }\r
-  if (LoopMode==3) { MenuUpdate(); return 0; }\r
-  if (LoopMode==4) { LightCalUpdate(); return 0; }\r
+//  if (LoopMode==2) { FileMenu.scan(); LoopMode++; return 0; }\r
+//  if (LoopMode==3) { MenuUpdate(); return 0; }\r
+//  if (LoopMode==4) { LightCalUpdate(); return 0; }\r
 \r
   LoopMode=2; // Unknown mode, go to rom menu\r
   return 0;\r
@@ -173,17 +122,16 @@ static int ModeUpdate()
 static int ModeRender()\r
 {\r
   DirectScreen();\r
-  if (LoopMode==3) MenuRender();\r
-  if (LoopMode==4) LightCalRender();\r
+//  if (LoopMode==3) MenuRender();\r
+//  if (LoopMode==4) LightCalRender();\r
 \r
   return 0;\r
 }\r
 \r
-static void UpdateSound()\r
+static void UpdateSound(int len)\r
 {\r
-  if(fastForward) return;\r
-  while (DSoundUpdate()) { Sleep(1); }\r
-  while (DSoundUpdate()==0) { }\r
+  while (DSoundUpdate() > 0) { Sleep(1); }\r
+  while (DSoundUpdate()== 0) { }\r
 }\r
 \r
 int LoopCode()\r
@@ -206,6 +154,7 @@ int LoopCode()
 \r
 // -------------------------------------------------------------------------------------\r
 \r
+#if 0\r
 extern "C" int dprintf(char *format, ...)\r
 {\r
   char *name=NULL;\r
@@ -229,6 +178,7 @@ extern "C" int dprintf(char *format, ...)
   va_end(val);\r
   return 0;\r
 }\r
+#endif\r
 \r
 extern "C" int dprintf2(char *format, ...)\r
 {\r
@@ -242,3 +192,4 @@ extern "C" int dprintf2(char *format, ...)
 \r
   return 0;\r
 }\r
+\r