fixed: broken fs0, sram saves
[fceu.git] / fds.c
diff --git a/fds.c b/fds.c
index 8e2fa60..e5307ac 100644 (file)
--- a/fds.c
+++ b/fds.c
 #include <stdlib.h>\r
 #include <string.h>\r
 \r
+#ifdef GP2X\r
+#include <unistd.h> // for sync()\r
+#endif\r
+\r
 #include "types.h"\r
 #include "x6502.h"\r
 #include "fce.h"\r
@@ -85,12 +89,13 @@ static uint8 SelectDisk,InDisk;
 \r
 #define DC_INC    1\r
 \r
-void FDSGI(int h)\r
+void FDSGI(int h, void *param)\r
 {\r
  switch(h)\r
  {\r
   case GI_CLOSE: FDSClose();break;\r
   case GI_POWER: FDSInit();break;\r
+  case GI_INFOSTRING: sprintf(param, "FDS, Sides: %d", TotalSides);break;\r
  }\r
 }\r
 \r
@@ -150,9 +155,9 @@ static void FDSInit(void)
   int page;\r
   // asm code needs pages to be set again..\r
   for (page=12; page<28; page++) // 0x6000-0xdfff 32K RAM\r
-   Page[page]=FDSRAM  - (page<<11) + ((page-12)<<11);\r
+   Page[page]=FDSRAM  - (12<<11);\r
   for (; page<32; page++)        // 0xe000-0xffff 8K BIOS\r
-   Page[page]=FDSBIOS - (page<<11) + ((page-28)<<11);\r
+   Page[page]=FDSBIOS - (28<<11);\r
  }\r
 #endif\r
 }\r
@@ -910,10 +915,12 @@ void FDSClose(void)
 {\r
  FILE *fp;\r
  int x;\r
- char *fn=FCEU_MakeFName(FCEUMKF_FDS,0,0);\r
+ char *fn;\r
 \r
  if(!DiskWritten) return;\r
 \r
+ fn=FCEU_MakeFName(FCEUMKF_FDS,0,0);\r
+\r
  if(!(fp=FCEUD_UTF8fopen(fn,"wb")))\r
  {\r
   free(fn);\r
@@ -932,4 +939,8 @@ void FDSClose(void)
  }\r
  FreeFDSMemory();\r
  fclose(fp);\r
+#ifdef GP2X\r
+ sync();\r
+#endif\r
 }\r
+\r