notaz.gp2x.de
/
fceu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
more opt. in sound.c, vol incresed
[fceu.git]
/
fce.c
diff --git
a/fce.c
b/fce.c
index
a5cc4b0
..
fb28572
100644
(file)
--- a/
fce.c
+++ b/
fce.c
@@
-203,6
+203,9
@@
void FlushGenieRW(void)
ARead[x+0x8000]=AReadG[x];
BWrite[x+0x8000]=BWriteG[x];
}
ARead[x+0x8000]=AReadG[x];
BWrite[x+0x8000]=BWriteG[x];
}
+#ifdef ASM_6502
+ GenieSetPages(1);
+#endif
free(AReadG);
free(BWriteG);
AReadG=0;
free(AReadG);
free(BWriteG);
AReadG=0;
@@
-559,7
+562,6
@@
void BGRender(uint8 *target)
}
#ifdef FRAMESKIP
}
#ifdef FRAMESKIP
-int FSkip_setting=-1; // auto
int FSkip=0;
void FCEUI_FrameSkip(int x)
{
int FSkip=0;
void FCEUI_FrameSkip(int x)
{
@@
-1078,6
+1080,7
@@
void ResetGameLoaded(void)
}
char lastLoadedGameName [2048];
}
char lastLoadedGameName [2048];
+int LoadGameLastError = 0;
int UNIFLoad(const char *name, int fp);
int iNESLoad(const char *name, int fp);
int FDSLoad(const char *name, int fp);
int UNIFLoad(const char *name, int fp);
int iNESLoad(const char *name, int fp);
int FDSLoad(const char *name, int fp);
@@
-1089,7
+1092,8
@@
FCEUGI *FCEUI_LoadGame(char *name)
int have_movie = 0;
int fp;
int have_movie = 0;
int fp;
- Exit=1;
+ //Exit=1;
+ LoadGameLastError = 0;
ResetGameLoaded();
strncpy(name2, name, sizeof(name2));
ResetGameLoaded();
strncpy(name2, name, sizeof(name2));
@@
-1099,6
+1103,7
@@
FCEUGI *FCEUI_LoadGame(char *name)
if(!fp)
{
FCEU_PrintError("Error opening \"%s\"!",name);
if(!fp)
{
FCEU_PrintError("Error opening \"%s\"!",name);
+ LoadGameLastError = 1;
return 0;
}
return 0;
}
@@
-1111,16
+1116,17
@@
FCEUGI *FCEUI_LoadGame(char *name)
FCEU_fclose(fp);
*p = 0;
fp=FCEU_fopen(name2,"rb");
FCEU_fclose(fp);
*p = 0;
fp=FCEU_fopen(name2,"rb");
+ if (!fp && p - name2 > 2) p[-2] = 0;
+ fp=FCEU_fopen(name2,"rb");
if (!fp) {
printf("no ROM for movie\n");
if (!fp) {
printf("no ROM for movie\n");
+ LoadGameLastError = 2;
return 0;
}
have_movie = 1;
}
}
return 0;
}
have_movie = 1;
}
}
- strcpy(lastLoadedGameName, name2);
-
GetFileBase(name2);
if(iNESLoad(name2,fp))
goto endlseq;
GetFileBase(name2);
if(iNESLoad(name2,fp))
goto endlseq;
@@
-1133,6
+1139,8
@@
FCEUGI *FCEUI_LoadGame(char *name)
FCEU_PrintError("An error occurred while loading the file.");
FCEU_fclose(fp);
FCEU_PrintError("An error occurred while loading the file.");
FCEU_fclose(fp);
+ // format handlers may set LoadGameLastError themselves.
+ if (LoadGameLastError == 0) LoadGameLastError = 3;
return 0;
endlseq:
return 0;
endlseq:
@@
-1160,6
+1168,9
@@
FCEUGI *FCEUI_LoadGame(char *name)
if (have_movie)
FCEUI_LoadMovie(name, 1);
if (have_movie)
FCEUI_LoadMovie(name, 1);
+
+ strcpy(lastLoadedGameName, name2);
+
return(&FCEUGameInfo);
}
return(&FCEUGameInfo);
}
@@
-1353,7
+1364,7
@@
update:
if(Exit)
{
if(Exit)
{
- CloseGame();
+
//
CloseGame();
break;
}
break;
}
@@
-1425,6
+1436,18
@@
void ResetNES(void)
X6502_Reset();
}
X6502_Reset();
}
+static void FCEU_MemoryRand(uint8 *ptr, uint32 size)
+{
+ int x=0;
+ while(size)
+ {
+ *ptr=(x&4)?0xFF:0x00;
+ x++;
+ size--;
+ ptr++;
+ }
+}
+
void PowerNES(void)
{
if(!GameLoaded) return;
void PowerNES(void)
{
if(!GameLoaded) return;
@@
-1434,12
+1457,20
@@
void PowerNES(void)
GeniePower();
GeniePower();
+#ifndef DEBUG_ASM_6502
+ FCEU_MemoryRand(RAM,0x800);
+#else
memset(RAM,0x00,0x800);
memset(RAM,0x00,0x800);
+#endif
ResetMapping();
GameInterface(GI_POWER);
PowerSound();
PowerPPU();
timestampbase=0;
ResetMapping();
GameInterface(GI_POWER);
PowerSound();
PowerPPU();
timestampbase=0;
+#ifdef ASM_6502
+ if (geniestage)
+ GenieSetPages(0);
+#endif
X6502_Power();
}
X6502_Power();
}