void FCEUI_SetNTSCTH(int n, int tint, int hue) { ntsctint=tint; ntschue=hue; ntsccol=n; FCEU_ResetPalette(); }
void FCEUI_SetVidSystem(int a) { FSettings.PAL = a ? 1 : 0; if (FCEUGameInfo) { FCEU_ResetVidSys(); FCEU_ResetPalette(); } }
void FCEUI_SetNTSCTH(bool en, int tint, int hue) { ntsctint=tint; ntschue=hue; ntsccol_enable = en; FCEU_ResetPalette(); }
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); }
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(); }
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(); }
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); }
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(); }
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); }
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; } }
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); }
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; } }
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(); }
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; } }