示例#1
0
void FCEUI_SetNTSCTH(int n, int tint, int hue)
{
 ntsctint=tint;
 ntschue=hue;
 ntsccol=n;
 FCEU_ResetPalette();
}
示例#2
0
void FCEUI_SetVidSystem(int a) {
	FSettings.PAL = a ? 1 : 0;
	if (FCEUGameInfo) {
		FCEU_ResetVidSys();
		FCEU_ResetPalette();
	}
}
示例#3
0
文件: palette.cpp 项目: Nolaan/fceux
void FCEUI_SetNTSCTH(bool en, int tint, int hue)
{
	ntsctint=tint;
	ntschue=hue;
	ntsccol_enable = en;
	FCEU_ResetPalette();
}
示例#4
0
文件: fceu.c 项目: ficoos/fceu-next
FCEUGI *FCEUI_LoadGame(const char *name)
{
	FCEUFILE *fp;

	ResetGameLoaded();

	FCEUGameInfo = malloc(sizeof(FCEUGI));
	memset(FCEUGameInfo, 0, sizeof(FCEUGI));

	FCEUGameInfo->soundchan = 0;
	FCEUGameInfo->soundrate = 0;
	FCEUGameInfo->name=0;
	FCEUGameInfo->type=GIT_CART;
	FCEUGameInfo->vidsys=GIV_USER;
	FCEUGameInfo->input[0]=FCEUGameInfo->input[1]=-1;
	FCEUGameInfo->inputfc=-1;
	FCEUGameInfo->cspecial=0;

	GetFileBase(name);

	fp=FCEU_fopen(name,"rb",0);

	if(!fp)
		return 0;	/*Error opening ROM*/

	if(iNESLoad(name,fp))
		goto endlseq;
	if(UNIFLoad(name,fp))
		goto endlseq;
	if(FDSLoad(name,fp))
		goto endlseq;

	FCEU_fclose(fp);	/*An error occcurred while loading the file*/
	return 0;

endlseq:
	FCEU_fclose(fp);

	FCEU_ResetVidSys();
	if(FSettings.GameGenie)
		OpenGenie();

	PowerNES();

	FCEU_LoadGamePalette();
	/*FCEU_LoadGameCheats(0);*/

	FCEU_ResetPalette();

	return(FCEUGameInfo);
}
示例#5
0
void FCEUI_SetPaletteArray(uint8 *pal) {
	if (!pal)
		palpoint[0] = palette;
	else {
		int x;
		palpoint[0] = palettec;
		for (x = 0; x < 64; x++) {
			palpoint[0][x].r = *((uint8*)pal + x + x + x);
			palpoint[0][x].g = *((uint8*)pal + x + x + x + 1);
			palpoint[0][x].b = *((uint8*)pal + x + x + x + 2);
		}
	}
	FCEU_ResetPalette();
}
示例#6
0
文件: palette.cpp 项目: Nolaan/fceux
void FCEUI_SetUserPalette(uint8 *pal, int nEntries)
{
	if(!pal)
	{
		palette_user_available = false;
	}
	else
	{
		palette_user_available = true;
		memcpy(palette_user,pal,nEntries*3);

		//if palette is incomplete, generate deemph entries
		if(nEntries != 512)
			ApplyDeemphasisComplete(palette_user);
	}
	FCEU_ResetPalette();
}
示例#7
0
FCEUGI *FCEUI_CopyFamiStart(void) {
	ResetGameLoaded();

	FCEUGameInfo = malloc(sizeof(FCEUGI));
	memset(FCEUGameInfo, 0, sizeof(FCEUGI));

	FCEUGameInfo->soundchan = 0;
	FCEUGameInfo->soundrate = 0;
	FCEUGameInfo->name = "copyfami";
	FCEUGameInfo->type = GIT_CART;
	FCEUGameInfo->vidsys = GIV_USER;
	FCEUGameInfo->input[0] = FCEUGameInfo->input[1] = -1;
	FCEUGameInfo->inputfc = -1;
	FCEUGameInfo->cspecial = 0;

	FCEU_printf("Starting CopyFamicom...\n\n");

	if (!CopyFamiLoad()) {
		FCEU_PrintError("An error occurred while starting CopyFamicom.");
		return 0;
	}

	FCEU_ResetVidSys();
	if (FCEUGameInfo->type != GIT_NSF)
		if (FSettings.GameGenie)
			FCEU_OpenGenie();

	PowerNES();
	FCEUSS_CheckStates();
	FCEUMOV_CheckMovies();

	if (FCEUGameInfo->type != GIT_NSF) {
		FCEU_LoadGamePalette();
		FCEU_LoadGameCheats(0);
	}

	FCEU_ResetPalette();
	FCEU_ResetMessages();  // Save state, status messages, etc.

	return(FCEUGameInfo);
}
示例#8
0
文件: palette.cpp 项目: Nolaan/fceux
void FCEU_LoadGamePalette(void)
{
	palette_game_available = false;
	std::string path = FCEU_MakeFName(FCEUMKF_PALETTE,0,0);
	FILE* fp = FCEUD_UTF8fopen(path,"rb");
	if(fp)
	{
		int readed = fread(palette_game,1,64*8*3,fp);
		int nEntries = readed/3;
		fclose(fp);

		//if palette is incomplete, generate deemph entries
		if(nEntries != 512)
			ApplyDeemphasisComplete(palette_game);

		palette_game_available = true;
	}

	//not sure whether this is needed
	FCEU_ResetPalette();
}
示例#9
0
文件: fceu.c 项目: ficoos/fceu-next
FCEUGI *FCEUI_CopyFamiStart(void)
{
	ResetGameLoaded();

	FCEUGameInfo = malloc(sizeof(FCEUGI));
	memset(FCEUGameInfo, 0, sizeof(FCEUGI));

	FCEUGameInfo->soundchan = 0;
	FCEUGameInfo->soundrate = 0;
	FCEUGameInfo->name="copyfami";
	FCEUGameInfo->type=GIT_CART;
	FCEUGameInfo->vidsys=GIV_USER;
	FCEUGameInfo->input[0]=FCEUGameInfo->input[1]=-1;
	FCEUGameInfo->inputfc=-1;
	FCEUGameInfo->cspecial=0;

#ifdef FCEU_LOG
	FCEU_printf("Starting CopyFamicom...\n\n");
#endif

	if(!CopyFamiLoad())
		return 0;	/*An error occurred while starting CopyFamicom*/

	FCEU_ResetVidSys();
	if(FSettings.GameGenie)
		OpenGenie();

	PowerNES();

	FCEU_LoadGamePalette();
	FCEU_LoadGameCheats(0);

	FCEU_ResetPalette();

	return(FCEUGameInfo);
}
示例#10
0
int GCMemROM(int method, int size)
{
    ResetGameLoaded();

    /*** Allocate and clear GameInfo ***/

    FCEUGameInfo = malloc(sizeof(FCEUGI));
    memset(FCEUGameInfo, 0, sizeof(FCEUGI));

    /*** Set some default values ***/
    FCEUGameInfo->soundchan = 1;
    FCEUGameInfo->soundrate = SAMPLERATE;
    FCEUGameInfo->name=0;
    FCEUGameInfo->type=GIT_CART;
    FCEUGameInfo->vidsys=GIV_USER;
    FCEUGameInfo->input[0]=FCEUGameInfo->input[1]=-1;
    FCEUGameInfo->inputfc=-1;
    FCEUGameInfo->cspecial=0;

    /*** Set internal sound information ***/
    FCEUI_Sound(SAMPLERATE);
    FCEUI_SetSoundVolume(100); // 0-100
    FCEUI_SetSoundQuality(0); // 0 - low, 1 - high
    FCEUI_SetLowPass(0);

    InitialisePads();

    MakeFCEUFile((char *)nesrom, size);

    nesGameType = 0;

    if(iNESLoad(NULL, fceufp))
		nesGameType = 1;
	else if(UNIFLoad(NULL,fceufp))
		nesGameType = 2;
	else if(NSFLoad(fceufp))
		nesGameType = 3;
	else
	{
		// read FDS BIOS into FDSBIOS - should be 8192 bytes
		if(FDSBIOS[1] == 0)
		{
			int biosSize = 0;
			char * tmpbuffer = (char *)malloc(64 * 1024);

			char filepath[1024];

			switch (method)
			{
				case METHOD_SD:
				case METHOD_USB:
					sprintf(filepath, "%s/%s/disksys.rom", ROOTFATDIR, GCSettings.LoadFolder);
					biosSize = LoadBufferFromFAT(tmpbuffer, filepath, NOTSILENT);
					break;
				case METHOD_SMB:
					sprintf(filepath, "%s/disksys.rom", GCSettings.LoadFolder);
					biosSize = LoadBufferFromSMB(tmpbuffer, filepath, NOTSILENT);
					break;
			}

			if(biosSize == 8192)
			{
				memcpy(FDSBIOS, tmpbuffer, 8192);
			}
			else
			{
				if(biosSize > 0)
					WaitPrompt("FDS BIOS file is invalid!");

				return 0; // BIOS not loaded, do not load game
			}
			free(tmpbuffer);
		}
		// load game
		if(FDSLoad(NULL,fceufp))
			nesGameType = 4;
	}

    if (nesGameType > 0)
    {
        FCEU_ResetVidSys();
        PowerNES();
        FCEU_ResetPalette();
        FCEU_ResetMessages();	// Save state, status messages, etc.
        SetSoundVariables();
        romLoaded = true;
        return 1;
    }
    else
    {
        WaitPrompt("Invalid game file!");
        romLoaded = false;
        return 0;
    }
}
示例#11
0
文件: fceu.c 项目: feraligatr/fceugx
FCEUGI *FCEUI_LoadGame(const char *name)
{
        FCEUFILE *fp;
	char *ipsfn;

        ResetGameLoaded();

	FCEUGameInfo = malloc(sizeof(FCEUGI));
	memset(FCEUGameInfo, 0, sizeof(FCEUGI));

	FCEUGameInfo->soundchan = 0;
	FCEUGameInfo->soundrate = 0;
        FCEUGameInfo->name=0;
        FCEUGameInfo->type=GIT_CART;
        FCEUGameInfo->vidsys=GIV_USER;
        FCEUGameInfo->input[0]=FCEUGameInfo->input[1]=-1;
        FCEUGameInfo->inputfc=-1;
        FCEUGameInfo->cspecial=0;

	FCEU_printf("Loading %s...\n\n",name);

        GetFileBase(name);

	ipsfn=FCEU_MakeFName(FCEUMKF_IPS,0,0);
	fp=FCEU_fopen(name,ipsfn,"rb",0);
	free(ipsfn);

	if(!fp)
        {
 	 FCEU_PrintError("Error opening \"%s\"!",name);
	 return 0;
	}

        if(iNESLoad(name,fp))
         goto endlseq;
        if(NSFLoad(fp))
         goto endlseq;
        if(UNIFLoad(name,fp))
         goto endlseq;
        if(FDSLoad(name,fp))
         goto endlseq;

        FCEU_PrintError("An error occurred while loading the file.");
        FCEU_fclose(fp);
        return 0;

        endlseq:
        FCEU_fclose(fp);

        FCEU_ResetVidSys();
        if(FCEUGameInfo->type!=GIT_NSF)
         if(FSettings.GameGenie)
	  OpenGenie();

        PowerNES();
	FCEUSS_CheckStates();
	FCEUMOV_CheckMovies();

        if(FCEUGameInfo->type!=GIT_NSF)
        {
         FCEU_LoadGamePalette();
         FCEU_LoadGameCheats(0);
        }
        
	FCEU_ResetPalette();
	FCEU_ResetMessages();	// Save state, status messages, etc.

        return(FCEUGameInfo);
}
示例#12
0
int GCMemROM(int size)
{
	bool biosError = false;

	ResetGameLoaded();

	CloseGame();
	GameInfo = new FCEUGI();
	memset(GameInfo, 0, sizeof(FCEUGI));

	GameInfo->filename = strdup(romFilename);
	GameInfo->archiveCount = 0;

	/*** Set some default values ***/
	GameInfo->name=0;
	GameInfo->type=GIT_CART;
	GameInfo->vidsys=(EGIV)GCSettings.timing;
	GameInfo->input[0]=GameInfo->input[1]=SI_UNSET;
	GameInfo->inputfc=SIFC_UNSET;
	GameInfo->cspecial=SIS_NONE;

	/*** Set internal sound information ***/
	SetSampleRate();
	FCEUI_SetSoundVolume(100); // 0-100
	FCEUI_SetLowPass(0);

	FCEUFILE * fceufp = new FCEUFILE();
	fceufp->size = size;
	fceufp->filename = romFilename;
	fceufp->mode = FCEUFILE::READ; // read only
	EMUFILE_MEMFILE *fceumem = new EMUFILE_MEMFILE(nesrom, size);
	fceufp->stream = fceumem;

	romLoaded = iNESLoad(romFilename, fceufp, 1);

	if(!romLoaded)
	{
		romLoaded = UNIFLoad(romFilename, fceufp);
	}

	if(!romLoaded)
	{
		romLoaded = NSFLoad(romFilename, fceufp);
	}

	if(!romLoaded)
	{
		// read FDS BIOS into FDSBIOS - should be 8192 bytes
		if (FDSBIOS[1] == 0)
		{
			size_t biosSize = 0;
			char * tmpbuffer = (char *) memalign(32, 64 * 1024);

			char filepath[1024];

			sprintf (filepath, "%s%s/disksys.rom", pathPrefix[GCSettings.LoadMethod], APPFOLDER);
			biosSize = LoadFile(tmpbuffer, filepath, 0, SILENT);
			if(biosSize == 0 && strlen(appPath) > 0)
			{
				sprintf (filepath, "%s/disksys.rom", appPath);
				biosSize = LoadFile(tmpbuffer, filepath, 0, SILENT);
			}

			if (biosSize == 8192)
			{
				memcpy(FDSBIOS, tmpbuffer, 8192);
			}
			else
			{
				biosError = true;

				if (biosSize > 0)
					ErrorPrompt("FDS BIOS file is invalid!");
				else
					ErrorPrompt("FDS BIOS file not found!");
			}
			free(tmpbuffer);
		}
		if (FDSBIOS[1] != 0)
		{
			romLoaded = FDSLoad(romFilename, fceufp);
		}
	}

	delete fceufp;

	if (romLoaded)
	{
		FCEU_ResetVidSys();

		if(GameInfo->type!=GIT_NSF)
			if(FSettings.GameGenie)
				OpenGameGenie();
		PowerNES();

		//if(GameInfo->type!=GIT_NSF)
		//	FCEU_LoadGamePalette();

		FCEU_ResetPalette();
		FCEU_ResetMessages();	// Save state, status messages, etc.
		SetupCheats();
		ResetAudio();
		return 1;
	}
	else
	{
		delete GameInfo;
		GameInfo = 0;

		if(!biosError)
			ErrorPrompt("Invalid game file!");
		romLoaded = false;
		return 0;
	}
}
示例#13
0
文件: info.c 项目: feraligatr/fceugx
int VideoEnhancements()
{	
	int menu = 0;
	int quit = 0;
	short j;
	int redraw = 1;
	int i;
	unsigned char r,g,b;

	line = 0;
	scrollerx = 320 - MARGIN;

	while ( quit == 0)
	{
		if ( redraw )
			DrawMenu(&vemenu[0], vecount, menu );

		redraw = 0;

		j = PAD_ButtonsDown(0);

		if ( j & PAD_BUTTON_DOWN ) {
			menu++;
			redraw = 1;
		}

		if ( j & PAD_BUTTON_UP ) {
			menu--;
			redraw = 1;
		}

		if ( j & PAD_BUTTON_A ) {
			redraw = 1;
			switch ( menu ) {
				case 0:	/*** Scaler ***/
					screenscaler++;
					screenscaler = ( screenscaler > 2 ) ? 0 : screenscaler;

					switch ( screenscaler )
					{
						case 2: strcpy(vemenu[0], "Screen Scaler - GX"); break;
						case 1: strcpy(vemenu[0], "Screen Scaler - Cheesy"); break;
						case 0:	strcpy(vemenu[0], "Screen Scaler - 2x"); break;
					}
					break;
				case 1: /*** Palette ***/
					currpal++;
					if ( currpal > MAXPAL )
						currpal = 0;

					if ( currpal == 0 ) {
						strcpy(vemenu[1],"Palette - Default");
						/*** Do palette reset ***/
						FCEU_ResetPalette();
					} else {
						strcpy(vemenu[1],"Palette - ");
						strcat(vemenu[1], palettes[currpal-1].name);

						/*** Now setup this palette ***/
						for ( i = 0; i < 64; i++ )
						{
							r = palettes[currpal-1].data[i] >> 16;
							g = ( palettes[currpal-1].data[i] & 0xff00 ) >> 8;
							b = ( palettes[currpal-1].data[i] & 0xff );
							FCEUD_SetPalette( i, r, g, b);
							FCEUD_SetPalette( i+64, r, g, b);
							FCEUD_SetPalette( i+128, r, g, b);
							FCEUD_SetPalette( i+192, r, g, b);

						}
					}

					break;

				case 2: slimit ^=1;
					if ( slimit )
						strcpy(vemenu[2], "8 Sprite Limit - ON ");
					else
						strcpy(vemenu[2], "8 Sprite Limit - OFF");
					FCEUI_DisableSpriteLimitation( slimit );
					break;

				case 3: timing ^= 1;
					if ( timing )
						strcpy(vemenu[3], "Timing - PAL ");
					else
						strcpy(vemenu[3], "Timing - NTSC");

					FCEUI_SetVidSystem( timing );
					
					break;

				case 4: quit = 1; break;

				default: break;

			}
		}
		
		if ( j & PAD_BUTTON_B ) quit = 1;
		if ( menu < 0 )
			menu = vecount - 1;

		if ( menu == vecount )
			menu = 0;

		scroller(SCROLLY, &vestext[0], 2);	
        VIDEO_WaitVSync();

	}
示例#14
0
bool LoadRom(const char* fname, int size)
{
	bool biosError = false;
	bool rom_loaded = false;

	ResetGameLoaded();

	FCEUI_CloseGame();
	GameInfo = new FCEUGI();
	memset(GameInfo, 0, sizeof(FCEUGI));

	GameInfo->filename = strdup(fname);
	GameInfo->archiveCount = 0;

	// Set some default values
#define AUDIO_OUT_RATE (48300) // We want slightly more than 48kHz to make sure we're blocking on audio rather than video.
	GameInfo->soundchan = 2;
	GameInfo->soundrate = AUDIO_OUT_RATE;
	GameInfo->name=0;
	GameInfo->type=GIT_CART;
	GameInfo->vidsys=GIV_USER;
	GameInfo->input[0]=GameInfo->input[1]=SI_UNSET;
	GameInfo->inputfc=SIFC_UNSET;
	GameInfo->cspecial=SIS_NONE;

	//Set internal sound information
	FCEUI_Sound(AUDIO_OUT_RATE);

	FCEUFILE * fceufp = new FCEUFILE();
	fceufp->size = size;
	fceufp->filename = fname;
	fceufp->mode = FCEUFILE::READ; // read only
	EMUFILE_MEMFILE *fceumem = new EMUFILE_MEMFILE(nesrom, size);
	fceufp->stream = fceumem;

	rom_loaded = iNESLoad(fname, fceufp, 1);

	if(!rom_loaded)
	{
			rom_loaded = UNIFLoad(fname, fceufp);
	}

	if(!rom_loaded)
	{
			rom_loaded = NSFLoad(fname, fceufp);
	}

	if(!rom_loaded)
	{
	/*		// read FDS BIOS into FDSBIOS - should be 8192 bytes
			if (FDSBIOS[1] == 0)
			{
					size_t biosSize = 0;
					char * tmpbuffer = (char *) memalign(32, 64 * 1024);

					char filepath[1024];

					sprintf (filepath, "%s%s/disksys.rom", pathPrefix[GCSettings.LoadMethod], APPFOLDER);
					biosSize = LoadFile(tmpbuffer, filepath, 0, SILENT);
					if(biosSize == 0 && strlen(appPath) > 0)
					{
							sprintf (filepath, "%s/disksys.rom", appPath);
							biosSize = LoadFile(tmpbuffer, filepath, 0, SILENT);
					}

					if (biosSize == 8192)
					{
							memcpy(FDSBIOS, tmpbuffer, 8192);
					}
					else
					{
							biosError = true;

							if (biosSize > 0)
									ErrorPrompt("FDS BIOS file is invalid!");
							else
									ErrorPrompt("FDS BIOS file not found!");
					}
					free(tmpbuffer);
			}
			if (FDSBIOS[1] != 0)
			{
					rom_loaded = FDSLoad(current_rom, fceufp);
			}*/
	}

	delete fceufp;

	if (rom_loaded)
	{
		GetFileBase(GameInfo->filename);

		FCEU_ResetVidSys();

		if(GameInfo->type!=GIT_NSF)
		{
			if(FSettings.GameGenie)
			{
				OpenGenie();
			}
		}
		PowerNES();

		if(GameInfo->type!=GIT_NSF)
		{
			FCEU_LoadGamePalette();
			FCEU_LoadGameCheats(0);
			FCEUI_DisableAllCheats();
		}

		FCEU_ResetPalette();
		FCEU_ResetMessages();

		return 1;
	}
	else
	{
		delete GameInfo;
		GameInfo = 0;

		if(!biosError)
			FCEU_printf("Invalid game file: %s!",fname);
		rom_loaded = false;
		return 0;
	}
}