parent
f4535346fb
commit
a501682e0f
|
@ -501,25 +501,28 @@ HANDLE mapRAM;
|
|||
void win_AllocBuffers(uint8 **GameMemBlock, uint8 **RAM)
|
||||
{
|
||||
mapGameMemBlock = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, 131072,"fceu.GameMemBlock");
|
||||
|
||||
if(mapGameMemBlock == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
|
||||
*GameMemBlock = (uint8 *) malloc(131072);
|
||||
else
|
||||
if((*GameMemBlock = (uint8 *)MapViewOfFile(mapGameMemBlock, FILE_MAP_WRITE, 0, 0, 0)) == NULL)
|
||||
{
|
||||
//mbg 7/28/06 - is this the proper error handling?
|
||||
//do we need to indicate to user somehow that this failed in this emu instance?
|
||||
CloseHandle(mapGameMemBlock);
|
||||
|
||||
mapGameMemBlock = NULL;
|
||||
*GameMemBlock = (uint8 *) malloc(131072);
|
||||
*RAM = (uint8 *) malloc(2048);
|
||||
}
|
||||
mapRAM = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, 0x800,"fceu.RAM");
|
||||
if(mapRAM == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
|
||||
*RAM = (uint8 *) malloc(2048);
|
||||
else
|
||||
{
|
||||
*GameMemBlock = (uint8 *)MapViewOfFile(mapGameMemBlock, FILE_MAP_WRITE, 0, 0, 0);
|
||||
|
||||
// set up shared memory mappings
|
||||
mapRAM = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, 0x800,"fceu.RAM");
|
||||
*RAM = (uint8 *)MapViewOfFile(mapRAM, FILE_MAP_WRITE, 0, 0, 0);
|
||||
if((*RAM = (uint8 *)MapViewOfFile(mapRAM, FILE_MAP_WRITE, 0, 0, 0)) == NULL)
|
||||
{
|
||||
CloseHandle(mapRAM);
|
||||
mapRAM = NULL;
|
||||
*RAM = (uint8 *) malloc(2048);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -528,27 +531,23 @@ void win_FreeBuffers(uint8 *GameMemBlock, uint8 *RAM)
|
|||
//clean up shared memory
|
||||
if(mapRAM)
|
||||
{
|
||||
UnmapViewOfFile(mapRAM);
|
||||
CloseHandle(mapRAM);
|
||||
RAM = NULL;
|
||||
mapRAM = NULL;
|
||||
CloseHandle(RAM);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(RAM);
|
||||
RAM = NULL;
|
||||
}
|
||||
if(mapGameMemBlock)
|
||||
{
|
||||
UnmapViewOfFile(mapGameMemBlock);
|
||||
CloseHandle(mapGameMemBlock);
|
||||
GameMemBlock = NULL;
|
||||
mapGameMemBlock = NULL;
|
||||
CloseHandle(GameMemBlock);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(GameMemBlock);
|
||||
GameMemBlock = NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void do_exit()
|
||||
|
|
|
@ -231,7 +231,7 @@ static int InitBPPStuff(int fs)
|
|||
|
||||
int SetVideoMode(int fs)
|
||||
{
|
||||
int specmul; // Special scaler size multiplier
|
||||
int specmul = 1; // Special scaler size multiplier
|
||||
|
||||
|
||||
if(fs)
|
||||
|
|
|
@ -342,7 +342,8 @@ static void AllocBuffers()
|
|||
#endif
|
||||
}
|
||||
|
||||
static void FreeBuffers() {
|
||||
static void FreeBuffers()
|
||||
{
|
||||
#ifdef _USE_SHARED_MEMORY_
|
||||
void win_FreeBuffers(uint8 *GameMemBlock, uint8 *RAM);
|
||||
win_FreeBuffers(GameMemBlock, RAM);
|
||||
|
|
107
src/ines.cpp
107
src/ines.cpp
|
@ -56,7 +56,7 @@ iNES_HEADER head ;
|
|||
|
||||
|
||||
#ifdef _USE_SHARED_MEMORY_
|
||||
HANDLE mapROM, mapVROM;
|
||||
HANDLE mapROM = NULL, mapVROM = NULL;
|
||||
#endif
|
||||
|
||||
static CartInfo iNESCart;
|
||||
|
@ -130,33 +130,29 @@ void iNESGI(GI h) //bbit edited: removed static keyword
|
|||
{
|
||||
if(mapROM)
|
||||
{
|
||||
UnmapViewOfFile(mapROM);
|
||||
CloseHandle(mapROM);
|
||||
ROM=0;
|
||||
mapROM = NULL;
|
||||
UnmapViewOfFile(ROM);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(ROM);
|
||||
ROM = NULL;
|
||||
}
|
||||
}
|
||||
if(VROM)
|
||||
{
|
||||
if(mapVROM)
|
||||
{
|
||||
UnmapViewOfFile(mapVROM);
|
||||
CloseHandle(mapVROM);
|
||||
VROM=0;
|
||||
mapVROM = NULL;
|
||||
UnmapViewOfFile(VROM);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(VROM);
|
||||
VROM = NULL;
|
||||
}
|
||||
}
|
||||
#else
|
||||
if(ROM) {free(ROM);ROM=0;}
|
||||
if(VROM) {free(VROM);VROM=0;}
|
||||
if(ROM) {free(ROM); ROM = NULL;}
|
||||
if(VROM) {free(VROM); VROM = NULL;}
|
||||
#endif
|
||||
if(MapClose) MapClose();
|
||||
if(trainerpoo) {FCEU_gfree(trainerpoo);trainerpoo=0;}
|
||||
|
@ -424,8 +420,9 @@ static void CheckHInfo(void)
|
|||
#ifdef _USE_SHARED_MEMORY_
|
||||
if(mapVROM)
|
||||
{
|
||||
UnmapViewOfFile(mapVROM);
|
||||
CloseHandle(mapVROM);
|
||||
UnmapViewOfFile(VROM);
|
||||
mapVROM = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -434,7 +431,7 @@ static void CheckHInfo(void)
|
|||
#else
|
||||
free(VROM);
|
||||
#endif
|
||||
VROM=0;
|
||||
VROM = NULL;
|
||||
tofix|=8;
|
||||
}
|
||||
if(MapperNo!=(moo[x].mapper&0xFF))
|
||||
|
@ -740,48 +737,67 @@ int iNESLoad(const char *name, FCEUFILE *fp, int OverwriteVidMode)
|
|||
mapROM = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, ROM_size<<14,"fceu.ROM");
|
||||
if(mapROM == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
|
||||
{
|
||||
mapROM = NULL;
|
||||
if((ROM = (uint8 *)FCEU_malloc(ROM_size<<14)) == NULL) return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if((ROM = (uint8 *)MapViewOfFile(mapROM, FILE_MAP_WRITE, 0, 0, 0)) == NULL)
|
||||
{
|
||||
CloseHandle(mapROM);
|
||||
|
||||
if(!(ROM=(uint8 *)FCEU_malloc(ROM_size<<14)))
|
||||
return 0;
|
||||
|
||||
mapROM = NULL;
|
||||
if((ROM = (uint8 *)FCEU_malloc(ROM_size<<14)) == NULL) return 0;
|
||||
}
|
||||
}
|
||||
if(VROM_size)
|
||||
{
|
||||
if(!(VROM=(uint8 *)FCEU_malloc(VROM_size<<13)))
|
||||
mapVROM = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, VROM_size<<13,"fceu.VROM");
|
||||
if(mapVROM == NULL || GetLastError() == ERROR_ALREADY_EXISTS)
|
||||
{
|
||||
if((VROM=(uint8 *)FCEU_malloc(VROM_size<<13)) == NULL)
|
||||
{
|
||||
if(mapROM)
|
||||
{
|
||||
UnmapViewOfFile(mapROM);
|
||||
mapROM = NULL;
|
||||
CloseHandle(ROM);
|
||||
}
|
||||
else
|
||||
free(ROM);
|
||||
ROM = NULL;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((VROM = (uint8 *)MapViewOfFile(mapVROM, FILE_MAP_WRITE, 0, 0, 0)) == NULL)
|
||||
{
|
||||
CloseHandle(mapVROM);
|
||||
mapVROM = NULL;
|
||||
if((VROM=(uint8 *)FCEU_malloc(VROM_size<<13)) == NULL)
|
||||
{
|
||||
if(mapROM)
|
||||
{
|
||||
UnmapViewOfFile(mapROM);
|
||||
mapROM = NULL;
|
||||
CloseHandle(ROM);
|
||||
}
|
||||
else
|
||||
free(ROM);
|
||||
ROM = NULL;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ROM = (uint8 *)MapViewOfFile(mapROM, FILE_MAP_WRITE, 0, 0, 0);
|
||||
if( !ROM ) return 0;
|
||||
|
||||
if(VROM_size)
|
||||
{
|
||||
mapVROM = CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE, 0, VROM_size<<13,"fceu.VROM");
|
||||
VROM = (uint8 *)MapViewOfFile(mapVROM, FILE_MAP_WRITE, 0, 0, 0);
|
||||
if( !VROM )
|
||||
{
|
||||
UnmapViewOfFile(mapROM);
|
||||
CloseHandle(mapROM);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
if(!(ROM=(uint8 *)FCEU_malloc(ROM_size<<14)))
|
||||
return 0;
|
||||
if((ROM = (uint8 *)FCEU_malloc(ROM_size<<14)) == NULL) return 0;
|
||||
|
||||
if(VROM_size)
|
||||
{
|
||||
if(!(VROM=(uint8 *)FCEU_malloc(VROM_size<<13)))
|
||||
if((VROM = (uint8 *)FCEU_malloc(VROM_size<<13)) == NULL)
|
||||
{
|
||||
free(ROM);
|
||||
ROM = NULL;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -1488,14 +1504,19 @@ static int NewiNES_Init(int num)
|
|||
{
|
||||
CloseHandle(mapVROM);
|
||||
mapVROM = NULL;
|
||||
VROM=(uint8 *)malloc(CHRRAMSize);
|
||||
if((VROM = (uint8 *)malloc(CHRRAMSize)) == NULL) return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
VROM = (uint8 *)MapViewOfFile(mapVROM, FILE_MAP_WRITE, 0, 0, 0);
|
||||
if((VROM = (uint8 *)MapViewOfFile(mapVROM, FILE_MAP_WRITE, 0, 0, 0)) == NULL)
|
||||
{
|
||||
CloseHandle(mapVROM);
|
||||
mapVROM = NULL;
|
||||
if((VROM = (uint8 *)malloc(CHRRAMSize)) == NULL) return 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
VROM=(uint8 *)malloc(CHRRAMSize);
|
||||
if((VROM = (uint8 *)malloc(CHRRAMSize)) == NULL) return 0;
|
||||
#endif
|
||||
UNIFchrrama=VROM;
|
||||
SetupCartCHRMapping(0,VROM,CHRRAMSize,1);
|
||||
|
@ -1504,9 +1525,9 @@ static int NewiNES_Init(int num)
|
|||
if(head.ROM_type&8)
|
||||
AddExState(ExtraNTARAM, 2048, 0, "EXNR");
|
||||
tmp->init(&iNESCart);
|
||||
return(1);
|
||||
return 1;
|
||||
}
|
||||
tmp++;
|
||||
}
|
||||
return(0);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ static DECLFW(Mapper25_write)
|
|||
VROM_BANK1(0x0000,0xFC);
|
||||
VROM_BANK1(0x0400,0xFD);
|
||||
VROM_BANK1(0x0800,0xFF);
|
||||
VROM_BANK1(0x0c00,0xCF);
|
||||
}
|
||||
|
||||
A=(A&0xF003)|((A&0xC)>>2);
|
||||
|
|
Loading…
Reference in New Issue