X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=cart.c;h=0dd8fee24c2dcd7d0487674f16376f9aed42a999;hp=1113f3535771a8af04d55ed5555db5383b6d20f2;hb=d0f72c9ab3d6acf18f236970c1c359fafa3e1ce7;hpb=13624c8f3ac5cd1b255a5078c5401b0f97037964 diff --git a/cart.c b/cart.c index 1113f35..0dd8fee 100644 --- a/cart.c +++ b/cart.c @@ -22,6 +22,10 @@ #include #include +#ifdef GP2X +#include // for sync() +#endif + #include "types.h" #include "fce.h" #include "ppu.h" @@ -642,6 +646,24 @@ void GeniePower(void) geniestage=2; } +static uint8 *real_pages[16]; + +void GenieSetPages(int restore) +{ + int page; + if (restore) + { + for (page=16; page<32; page++) + Page[page] = real_pages[page-16]; + } + else + { + for (page=16; page<32; page++) { + real_pages[page-16] = Page[page]; + Page[page]=GENIEROM - (page<<11) + ((page&1)<<11); + } + } +} void FCEU_SaveGameSave(CartInfo *LocalHWInfo) { @@ -665,6 +687,10 @@ void FCEU_SaveGameSave(CartInfo *LocalHWInfo) fwrite(LocalHWInfo->SaveGame[x],1, LocalHWInfo->SaveGameLen[x],sp); } + fclose(sp); +#ifdef GP2X + sync(); +#endif } free(soot); } @@ -688,9 +714,28 @@ void FCEU_LoadGameSave(CartInfo *LocalHWInfo) for(x=0;x<4;x++) if(LocalHWInfo->SaveGame[x]) fread(LocalHWInfo->SaveGame[x],1,LocalHWInfo->SaveGameLen[x],sp); + fclose(sp); } free(soot); } } +void DumpEmptyCartMapping(void) +{ + int x, st=0, end=-1; + + for(x=8;x<32;x++) + { + if (Page[x] == (nothing-x*2048) || Page[x] == 0) + { + if (end != x) st=x; + end=x+1; + } + if (end == x) + printf("DumpEmptyCartMapping: %04x-%04x\n", st*2048, end*2048-1); + } + if (end==32) + printf("DumpEmptyCartMapping: %04x-%04x\n", st*2048, end*2048-1); +} +